From 09f2fcc6619851ba3cae1ae319d943cd646b9763 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Pelletier?= Date: Sat, 19 Oct 2019 01:10:12 -0400 Subject: [PATCH] ajout naive bayes --- examen_partiel.md | 239 ++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 219 insertions(+), 20 deletions(-) diff --git a/examen_partiel.md b/examen_partiel.md index 12d35e9..5e3500c 100644 --- a/examen_partiel.md +++ b/examen_partiel.md @@ -349,8 +349,8 @@ Exemple: $$ \begin{aligned} -&P(\texttt{nous} | \texttt{les minions sont de retour et}) \\ -&=\frac{P(\texttt{les minions sont de retour et nous})}{P(\texttt{les minions sont de retour et})} +&P(\text{nous} | \text{les minions sont de retour et}) \\ +&=\frac{P(\text{les minions sont de retour et nous})}{P(\text{les minions sont de retour et})} \end{aligned} $$ @@ -373,12 +373,12 @@ $$ $$ \begin{aligned} -P(\texttt{les minions sont de retour}) &= \\ -P(\texttt{les}) \times \\ -P(\texttt{minions}|\texttt{les}) \times \\ -P(\texttt{sont}|\texttt{les minions}) \times \\ -P(\texttt{de}|\texttt{les minions sont}) \times \\ -P(\texttt{retour}|\texttt{les minions sont de}) \times \\ +P(\text{les minions sont de retour}) &= \\ +P(\text{les}) \times \\ +P(\text{minions}|\text{les}) \times \\ +P(\text{sont}|\text{les minions}) \times \\ +P(\text{de}|\text{les minions sont}) \times \\ +P(\text{retour}|\text{les minions sont de}) \times \\ \end{aligned} $$ @@ -386,9 +386,9 @@ Encore une fois, il y a trop de phrases possibles pour pouvoir calculer les stat $$ \begin{aligned} -P(\texttt{retour}|\texttt{les minions sont de}) -&\sim P(\texttt{retour}|\texttt{de}) -&\sim P(\texttt{retour}|\texttt{sont de}) +P(\text{retour}|\text{les minions sont de}) +&\sim P(\text{retour}|\text{de}) +&\sim P(\text{retour}|\text{sont de}) \end{aligned} $$ @@ -404,7 +404,7 @@ Estimateur du maximum de vraisemblance pour les N-grammes, déterminé à partir $$ \begin{aligned} -P(w_i|w_{i-1}) &= \frac{\texttt{count}(w_{i-1},w_i)}{\texttt{count}(w_{i-1})} \\ +P(w_i|w_{i-1}) &= \frac{\text{count}(w_{i-1},w_i)}{\text{count}(w_{i-1})} \\ &= \frac{C(w_{i-1},w_i)}{C(w_{i-1})} \\ &= \frac{C(w_{n-1}w_n)}{\sum_{w \in V}C(w_{n-1}w)} \end{aligned} @@ -416,8 +416,8 @@ Ex: $$ \begin{aligned} -P(\texttt{want}|\texttt{I}) \\ -&= \frac{P(\texttt{I want})}{P(\texttt{I})} \\ +P(\text{want}|\text{I}) \\ +&= \frac{P(\text{I want})}{P(\text{I})} \\ &= \frac{827}{2533} = 0.3265 \end{aligned} $$ @@ -474,7 +474,7 @@ $$ La probabilité de rencontrer le mot $w_i$ devient: $$ -P_{\texttt{Laplace}}(w_i) = \frac{c_i+1}{N+V} +P_{\text{Laplace}}(w_i) = \frac{c_i+1}{N+V} $$ Les comptes reconstruits sont: @@ -487,7 +487,7 @@ Appliqué aux bigrammes, ces équations deviennent: $$ \begin{aligned} -P_{\texttt{Laplace}}(w_n|w_{n-1}) &= \frac{C(w_{n-1}w_n)+1}{C(w_{n-1})+V} \\ +P_{\text{Laplace}}(w_n|w_{n-1}) &= \frac{C(w_{n-1}w_n)+1}{C(w_{n-1})+V} \\ c^{\star}(w_{n-1}w_n) &= (C(w_{n-1}w_n)+1)\frac{C(w_{n-1})}{C(w_{n-1})+V} \end{aligned} $$ @@ -529,8 +529,8 @@ $$ \begin{aligned} S(w_i|w_{i-k+1}^{i-1}) &= \begin{cases} - \frac{C(w_{i-k+1}^i)}{C(w_{i-k+1}^{i-1})}&,\texttt{si } C(w_{i-k+1}^i) >0\\ - 0.4S(w_i|C(w_{i-k+2}^{i-1}))&,\texttt{sinon} + \frac{C(w_{i-k+1}^i)}{C(w_{i-k+1}^{i-1})}&,\text{si } C(w_{i-k+1}^i) >0\\ + 0.4S(w_i|C(w_{i-k+2}^{i-1}))&,\text{sinon} \end{cases} \\ S(w_i) &= \frac{C(w_i)}{N}\\ \end{aligned} @@ -538,16 +538,215 @@ $$ # Classification de textes +Pourquoi classifier des textes: + +- Filtrage du spam +- Services d'information +- Déterminer le genre de l'auteur +- Analyse de sentiments +- Sujet d'un document +- Détecter les fins de phrase +- Routage de courriel +- Priorisation de documents +- Détection de la langue +- Analyse des médias sociaux +- Étiquetage des pages web + +Étant donné un document $\text{doc}$ et un ensemble prédéterminé de classes $C=\lbrace c_1, c_2, \ldots, c_J \rbrace$: + +- Prédire la classe du document $\text{doc}$ où la fonction de classification $f(doc) \in C$ + +## Approches de classification + +- Règles construites à la main + - Combinaison de mots + - Performances potentiellement élevées, mais difficile à construire et à maintenir +- Apprentissage supervisé + - Construire automatiquement un classificateur à partir de données d'entraînement. + - $f: \text{doc} \rightarrow c$ + - Méthodes courantes: + - Naive Bayes + - Régression logistique + - Réseaux de neurones + - K-nearest neighbors + - Arbres de décisions + - Support vector machines + - Limitations: L'étiquetage des données d'entraînement se fait à la main + ## Naive Bayes -## Régression logistique +- Basée sur la règle de Bayes +- Représentation simplifiée des documents: + - **Sac de mots**: ensemble de mots sans ordre particulier +- Avantages: + - Bons résultats en pratique + - Peu de traitement pour construire le modèle, léger en utilisation mémoire + - Bonne base de comparaison avec peu d'exemples ou des textes courts +- Inconvénients + - Si un terme n'est pas dans les exemples d'une classe. On a recours au lissage pour corriger. +- Deux étapes: + - Prétraitement + - Classification -## Évaluation +### Définition + +On pose le problème d'optimisation suivant: +$$ +\begin{aligned} +c^{\star} &= arg\,max_{c} P(c|doc) \\ +&= arg\,max_{c} \frac{P(doc|c)P(c)}{P(doc)} \\ +&\propto arg\,max_{c}P(doc|c)P(c) +\end{aligned} +$$ + +On représente un document selon la présence des termes: +$$ +\text{doc} = \langle t_1,t_2,\ldots,t_n \rangle +$$ + +On obtient donc, en posant ensuite l'hypothèse d'indépendance entre les termes (d'où l'appellation naïve): +$$ +\begin{aligned} +c^{\star} &= arg\,max_{c} P(c) \prod_{i=1}^{n} P(t_i|c) \\ +&= arg\,max_{c} \log {P(c)} \sum_{i=1}^{n} \log {P(t_i|c)} +\end{aligned} +$$ + +### Calcul + +La probabilité d'une classe $P(c)$ est: + +$$ +\begin{aligned} +P(c) &= \frac{\text{Nb. documents de classe c}}{\text{Nb. total de documents}} \\ +&= \frac{N_c}{N_{doc}} +\end{aligned} +$$ + +La probabilité de retrouver $t_k$ dans un document de classe $c$ est: + +$$ +\begin{aligned} +P(t_k|c) &= \frac{\text{Nb. documents de classe c contenant }t_k}{\text{Nb. documents ayant la classe c}} \\ +&= \frac{C(t_k,c)}{\sum_t C(t,c)} +\end{aligned} +$$ + +Pour la calculer, on rassemble tous les documents de la classe $c$ dans un seul document et on calcule la fréquence de $t_k$. C'est un modèle unigramme. + +Enjeux: + +- Si le mot n'apparaît pas + - Lissage de Laplace: + $$ + P(t_k|c) = \frac{C(t_k,c)+1}{\sum_t C(t,c) + |V|} + $$ + - Add-delta +- Si le mot est inconnu: + - On le retire, comme en recherche d'information + +### Attributs + +- Pas nécessairement des mots: + - N-grammes (lettres) + - SpamAssasin: + - Probabilité des mots + - Mentions particulières (blacklist) + - Expressions régulières + - Expéditeur + - Majuscules + - Ratio texte-images + - Émetteur est un proxy + +### Analyse de sentiments + +- On remplace les fréquences des mots par document par leur occurence + - **Occurence**: Nombre de documents contenant le mot au moins une fois +- Négation: inversion de la polarité des mots + - Astuce: convertir en une représentation distincte (NOT_x) + - Il y a d'autres approches plus précises avec une analyse syntaxique +- Lexiques de sentiments: + - Dictionnaire indiquant la polarité d'un mot: + - General Inquirer, LIWC, Opinion Lexicon, SentiWordNet + - Compteur de mots négatifs ou positifs par document + +# Évaluation + +- Échantillon de test ou validation croisée. +- Éviter de mémoriser les exemples d'entraînement (peeking) ## Métriques +![Matrice de contingence](matrice_contingence.png) + +- Précision (ligne): +$$ +\frac{tp}{tp+fp} +$$ +- Rappel (colonne): +$$ +\frac{tp}{tp+fn} +$$ +- Exactitude (diagonale): +$$ +\frac{tp+tn}{tp+fp+tn+fm} +$$ +- Mesure F1: +$$ +2\left(\frac{\text{precision}\times\text{rappel}}{\text{precision}+\text{rappel}}\right) +$$ + ## Validation croisée +Meilleure estimation de la qualité du classificateur. + +- Diviser les données en $k$ sous-ensembles +- Prendre aléatoirement $k-1$ sous-ensembles pour l'entraînement et celui qui reste pour le test de performance. +- Répéter $k$ fois et faire la moyenne des différentes métriques + +Évaluation multi-classes: + +- Tables de contingence 2x2 +- Micro-averaging + - Somme des tableaux pour chaque classe, puis calcul des métriques +- Macro-averaging + - Moyenne des métriques pour chaque classe, calculées indépendamment + +## Sélection des attributs + +- Les collections de documents ont un grand nombre d'attributs. Les approches ne peuvent pas toutes les traiter. +- Réduire le temps d'entraînement et rendre les classificateurs petits et efficaces. +- Généraliser les données. Éliminer le bruit, la redondance +- Éviter le surentraînement + +Approche: + +- Fréquence +- Mots-outils (stop words) +- Inverse document frequency +- BNS +- Information mutuelle + +## Types de modèles + +### Modèle génératif + +Ce type de modèle va générer les mots $x$ associés à une classe $c$. + +- Par exemple: Naive Bayes $P(w|c)$ +- Apprentissage "online" + +### Modèle discriminatif + +Ce type de modèle va discriminer parmi les classes possibles $P(c|doc)$ + +- Par exemple: Régression logistique (entropie maximale) +- Apprentissage "supervisé" + +## Régression logistique + + + # Analyse grammaticale ## Classe de mots