Wiki: http://en.wikipedia.org/wiki/Naive_bayes
TRAINBERNOULLINB(C,D)
1 V ← EXTRACTVOCABULARY(D)
2 N ← COUNTDOCS(D)
3 for each c ∈ C
4 do Nc ← COUNTDOCSINCLASS(D, c)
5 prior[c] ← Nc/N
6 for each t ∈ V
7 do Nct ← COUNTDOCSINCLASSCONTAININGTERM(D, c, t)
8 condprob[t][c] ← (Nct +1)/(Nc + 2)
9 return V, prior, condprob
APPLYBERNOULLINB(C,V, prior, condprob, d)
1 Vd ← EXTRACTTERMSFROMDOC(V, d)
2 for each c ∈ C
3 do score[c] ← log prior[c]
4 for each t ∈ V
5 do if t ∈ Vd
6 then score[c] += log condprob[t][c]
7 else score[c] += log(1− condprob[t][c])
8 return argmaxc∈C score[c]
Algorithm From Tom Mitchell's Machine Learning
Learn_naive_Bayes_text(Examples, V) Examples为一组文本文档以及它们的目标值。V为所有可能目标值的集合。此函数作用是学习概率项P(wk|vj),它描述了从类别vj中的一个文档中随机抽取的一个单词为英文单词wk的概率。该函数也学习类别的先验概率P(vj)。 1.收集Examples中所有的单词、标点符号以及其他记号 n Vocabulary←在Examples中任意文本文档中出现的所有单词及记号的集合 2.计算所需要的概率项P(vj)和 P(wk|vj) n 对V中每个目标值vj n docsj←Examples中目标值为vj的文档子集 n P(vj) ← n Textj←将docsj中所有成员连接起来建立的单个文档 n n←在Textj中不同单词位置的总数 n 对Vocabulary中每个单词wk n nk←单词wk出现在Textj中的次数 n P(wk|vj) ←
Classify_naive_Bayes_text(Doc) 对文档Doc返回其估计的目标值。ai代表在Doc中的第i个位置上出现的单词。 n positions←在Doc中包含的能在Vocabulary中找到的记号的所有单词位置 n 返回 |