1. 介绍
朴素贝叶斯分类的思想是求出数据实例属于每个类型的概率,通过比较求出最大概率的类别。那么怎么求出数据实例属于某个类别的概率呢?这里就用到了贝叶斯公式及其变形:
P(B∣A)=P(A)P(AB)
P(A∣B)=P(B)P(AB)
P(AB)=P(B∣A)∗P(A)=P(A∣B)∗P(B)
我们用到的是下面这个公式变形:
P(B∣A)=P(A)P(A∣B)∗P(B)
我的另一篇文章《排列组合、积事件概率、条件概率、贝叶斯公式、独立事件》有作简单介绍,也可以看概率论中关于条件概率的视频:
《概率论与数理统计》教学视频全集(宋浩)
条件概率 https://www.bilibili.com/video/av36206436?p=11
乘法公式 https://www.bilibili.com/video/av36206436?p=12
全概率公式 https://www.bilibili.com/video/av36206436?p=13
贝叶斯公式 https://www.bilibili.com/video/av36206436?p=14
将上述表达为分类任务的公式:
P(类别∣特征)=P(特征)P(特征∣类别)∗P(类别)
从已知的样本数据中,可以计算出P(特征|类别)、P(类别)、P(特征),从而在给定待分类数据实例特征时,可以计算出所属某类别的概率,即P(类别|特征)。
2. 案例
我们从一个实例来说明(摘自《带你彻彻底底搞懂朴素贝叶斯公式》|《带你搞懂朴素贝叶斯分类算法》)

现在给我们的问题是,如果一对男女朋友,男生向女生求婚,男生的四个特点分别是不帅,性格不好,身高矮,不上进(好扎心,囧o(╯□╰)o),请你判断一下女生是嫁还是不嫁?
这是一个典型的分类问题,转为数学问题就是比较P(嫁|(不帅、性格不好、身高矮、不上进))与P(不嫁|(不帅、性格不好、身高矮、不上进))的概率,最终选择嫁与不嫁的答案。
这里我们联系到朴素贝叶斯公式:
P(嫁∣(不帅、性格不好、身高矮、不上进))=P(不帅、性格不好、身高矮、不上进)P((不帅、性格不好、身高矮、不上进)∣嫁)∗P(嫁)
那么等式后面的三个值是如何求得?
是根据已知训练数据统计得来,下面详细给出该例子的求解过程。
P(不帅、性格不好、身高矮、不上进|嫁) = P(不帅|嫁)*P(性格不好|嫁)*P(身高矮|嫁)*P(不上进|嫁),那么我就要分别统计后面几个概率,也就得到了左边的概率!
等等,为什么这个成立呢?学过概率论的同学可能有感觉了,这个等式成立的条件需要特征之间相互独立吧!
对的!这也就是为什么朴素贝叶斯分类有朴素一词的来源,朴素贝叶斯算法是假设各个特征之间相互独立,那么这个等式就成立了!
将上面的公式整理一下可得:
P(嫁∣(不帅、性格不好、身高矮、不上进))=P(不帅、性格不好、身高矮、不上进)P(不帅∣嫁)∗P(性格不好∣嫁)∗P(身高矮∣嫁)∗P(不上进∣嫁)∗P(嫁)=P(不帅∣嫁)∗P(性格不好∣嫁)∗P(身高矮∣嫁)∗P(不上进∣嫁)∗P(嫁)+P(不帅∣不嫁)∗P(性格不好∣不嫁)∗P(身高矮∣不嫁)∗P(不上进∣不嫁)∗P(不嫁)P(不帅∣嫁)∗P(性格不好∣嫁)∗P(身高矮∣嫁)∗P(不上进∣嫁)∗P(嫁)
P(不嫁∣(不帅、性格不好、身高矮、不上进))=P(不帅、性格不好、身高矮、不上进)P(不帅∣不嫁)∗P(性格不好∣不嫁)∗P(身高矮∣不嫁)∗P(不上进∣不嫁)∗P(不嫁)=P(不帅∣嫁)∗P(性格不好∣嫁)∗P(身高矮∣嫁)∗P(不上进∣嫁)∗P(嫁)+P(不帅∣不嫁)∗P(性格不好∣不嫁)∗P(身高矮∣不嫁)∗P(不上进∣不嫁)∗P(不嫁)P(不帅∣不嫁)∗P(性格不好∣不嫁)∗P(身高矮∣不嫁)∗P(不上进∣不嫁)∗P(不嫁)
条件独立性假设是假定“输入参数的各个特征”对“输出参数的值”的影响相互独立,而不是假设特征本身相互独立。 所以“P(不帅、性格不好、矮、不上进)”并不等于“P(不帅)P(性格不好)P(矮)P(不上进)”。
分母相同的,实际上只求解分子即可。
下面我们逐一进行统计计算(在数据量很大的时候,根据中心极限定理,频率是等于概率的):
P(嫁)=1/2、P(不帅|嫁)=1/2、P(性格不好|嫁)=1/6、P(矮|嫁)=1/6、P(不上进|嫁)=1/6。
P(不嫁)=1/2、P(不帅|不嫁)=1/3、P(性格不好|不嫁)=1/2、P(矮|不嫁)=1、P(不上进|不嫁)=2/3
P(嫁∣(不帅、性格不好、身高矮、不上进))=21∗21∗61∗61∗61+21∗31∗21∗1∗3221∗21∗61∗61∗61=8641+1818641=491
P(不嫁∣(不帅、性格不好、身高矮、不上进))=21∗21∗61∗61∗61+21∗31∗21∗1∗3221∗31∗21∗1∗32=8641+181181=4948
则P(不嫁|不帅、性格不好、矮、不上进) > P(嫁|不帅、性格不好、矮、不上进),则该女子选择不嫁的概率更大!
3. 朴素贝叶斯的优缺点
优点:
(1)算法逻辑简单,易于实现(算法思路很简单,只要使用贝叶斯公式转化即可!)
(2)分类过程中时空开销小(假设特征相互独立,只会涉及到二维存储)
缺点:
朴素贝叶斯假设属性之间相互独立,这种假设在实际过程中往往是不成立的。在属性之间相关性越大,分类误差也就越大。