第四章 基于概率论的分类方法:朴素贝叶斯代码
-
基于贝叶斯决策理论算法优缺点
优点:在数据较少的情况下仍然有效。可以处理多类别问题。
缺点:对于输入数据的准备方式较为敏感。
范围:标称型数据。
Tip:贝叶斯决策理论的核心思想是选择高概率对应的类别,即选择具有最高概率的决策
-
贝叶斯法则
后验概率 = 标准似然度 * 先验概率。
-
贝叶斯定理
-
对于变量有二个以上的情况,贝叶斯定理亦成立。例如:
P(A|B,C)=P(B|A)P(A)P(C|A,B)/(P(B)*P(C|B))
这个式子可以由套用多次二个变量的贝叶斯定理及条件机率的定义导出。
-
-
使用Python进行文本分类
-
背景
以在线社区的留言板为例。为了不影响社区的发展,我们要屏蔽侮厚性的言论,所以要构建一个快速过滤器,如果某条留言使用了负面或者侮辱性的语言,那么就将该留言标识为内容不当。过滤这类内容是-一个很常见的需求。对此问题建立两个类别:侮厚类和非侮辱类,使用1和0分别表示。
准备数据:从文本中构建词向量
训练算法:从词向量计算概率
-
测试算法:根据现实情况修改分类器
贝叶斯概率需要计算多个概率的乘积以获得文档属于某个类别的概率,即计算p(w0|1)p(w1|1)p(w2|1)。如果其中一个概率值为0,那么最后的乘积也为0
第二个问题就是下溢出,这是由于太多过小的数相乘造成的。由于大部分因子都非常小,所以程序会下溢出或者得不到正确的答案。解决办法是对乘积取自然对数这样可以避免下溢出或者浮点数舍入导致的错误。
每个单词的出现与否作为一个特征,被称为词集模型;在词袋模型中,每个单词可以出现多次。
准备数据:文档词袋模型
-
-
例子:使用朴素贝叶斯过滤垃圾邮件
准备数据:切分文本
测试算法:使用朴素贝叶进行交叉验证
-
例子:使用朴素贝叶斯从个人广告中获取区域倾向
收集数据:导入RSS源
分析数据:显示低于相关的用词
Tip:这里训练测试的方法是从总的数据集中随机选择数字,将其添加到测试集中,同时将其从训练集中剔除。这种随机选择数据的一部分作为训练集,而剩余部分作为测试集的过程为留存交叉验证(hold-out cross validation)。有时为了更精确地估计分类器的错误率,就应该进行多次迭代后求出平均错误率。
-
小节
贝叶斯可以通过特征之间的独立性假设,降低对数据量的需求。尽管条件独立性的假设并不正确,但是朴素贝叶斯仍然是一种有效的分类器