《Spark机器学习进阶实战》——3.2.2 朴素贝叶斯模型
3.2.2 朴素贝叶斯模型
朴素贝叶斯模型(Naive Bayes)是基于贝叶斯定理的分类方法,它有严格而完备的数学推导,容易实现,且训练和预测的过程均很高效。朴素贝叶斯基于特征条件独立性假设(条件独立假设是指每个特征对分类结果独立产生影响,该假设可以简化条件概率分布的计算),基于这个假设,属于某个类别的概率表示为若干个概率乘积的函数,其中这些概率包括某个特征在给定某个类别的条件下出现的概率(条件概率),以及该类别的概率(先验概率),这样使得模型训练非常直接且易于处理。类别的先验概率和特征的条件概率可以通过数据的频率估计得到。分类过程就是在给定特征和类别概率的情况下,选择最可能的类别。
另外,还有一个关于特征分布的假设,即参数的估计来自数据,MLlib实现了多项朴素贝叶斯,其中假设特征分布是多项分布,用以表示特征的非负频率统计。
在朴素贝叶斯算法中,学习过程即为通过训练数据集估计先验概率P(Y=ck)和条件概率P(Xj= xj |Y=ck)。一般使用极大似然估计法去估计这些概率分布。
针对先验概率,其估计方法为:
式中,I(yi=ck)为指示函数,其值取决于yi和ck是否相等,如果两者相等,则I(yi=ck)为1,否则为0。N为训练集中的样本总数。显然,类别ck的先验概率是类别为ck的样本占训练数据集的比例。
设第j个特征xj所有取值构成的集合是{aj1, aj2,…, ajSj)},其中aj1代表第j个特征对应的第l个取值,Sj为第j个特征所有取值的个数。针对条件概率,其估计方法为:
式中,xji指第i个样本的第j个特征。
预测过程中,对于测试集中的样本,根据已学习到的模型求出后验概率P(Y= ci |X=x)即可,如下式所示:
根据条件独立假设,上式可以转化为:
然后选择后验概率最大对应的类别作为样本的类标签。根据后验概率最大的原则,可以得到:
对于不同的ck,上式中的分母是相同的,所以上式可以简写为:
MLlib支持多项贝叶斯和伯努利贝叶斯,这些模型的一个典型应用就是文档分类。在文档分类中,每个样本就是一篇文档,每个特征就是一个单词。多项贝叶斯中特征的值是单词的频数,而伯努利贝叶斯中特征的值是单词是否出现(0/1)。特征取值必须是非负值。模型类型由参数modelType确定,取值为multinomial或者bernoulli,缺省是multinomial。
在计算过程中如果特征的取值和某个类别没有同时出现过,则在计算条件概率时会出现概率为0的情况,此时其他特征的信息将会在连乘中消除。解决这个问题的方法就是使用加法平滑。具体来说,条件概率的平滑方法是:
式中,λ≥0。上式等价于在随机变量各个取值的频数上加上一个整数λ。同样对先验概率的平滑方法是:
在MLlib中可以通过参数λ来设置加法平滑,该参数默认为1。
- 点赞
- 收藏
- 关注作者
评论(0)