本文主要是介绍【转】朴素贝叶斯分类与Laplace平滑,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
本文转载自:带你彻彻底底搞懂朴素贝叶斯公式
1. 朴素贝叶斯
朴素贝叶斯中的朴素一词的来源就是假设各特征之间相互独立。这一假设使得朴素贝叶斯算法变得简单,但有时会牺牲一定的分类准确率。
首先给出贝叶斯公式:
换成分类任务的表达式:
我们最终求的p(类别|特征)即可!就相当于完成了我们的任务。则,朴素贝特斯公式为:
2. 实例解析
首先,给出数据如下:
现在给我们的问题是,如果一对男女朋友,男生想女生求婚,男生的四个特点分别是不帅,性格不好,身高矮,不上进,请你判断一下女生是嫁还是不嫁?
这是典型的二分类问题,按照朴素贝叶斯的求解,转换为P(嫁|不帅、性格不好、矮、不上进)和P(不嫁|不帅、性格不好、矮、不上进)的概率,最终选择嫁与不嫁的答案。
这里我们根据贝特斯公式:
由此,我们将求P(嫁|不帅、性格不好、矮、不上进)的问题转换成求如下三个可求概率的问题:
P(嫁)
P(不帅、性格不好、矮、不上进|嫁)
P(不帅、性格不好、矮、不上进)
根据全概率公式进一步分解可以得到:
P(不帅、性格不好、矮、不上进)=P(嫁)P(不帅|嫁)P(性格不好|嫁)P(矮|嫁)P(不上进|嫁)
+P(不嫁)P(不帅|不嫁)P(性格不好|不嫁)P(矮|不嫁)P(不上进|不嫁)
根据属性之间相互独立可得:
P(不帅、性格不好、矮、不上进|嫁)=P(不帅|嫁)P(性格不好|嫁)P(矮|嫁)P(不上进|嫁)
将上面的公式整理一下可得:
根据给出的数据,求得:
P(嫁)=1/2P(不帅|嫁)=1/2P(性格不好|嫁)=1/6P(矮|嫁)=1/6P(不上进|嫁)=1/6。P(不嫁)=1/2P(不帅|不嫁)=1/3P(性格不好|不嫁)=1/2P(矮|不嫁)=1P(不上进|不嫁)=2/3
但是由贝叶斯公式可得:对于目标求解为不同的类别,贝叶斯公式的分母总是相同的。所以,只求解分子即可:
于是,对于类别“嫁”的贝叶斯分子为:
P(嫁)P(不帅|嫁)P(性格不好|嫁)P(矮|嫁)P(不上进|嫁)=1/2 * 1/2 * 1/6 * 1/6 * 1/6=1/864
对于类别“不嫁”的贝叶斯分子为:
P(不嫁)P(不帅|不嫁)P(性格不好|不嫁)P(矮|不嫁)P(不上进|不嫁)=1/2 * 1/3 * 1/2 * 1* 2/3=1/18。
经代入贝叶斯公式可得:
P(嫁|不帅、性格不好、矮、不上进)=(1/864) / (1/864+1/18)=1/49=2.04%
P(不嫁|不帅、性格不好、矮、不上进)=(1/18) / (1/864+1/18)=48/49=97.96%
因为P(不嫁|不帅、性格不好、矮、不上进) > P(嫁|不帅、性格不好、矮、不上进),所以该女子选择不嫁!
3. Laplace 平滑
当条件概率为0的时候,往往会使得分类准确率受到很大的影响。为了缓解这种零概率估计,修改该后的方案是:
P = (r+1)/(n+2)
其中,n代表类别c出现的样本总数,r代表样本集合中属性出现的次数。需要注意的是,分子加1和分母加2背后的基本原理是:在执行实际的试验之前,我们假设已经有两次试验,一次成功和一次失败。
4. 朴素贝叶斯的优缺点
优点:
- 算法逻辑简单,易于实现(算法思路很简单,只要使用贝叶斯公式转化即可!)
- 分类过程中时空开销小(假设特征相互独立,只会涉及到二维存储)
缺点:
- 朴素贝叶斯假设属性之间相互独立,这种假设在实际过程中往往是不成立的。在属性之间相关性越大,分类误差也就越大。
这篇关于【转】朴素贝叶斯分类与Laplace平滑的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!