2012-03-25 8 views
0

Je parlais avec quelqu'un du classificateur Naive Bayes d'un point de vue mathématique. Nous parlions de la façon dont si vous multipliez beaucoup de probabilités ensemble, des types primitifs comme un flotteur ou un double ne seraient pas capables de stocker la valeur résultante et cela se transformerait simplement en un zéro.Naive Bayes Classificateur Mathématiques - Manque de précision en informatique

P (x1) * P (x2) * ... = un nombre trop petit pour un ordinateur = 0

La personne que j'ai parlé avec dit qu'une « solution » serait de prendre le journal de la probabilités et juste les ajouter ensemble comme ça.

log (P (x1)) + log (P (x2)) + ...

Je comprends l'avantage de prendre le journal de la probabilité, il augmente l'ampleur du nombre de sorte qu'il doesn 't "tomber", mais comment est-ce que vous pouvez simplement les ajouter après cela? Est-ce ainsi que lorsque vous exécutez Naive Bayes aussi longtemps que vous le faites régulièrement pour tous les «seaux» de classification, vous pouvez toujours trouver le plus grand à la fin de la journée?

Toutes les explications sont appréciées. Merci,

mj

+1

En règle générale, chaque fois que vous finissez par multiplier les nombres de manière séquentielle, vous pouvez mieux faire la somme de leur journal. Si les nombres lisent 1 + x avec x proche de zéro (cela ne semble pas être votre cas, sauf si vous avez des distributions de probabilités très proches de l'uniforme), alors vous pouvez avoir besoin d'une routine 'log (1 + x)' spécialisée avec ce cas. –

Répondre

5

Parce que log(a*b) = log(a) + log(b). C'est une propriété des logarithmes.

+1

Oh mon dieu. C'est ce que je reçois pour ne pas me souvenir des règles du logarithme. Merci duffymo. –

+0

C'est un plaisir. – duffymo

Questions connexes