通俗易懂!白话朴素贝叶斯

时间:2022-11-08 22:55:57


个人网站:​​红色石头的机器学习之路​​​
GitHub:​​​RedstoneWill的GitHub​​​
微信公众号:AI有道(ID:redstonewill)

说起朴素贝叶斯,很多人会被它复杂的公式和易混淆的概念搞得晕头转向、不知所以。本文,我将以最通俗的语言,尽量减少复杂公式的使用,白话讲解朴素贝叶斯算法的原理,并通过实际的例子,利用朴素贝叶斯思想,解决机器学习问题。让你快速对朴素贝叶斯有直观且形象的理解。

1. 买瓜问题

首先,我们要介绍两个数学概念:先验概率后验概率。是不是又要晕乎乎了?没关系,我们通过一个例子来帮助你理解这两种概率。

最近天气炎热,红色石头来到超市准备买个西瓜,可是没有太多的经验,不知道怎么样才能挑个熟瓜。这时候,作为理科生,红色石头就有这样的考虑:

如果我对这个西瓜没有任何了解,包括瓜的颜色、形状、瓜蒂是否脱落。按常理来说,西瓜成熟的概率大概是 60%。那么,这个概率 P(瓜熟) 就被称为先验概率。

也就是说,先验概率是根据以往经验和分析得到的概率,先验概率无需样本数据,不受任何条件的影响。就像红色石头只根据常识而不根据西瓜状态来判断西瓜是否成熟,这就是先验概率。

再来看,红色石头以前学到了一个判断西瓜是否成熟的常识,就是看瓜蒂是否脱落。一般来说,瓜蒂脱落的情况下,西瓜成熟的概率大一些,大概是 75%。如果把瓜蒂脱落当作一种结果,然后去推测西瓜成熟的概率,这个概率 P(瓜熟 | 瓜蒂脱落) 就被称为后验概率。后验概率类似于条件概率。

知道了先验概率和后验概率,我们再来看看什么是联合概率。红色石头买西瓜的例子中,P(瓜熟,瓜蒂脱落) 称之为联合分布,它表示瓜熟了且瓜蒂脱落的概率。关于联合概率,满足下列乘法等式:


P(瓜熟,瓜蒂脱落)=P(瓜熟|瓜蒂脱落)⋅P(瓜蒂脱落)=P(瓜蒂脱落|瓜熟)⋅P(瓜熟) P ( 瓜 熟 , 瓜 蒂 脱 落 ) = P ( 瓜 熟 | 瓜 蒂 脱 落 ) ⋅ P ( 瓜 蒂 脱 落 ) = P ( 瓜 蒂 脱 落 | 瓜 熟 ) ⋅ P ( 瓜 熟 )

其中,P(瓜熟 | 瓜蒂脱落) 就是刚刚介绍的后验概率,表示在“瓜蒂脱落”的条件下,“瓜熟”的概率。P(瓜蒂脱落 | 瓜熟) 表示在“瓜熟”的情况下,“瓜蒂脱落”的概率。

接着,红色石头想如何计算瓜蒂脱落的概率呢?实际上可以分成两种情况:一种是瓜熟状态下瓜蒂脱落的概率,另一种是瓜生状态下瓜蒂脱落的概率。瓜蒂脱落的概率就是这两种情况之和。因此,我们就推导出了全概率公式:


P(瓜蒂脱落)=P(瓜蒂脱落|瓜熟)⋅P(瓜熟)+P(瓜蒂脱落|瓜生)⋅P(瓜生) P ( 瓜 蒂 脱 落 ) = P ( 瓜 蒂 脱 落 | 瓜 熟 ) ⋅ P ( 瓜 熟 ) + P ( 瓜 蒂 脱 落 | 瓜 生 ) ⋅ P ( 瓜 生 )

2. 单个特征判断瓜熟

好了,介绍完先验概率、后验概率、联合概率、全概率后,我们来看这样一个问题:西瓜的状态分成两种:瓜熟与瓜生,概率分别为 0.6 与 0.4,且瓜熟里面瓜蒂脱落的概率是 0.8,瓜生里面瓜蒂脱落的概率是 0.4。那么,如果我现在挑到了一个瓜蒂脱落的瓜,则该瓜是好瓜的概率多大?

显然,这是一个计算后验概率的问题,根据我们上面推导的联合概率和全概率公式,可以求出:


P(瓜熟|瓜蒂脱落)=P(瓜熟,瓜蒂脱落)P(瓜蒂脱落)       =P(瓜蒂脱落|瓜熟)⋅P(瓜熟)P(瓜蒂脱落|瓜熟)⋅P(瓜熟)+P(瓜蒂脱落|瓜生)⋅P(瓜生) P ( 瓜 熟 | 瓜 蒂 脱 落 ) = P ( 瓜 熟 , 瓜 蒂 脱 落 ) P ( 瓜 蒂 脱 落 )               = P ( 瓜 蒂 脱 落 | 瓜 熟 ) ⋅ P ( 瓜 熟 ) P ( 瓜 蒂 脱 落 | 瓜 熟 ) ⋅ P ( 瓜 熟 ) + P ( 瓜 蒂 脱 落 | 瓜 生 ) ⋅ P ( 瓜 生 )

一项一项来看:

条件概率 P(瓜蒂脱落 | 瓜熟) = 0.8

先验概率 P(瓜熟) = 0.6

条件概率 P(瓜蒂脱落 | 瓜生) = 0.4

先验概率 P(瓜生) = 0.4

将以上数值带入上式,得:


P(瓜熟|瓜蒂脱落)=0.8⋅0.60.8⋅0.6+0.4⋅0.4=0.75 P ( 瓜 熟 | 瓜 蒂 脱 落 ) = 0.8 ⋅ 0.6 0.8 ⋅ 0.6 + 0.4 ⋅ 0.4 = 0.75

这样,我们就计算得到了瓜蒂脱落的瓜是好瓜的概率是 0.75。注意,以上这种计算后验概率的公式就是利用贝叶斯定理。有点意外吧?不知不觉,可以说你已经掌握了贝叶斯定理的思想了。

3. 多个特征判断瓜熟

为了买到一个熟瓜,红色石头也是拼了。专门在网上搜索了一下。知道判断一个瓜是否熟了,除了要看瓜蒂是否脱落,还要看瓜的形状和颜色。形状有圆和尖之分,颜色有深绿、浅绿、青色之分。要看这么多特征啊?红色石头有点慌,不过没关系,我们可以使用刚刚引入的贝叶斯定理思想来尝试解决这个问题。

现在,特征由原来的 1 个,变成现在的 3 个,我们用 X 表示特征,用 Y 表示瓜的类型(瓜熟还是瓜生)。则根据贝叶斯定理,后验概率 P(Y=ck | X=x) 的表达式为:


P(Y=ck|X=x)=P(X=x|Y=ck)P(Y=ck)∑kP(X=x|Y=ck)P(Y=ck) P ( Y = c k | X = x ) = P ( X = x | Y = c k ) P ( Y = c k ) ∑ k P ( X = x | Y = c k ) P ( Y = c k )

其中,ck c k 表示类别,k 为类别个数。本例中,k = 1,2,c1 c 1 表示瓜熟,c2 c 2

有一点需要注意,这里的特征 X 不再是单一的,而是包含了 3 个特征。因此,条件概率 P(X=x | Y=ck c k ) 假设各个条件相互独立,也就是说假设不同特征之间是相互独立的。这样,P(X=x | Y=ck c k ) 就可以写成:


P(X=x|Y=ck)=P(X1,⋯,Xn|Y=ck)=Πnj=1P(Xj=xj|Y=ck) P ( X = x | Y = c k ) = P ( X 1 , ⋯ , X n | Y = c k ) = Π j = 1 n P ( X j = x j | Y = c k )

其中,n 为特征个数,j 表示当前所属特征。针对这个例子,P(X=x | Y=ck c k ) 可以写成:


P(X=x|Y=ck)=P(X1=x1|Y=ck)P(X2=x2|Y=ck)P(X3=x3|Y=ck) P ( X = x | Y = c k ) = P ( X 1 = x 1 | Y = c k ) P ( X 2 = x 2 | Y = c k ) P ( X 3 = x 3 | Y = c k )

这种条件独立性的假设就是朴素贝叶斯法“朴素”二字的由来。这一假设让朴素贝叶斯法变得简单,但是有时候会牺牲一定的分类准确率。

这样,利用朴素贝叶斯思想,我们就可以把后验概率写成:


P(Y=ck|X=x)=P(X=x|Y=ck)P(Y=ck)∑kP(X=x|Y=ck)P(Y=ck)=P(Y=ck)ΠjP(Xj=xj|Y=ck)∑kP(Y=ck)ΠjP(Xj=xj|Y=ck) P ( Y = c k | X = x ) = P ( X = x | Y = c k ) P ( Y = c k ) ∑ k P ( X = x | Y = c k ) P ( Y = c k ) = P ( Y = c k ) Π j P ( X j = x j | Y = c k ) ∑ k P ( Y = c k ) Π j P ( X j = x j | Y = c k )

不是说好没有那么多公式的吗?别担心,上面的公式看上去比较复杂,其实只是样本特征增加了,形式上与上一节 P(瓜熟 | 瓜蒂脱落) 是一致的。

现在,红色石头拿起一个西瓜,观察了它的瓜蒂、形状、颜色三个特征,就能根据上面的朴素贝叶斯公式,分别计算 c1 c 1 (瓜熟)和 c2 c 2 (瓜生)的概率,即 P(Y=c1 c 1 | X=x) 和 P(Y=c2 c 2 | X=x)。然后再比较 P(Y=c1 c 1 | X=x) 和 P(Y=c2 c 2

若 P(Y=c1 c 1 | X=x) > P(Y=c2 c 2

若 P(Y=c1 c 1 | X=x) < P(Y=c2 c 2

值得注意的是上式中的分母部分,对于所有的 ck c k 来说,都是一样的。因此,分母可以省略,不同的 ck c k ,仅比较 P(Y=ck c k


P(Y=ck)ΠjP(Xj=xj|Y=ck) P ( Y = c k ) Π j P ( X j = x j | Y = c k )

好啦!红色石头终于明白了如何利用朴素贝叶斯法,来判断瓜是否熟了。

4. 朴素贝叶斯分类

红色石头已经了解了贝叶斯定理和朴素贝叶斯法,接下来已经可以很自信地去买瓜了。买瓜之前,还有一件事情要做,就是搜集样本数据。红色石头通过网上资料和查阅,获得了一组包含 10 组样本的数据。这组数据是不同瓜蒂、形状、颜色对应的西瓜是生是熟。我把这组数据当成是历史经验数据,以它为标准。



通俗易懂!白话朴素贝叶斯

其中,瓜蒂分为脱落和未脱,形状分为圆形和尖形,颜色分为深绿、浅绿、青色。不同特征组合对应着瓜熟或者瓜生。

现在,红色石头挑了一个西瓜,它的瓜蒂脱落、形状圆形、颜色青色。这时候,红色石头就完全可以根据样本数据和朴素贝叶斯法来计算后验概率。

首先,对于瓜熟的情况:

瓜熟的先验概率: P(瓜熟) = 6 / 10 = 0.6。

条件概率: P(脱落 | 瓜熟) = 4 / 6 = 2 / 3。

条件概率: P(圆形 | 瓜熟) = 4 / 6 = 2 / 3。

条件概率: P(青色 | 瓜熟) = 2 / 6 = 1 / 3。

计算后验概率分子部分:

P(瓜熟) × P(脱落 | 瓜熟) × P(圆形 | 瓜熟) × P(青色 | 瓜熟) = 0.6 × (2 / 3) × (2 / 3) × (1 / 3) = 4 / 45。

然后,对于瓜生的情况:

瓜生的先验概率: P(瓜生) = 4 / 10 = 0.4。

条件概率: P(脱落 | 瓜生) = 1 / 4 = 0.25。

条件概率: P(圆形 | 瓜生) = 1 / 4 = 0.25。

条件概率: P(青色 | 瓜生) = 1 / 4 = 0.25。

计算后验概率分子部分:

P(瓜生) × P(脱落 | 瓜生) × P(圆形 | 瓜生) × P(青色 | 瓜生) = 0.4 × 0.25 × 0.25 × 0.25 = 1 / 160。

因为 4 / 45 > 1 / 160,所以预测为瓜熟。终于计算完了,红色石头很肯定地说这个西瓜瓜蒂脱落、形状圆形、颜色青色,应该是熟瓜。

回到家一看,果然瓜熟了。

5. 总结

本文以红色石头买西瓜的经历,来给大家形象解释了什么是先验概率、后验概率,介绍了贝叶斯定理和朴素贝叶斯法。最后,将朴素贝叶斯法用于如何挑选西瓜,判断西瓜是否熟了。本文以最白话的语言解释了朴素贝叶斯的基本思想和分类过程。不知道红色石头的这次买瓜经历是否对你了解朴素贝叶斯有所帮助呢?


通俗易懂!白话朴素贝叶斯