贝叶斯分类器是一种概率分类器。
首先我们判断一个文档d是否属于一个类c,如下:
tk是文档d中出现的term,P(tk |c)表示tk在类c中出现的概率。P©则是一个先验概率,即不看这个文档d的内容,属于类c的概率是多少。
在分类过程中,如果我们不能确定一个文档一定在某一个类,那么它属于哪一个类的可能性最大,我们就认为它属于哪一个类。
在计算过程中容易出现的问题:
1、太多很小的概率相乘导致结果出现浮点数向下溢出,变为0。通过log(xy)=log(x)+log(y)我们可以想到,用把概率的对数相加来替代概率的相乘,最后也可以进行大小的比较。因此我们通常使用下面的式子进行计算:
2、P( c)与P(tk|c)的最大似然估计值我们可以用下式进行计算:
N为测试集所有文档的个数,分子为文档中属于c的个数。
分子为t的个数,分母为c中所有term的个数。
在计算中,我们把每一个term在c中出现当做一个独立事件。
3、当一个term本来是某一个类中的值,但是很遗憾在测试文档中它一次都没有出现过。那么按照上面的算法该term的P(t|c)为0。那么将会发生一个问题,任何出现该单词的文档,在乘上了该词的P之后最后算出的概率都为0。0概率的问题应当被我们考虑到,所以为了防止这个问题的出现,我们计算时可以考虑如下计算方法来避免0概率的问题,其中B为整个测试集中不同的term的种类数: