有一段时间没有推演算法了,用分类算法里据说挺简单的朴素贝叶斯来练习一下。
朴素贝叶斯公式如下:
P(C/W) = P(C) * P(W/C) / P(W)
C:类别
W:文章
公式左侧:
P(C/W) : 某文本属于某类别的概率
公式右侧:
P(C):先验概率,某个类别的文本数 / 总文本数。
我理解这个值是用来总体调节概率的。比如说某个类别在训练材料中出现的频率特别低,考虑训练材料取材的真实性,我们认为这个类别在实际的环境中存在的概率也会很低。因此乘以先验概率是用来调节总体概率的。
P(W/C): P(W/C) = P(w1, w2, w3, ... wn / C) = ∏ P(wi / C)
P(w1, w2, w3, ... wn / C) 是指一篇文章中的每一个词对于某个类别的概率。即这个类别的所有文章中,含有这个词的文章数/总文章数得出的概率。从P(w1, w2, w3, ... wn / C) 到 ∏ P(wi / C) 之间这步推演,是这个算法之所以称为”朴素贝叶斯“的原因。”朴素“指的是忽略组成一篇文章的各个词之间的影响因素,我们认为出现任何一个词的概率都是独立的,不互相影响的。因此P(w1, w2, w3, ... wn / C)等于每个词对于这个类别的概率之积,即所有词对于类别的概率组成了文章对于类别的概率。
P(W):∑(P(W/Ci) * P(Ci))
这篇文章出现在各个类别的概率之和。
根据这个公式我猜想,在训练的时候我们应当得到这些值:
1. 文章总数
2. 各类别的文章数目
3. 对于每个词,保存包含这个词的文章在每个类别的篇数。并对此类记录建立索引
这样在输入一个新的文章时,可以快速套用贝叶斯公式得到概率。