Je suis un débutant en apprentissage automatique et un débutant en Python, donc je pense que c'est essentiellement comme lire les pages auxquelles j'ai fait référence.
C'est un peu une question de mathématiques. Avez-vous déjà entendu le mot «probabilité conditionnelle»? J'en ai entendu un peu parler en classe avant, mais je pouvais à peine m'en souvenir.
P(B|A) = \frac{P(A \cap B)}{P(A)} = \frac{P(B)P(A|B)}{P(A)}
«P (B | A)» fait référence à la probabilité que l'événement B se produise si l'événement A se produit.
Un problème célèbre est l'histoire des enfants.
Un couple a deux enfants. Il s'avère qu'au moins l'un des deux est un garçon. À ce moment, trouvez la probabilité qu'ils soient tous les deux des garçons. Cependant, la probabilité d'avoir un garçon et la probabilité d'avoir une fille sont toutes deux divisées par deux.
L'idée de ceci est
Les deux sont des garçons
Si vous y réfléchissez, vous pouvez y penser comme suit.
«Au moins un est un garçon», donc si vous énumérez tous les modèles lorsque deux enfants sont nés, il y en a 4 parmi «homme et homme», «homme et femme», «femme et femme», «femme et homme». C'est un modèle. (Y compris les différences entre frères) Parmi ceux-ci, «3/4», qui omet «femme et femme», qui sont toutes deux «femme», est la probabilité de l'événement A.
Il va sans dire que c'est "1/4".
Autrement dit, la probabilité de P (B | A) est
P(B|A) = \frac{\frac{1}{4}}{\frac{3}{4}} = \frac{1}{3}
Ce sera.
Référence: Belle histoire de mathématiques au lycée
Eh bien, c'est le sujet principal. Naive Bayes est également appelé Simple Bayes. Il semble qu'il soit utilisé dans le but de catégoriser des phrases en modifiant légèrement le théorème de Bayes.
P(cat|doc) = \frac{P(cat)P(doc|cat)}{P(doc)}\propto P(cat)P(doc|cat)
Ceci est la forme de base.
Je voudrais expliquer chaque élément.
P (cat | doc)
est la probabilité d'être une catégorie (cat) étant donné une phrase (doc).
Pour le dire un peu plus, cela semble signifier la probabilité d'être dans une catégorie telle que «IT» lorsque le texte contient des mots tels que «Apple», «iPhone» et «MacBook Pro».
\frac{P(cat)P(doc|cat)}{P(doc)}
Puisque P (doc)
sont tous communs, nous les ignorerons pour le calcul.
P(cat)P(doc|cat)
«P (chat)» est facile.
Si le nombre total de phrases est de 100 et le nombre de phrases de la catégorie informatique est de 50
P(IT) = \frac{50}{100} = \frac{1}{2}
Cela peut être calculé comme ça.
P (doc | cat)
peut ne pas avoir de sens. Probabilité d'être une phrase (doc) étant donné une catégorie (chat) ...? Et c'est le cœur de Naive Bayes.
Naive Bayes ne donne pas le «P (doc | cat)» exact, mais suppose l'indépendance entre les occurrences de mots.
L'indépendance entre l'apparence des mots peut signifier, par exemple, que «machine» et «apprentissage» sont des mots qui apparaissent souvent dans le domaine de l'apprentissage automatique, mais les mots «machine» et «apprentissage» sont indépendants. Il est calculé en le simplifiant en supposant qu'il apparaîtra.
P(doc|cat) = P(word_1 \wedge .... \wedge word_k|cat) = \prod_{i=0}^k P(word_k|cat)
Calculer.
\prod
Est la version (x) de Σ
. Ensuite, calculons P (mot | chat)
. C'est sémantiquement la probabilité qu'un mot apparaisse lorsqu'une catégorie (cat) est donnée, donc calculez comme suit. (La formule est sur la page de référence, veuillez donc vous y référer.)
P(word_k|cat) = \frac{Catégorie(cat)Mots dans(word)Nombre d'apparitions}{Catégorie(cat)Nombre total de mots qui apparaissent dans}
Il ne vous reste plus qu'à calculer à l'aide de ces derniers! !!
Deux mots-clés apparaîtront.
Je fais juste "+ 1". Il semble y avoir un "problème de fréquence zéro". Je pense que P (doc | cat) a été exprimé par la puissance totale de la probabilité d'apparition des mots, mais le produit est 0 s'il y a un "0", donc c'est 0 dans son ensemble. Ce sera 0.
Par exemple, disons que vous apprenez dans la catégorie "IT" et que vous rencontrez un nouveau mot "Python" qui n'était pas des données d'entraînement. Alors ..
P(word_k|cat) = \frac{Catégorie(cat)Mots dans(word)Nombre d'apparitions}{Catégorie(cat)Nombre total de mots qui apparaissent dans}
La molécule de
P(Python|IT) = 0
Ce sera. Alors, ajoutez +1 au nombre d'apparitions à l'avance pour éviter que la probabilité ne devienne 0! !! Cela semble être une technique appelée lissage de Laplace. Naturellement, le dénominateur change également. Si vous écrivez à nouveau la formule ...
P(word_k|cat) = \frac{Catégorie(cat)Mots dans(word)Nombre d'apparitions+ 1}{Catégorie(cat)Nombre total de mots qui apparaissent dans+Nombre total de mots}
Ce sera.
Dans les exemples de données, ce n'est pas un gros problème, mais lorsqu'il est appliqué au calcul réel, le dénominateur de «P (mot | chat)» peut devenir très grand.
La raison en est que le nombre de mots peut être très important. Un sous-débordement peut se produire dans un tel cas.
Le contraire du dépassement inférieur ou du dépassement est que la zone après la virgule décimale devient trop grande pour être manipulée.
C'est là qu'intervient la logarithmique. Si vous prenez le logarithme, vous pouvez le remplacer par le même ajout de base, donc même si vous prenez le logarithme et l'ajoutez, le résultat sera le même.
Alors, changez ce qui suit en une forme logarithmique.
\prod_{i=0}^k P(word_k|cat)
\prod_{i=0}^k \log P(word_k|cat)
En réunissant ces éléments, la formule finale est:
P(cat|doc) = \log P(cat) + \sum_{i=0}^k \log P(word_k|cat)
Référence: Calcul du journal et formule! C'est parfait! !!
Les débutants de l'apprentissage automatique tentent de contacter Naive Bayes (2) - Mise en œuvre
Donc, je voudrais l'implémenter en utilisant Python. (Reportez-vous au site)
J'ai beaucoup parlé des sites suivants. Merci beaucoup.
Recommended Posts