《Spark机器学习进阶实战》——3.2.2 朴素贝叶斯模型

举报
华章计算机 发表于 2019/05/31 01:52:07 2019/05/31
【摘要】 本书摘自《Spark机器学习进阶实战》——书中的第3章,第3.2.2节,作者是马海平、于俊、吕昕、向海。


3.2.2 朴素贝叶斯模型

朴素贝叶斯模型(Naive Bayes)是基于贝叶斯定理的分类方法,它有严格而完备的数学推导,容易实现,且训练和预测的过程均很高效。朴素贝叶斯基于特征条件独立性假设(条件独立假设是指每个特征对分类结果独立产生影响,该假设可以简化条件概率分布的计算),基于这个假设,属于某个类别的概率表示为若干个概率乘积的函数,其中这些概率包括某个特征在给定某个类别的条件下出现的概率(条件概率),以及该类别的概率(先验概率),这样使得模型训练非常直接且易于处理。类别的先验概率和特征的条件概率可以通过数据的频率估计得到。分类过程就是在给定特征和类别概率的情况下,选择最可能的类别。

另外,还有一个关于特征分布的假设,即参数的估计来自数据,MLlib实现了多项朴素贝叶斯,其中假设特征分布是多项分布,用以表示特征的非负频率统计。

在朴素贝叶斯算法中,学习过程即为通过训练数据集估计先验概率P(Y=ck)和条件概率P(Xj= xj |Y=ck)。一般使用极大似然估计法去估计这些概率分布。

针对先验概率,其估计方法为:

image.png

式中,I(yi=ck)为指示函数,其值取决于yi和ck是否相等,如果两者相等,则I(yi=ck)为1,否则为0。N为训练集中的样本总数。显然,类别ck的先验概率是类别为ck的样本占训练数据集的比例。

设第j个特征xj所有取值构成的集合是{aj1, aj2,…, ajSj)},其中aj1代表第j个特征对应的第l个取值,Sj为第j个特征所有取值的个数。针对条件概率,其估计方法为:

image.png

式中,xji指第i个样本的第j个特征。

预测过程中,对于测试集中的样本,根据已学习到的模型求出后验概率P(Y= ci |X=x)即可,如下式所示:

image.png

根据条件独立假设,上式可以转化为:

image.png

然后选择后验概率最大对应的类别作为样本的类标签。根据后验概率最大的原则,可以得到:

image.png

对于不同的ck,上式中的分母是相同的,所以上式可以简写为:

image.png

MLlib支持多项贝叶斯和伯努利贝叶斯,这些模型的一个典型应用就是文档分类。在文档分类中,每个样本就是一篇文档,每个特征就是一个单词。多项贝叶斯中特征的值是单词的频数,而伯努利贝叶斯中特征的值是单词是否出现(0/1)。特征取值必须是非负值。模型类型由参数modelType确定,取值为multinomial或者bernoulli,缺省是multinomial。

在计算过程中如果特征的取值和某个类别没有同时出现过,则在计算条件概率时会出现概率为0的情况,此时其他特征的信息将会在连乘中消除。解决这个问题的方法就是使用加法平滑。具体来说,条件概率的平滑方法是:

image.png

式中,λ≥0。上式等价于在随机变量各个取值的频数上加上一个整数λ。同样对先验概率的平滑方法是:

image.png

在MLlib中可以通过参数λ来设置加法平滑,该参数默认为1。


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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