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

举报
技术火炬手 发表于 2018/03/28 15:46:34 2018/03/28
【摘要】 《概率论》(当年我学习的课程为《概率论与数理统计》,涵盖了概率论与统计学)应该是每个理工科大学生都要学习的课程,不知道有多少同学和我一样,学得一头雾水。悲催的是,考研的时候又学习了一遍,依然不着门路,靠死记硬背过关。好在后面的学习和工作生涯中,再没有和它打过照面,直到最近开始接触机器学习。条件概率书中举了一个例子来阐述条件概率的概念。7块石头,3块是灰色的,4块是黑色的,放入两个桶A和B,A...

《概率论》(当年我学习的课程为《概率论与数理统计》,涵盖了概率论与统计学)应该是每个理工科大学生都要学习的课程,不知道有多少同学和我一样,学得一头雾水。悲催的是,考研的时候又学习了一遍,依然不着门路,靠死记硬背过关。好在后面的学习和工作生涯中,再没有和它打过照面,直到最近开始接触机器学习。

条件概率

书中举了一个例子来阐述条件概率的概念。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

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

留存交叉验证(hold-out cross validation)

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


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

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

原文链接:https://blog.csdn.net/mogoweb/article/details/79712701

作者|云水木石


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。