贝叶斯学习,spark mlib 朴素贝叶斯使用

本文介绍了朴素贝叶斯分类算法的基本原理和计算流程,并结合《机器学习实战》中的垃圾邮件分类例子进行了详细解释。还探讨了在Spark MLlib中如何使用朴素贝叶斯进行分类,帮助读者理解并应用该算法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

贝叶斯算法属于监督类机器学习算法,他的原理很简单,但是他的用处很广泛。

先简单介绍一下算法原理:

如果预测两个球员比赛,谁胜谁负,再没有其他信息的情况下,我们可能会说 五五开吧。

但是,如果我们知道两个球员之前的比赛信息,就像解说员刚开始解说比赛的时候往往会说以往的对阵战绩是几胜几平几负。那么,我们会根据这个信息估计,球员A获胜的概率80%,比较看好他。

那么,我们估计这个结果的时候,恰巧与贝叶斯的算法原理吻合。

贝叶斯公式表示(摘自《概率论与数理统计》浙大版):


ok,具体的推理证明就不讲了,估计我也讲不太明白:)

这里说样本空间有 n 个划分,那么这里的划分其实就是样本空间的分类,那么这个公式的意思就是说 事件 A 属于分类 Bi 的概率是怎么计算的。

分类就是计算属于哪个类别的概率最大。

公式原理是这样的,但是在分类的时候,对于每一个分类来讲,这个值是一定的,所以,具体计算的时候,我们只计算分子的值就可以。


朴素贝叶斯分类:


如果有一个待分类的 A:

A =(a1, a2, a3……an) ai 为 A 的一个特征属性,A 为一个向量

如果 ai 之间 相互独立 ,那么

P(A | Bi) = P(a1|Bi) * P(a2|Bi) * P(a3|Bi)……P(an|Bi)

那么贝叶斯公式的分子可以这么计算:

P(a1|Bi) * P(a2|Bi) * P(a3|Bi)……P(an|Bi) * P(Bi)

我们知道,n 个这样的概率相乘,可能会得到一个非常小的小数,如果用计算机表示,容易造成数字下溢。

代数中

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

而且 a * b 正比于 ln(a * b), 分类是选概率最大的类别,所以我们求

ln(P(a1|Bi) * P(a2|Bi) * P(a3|Bi)……P(an|Bi) * P(Bi)) = ln(P(a1|Bi)) + ln(P(a2|Bi)) + ln(P(a3|Bi)) +…… + ln(P(an|Bi))

这个的最

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值