ajout naive bayes
This commit is contained in:
parent
dd8c887983
commit
09f2fcc661
1 changed files with 219 additions and 20 deletions
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue