[PYTHON] Les débutants en apprentissage automatique tentent de contacter Naive Bayes (1) - Théorie

Cette page

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.

Qu'est-ce que la probabilité conditionnelle (théorème de Bayes)? ??

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

Si vous y réfléchissez, vous pouvez y penser comme suit.

Événement A

«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.

Événement B

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

Défiez Naive Bays

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

Technique

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)

référence

J'ai beaucoup parlé des sites suivants. Merci beaucoup.

Modifier l'historique

Recommended Posts

Les débutants en apprentissage automatique tentent de contacter Naive Bayes (1) - Théorie
Les débutants en apprentissage automatique essaient de créer un arbre de décision
Les débutants en apprentissage automatique essaient la régression linéaire
Essayez de prédire la demande de puissance par l'apprentissage automatique
[Pour les débutants] Introduction à la vectorisation dans l'apprentissage automatique
Introduction à l'apprentissage automatique
[Apprentissage automatique] Essayez de détecter des objets à l'aide de la recherche sélective
Tout pour que les débutants puissent faire du machine learning
Une introduction à l'apprentissage automatique
Un débutant en apprentissage automatique a essayé la RBM
Essayez d'évaluer les performances du modèle d'apprentissage automatique / de classification
[Apprentissage automatique] J'ai essayé de résumer la théorie d'Adaboost
Essayez le machine learning à la légère avec Kaggle
Introduction à la rédaction de notes d'apprentissage automatique
[Apprentissage automatique] Étudions l'arbre de décision
SVM essayant l'apprentissage automatique avec scikit-learn
<Pour les débutants> bibliothèque python <Pour l'apprentissage automatique>
Présentation de la bibliothèque d'apprentissage automatique SHOGUN
[Apprentissage automatique] Essayez d'étudier une forêt aléatoire
les débutants en python ont essayé de le découvrir
Comment collecter des données d'apprentissage automatique
[Python] [Apprentissage automatique] Les débutants sans aucune connaissance essaient l'apprentissage automatique pour le moment
Les débutants en Python publient des applications Web à l'aide de l'apprentissage automatique [Partie 2] Introduction à Python explosif !!
Introduction à l'apprentissage automatique: fonctionnement du modèle
scikit-learn Comment utiliser le résumé (apprentissage automatique)
Enregistrez les étapes pour comprendre l'apprentissage automatique
Premiers pas pour les débutants en apprentissage automatique (IA)
J'ai installé Python 3.5.1 pour étudier l'apprentissage automatique
Une introduction à Python pour l'apprentissage automatique
Essayez d'écrire du code à partir de 1 en utilisant le chainer du cadre d'apprentissage automatique (édition mnist)
Essayez de dessiner un "front de type carte météorologique" par apprentissage automatique basé sur des données météorologiques (5)
Un débutant en apprentissage automatique a essayé de créer un modèle de prédiction de courses de chevaux avec python
Essayez de dessiner un "front de type carte météo" par apprentissage automatique basé sur des données météorologiques (1)
Essayez de dessiner un "front de type carte météo" par apprentissage automatique basé sur des données météorologiques (4)
Essayez de dessiner un "front de type carte météo" par apprentissage automatique basé sur des données météorologiques (2)
Comment introduire IPython (Python2) dans Mac OS X-Préparation pour une introduction à la théorie de l'apprentissage automatique-