ajout naive bayes

This commit is contained in:
François Pelletier 2019-10-19 01:10:12 -04:00
parent dd8c887983
commit 09f2fcc661

View file

@ -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