[机器学习实战札记] 朴素贝叶斯

网友投稿 651 2022-05-30

书中举了一个例子来阐述条件概率的概念。7块石头,3块是灰色的,4块是黑色的,放入两个桶A和B,A桶放4块石头(2块灰色,2块黑色),B桶放3块石头(1块灰色,2块灰色)。计算从B桶中取到灰色石头的概率的方法,就是所谓的条件概率。这里的已知条件是石头取自B桶且B桶有3块石头。用公式表示为:

P(gray | bucketB) = P(gray and bucketB) / P(bucketB)1

这个公式看起来不起眼,但却开启了一门新的理论,即通过先验知识和逻辑推理来处理不确定命题。另一种概率解释称为频数概率,它只从数据本身获取结论,并不考虑逻辑推理及先验知识。

另一种有效计算条件概率的方法称为贝叶斯准则。贝叶斯准则告诉我们如何交换条件概率中的条件和结果,即如果已知P(x | c),要求P(c | x)。其公式为:朴素贝叶斯

朴素贝叶斯有两个简单的假设:

特征之间相互独立。所谓独立指的是统计意义上的独立,即一个特征出现的可能性与其它特征值无关。

每个特征同等重要。

尽管上述假设存在一些小瑕疵,但朴素贝叶斯的实际效果很好。使用公式表示如下:

[机器学习实战札记] 朴素贝叶斯

P(W0, W1, W2, ..., WN | c) = P(W0|c)*P(W1|c)*...*P(WN|c)1

利用贝叶斯分类器对文档进行分类时,要计算多个概率的乘积以获得文档属于某个类别的概率,即计算P(W0|1)P(W1|1)P(W2|1)。如果其中一个概率值为0,那么最后的乘积也为0。为降低这种影响,可以将所有词的出现数初始化为1,并将分母初始化为2。

另外还要处理下溢出问题,这是因为太多很小的数相乘,最后结果可能会四舍五入,得到0。解决的方法是利用代数中的公式:

ln(a*b) = ln(a) + ln(b)1

通过求对数避免下溢出或者浮点数舍入导致的错误。采用自然对数进行处理不会有任何损失。

随机选择数据的一部分作为训练集,而剩余部分作为测试集的过程成为留存交叉验证。如果想更精确的估计分类器的错误率,可以进行多次迭代后求出平均错误率。

4.7章节的示例无法使用,原因在于代码中使用的RSS源已经不存在。我对这个示例做了修改,用来显示垃圾邮件中使用最多的词语。另外在这个示例中会去掉出现次数最高的30个词,如果将这个应用在垃圾邮件过滤,错误率反而会提高,但如果只是去掉10个最常用词,结果一致。

可见,即使采用同样的算法,我们还是可以采用不同的修正方法,进行微调,对最后的错误率有一些影响。

机器学习

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:《Office 2019高效办公三合一从入门到精通 : 视频自学版》 —1.3.2文件的打开与保存
下一篇:《Java多线程编程核心技术(第2版)》 —1.11.2 判断线程是否为停止状态
相关文章