贝叶斯①——贝叶斯原理篇(联合概率&条件概率&贝叶斯定理&拉普拉斯平滑)

贝叶斯机器学习系列:
贝叶斯②——贝叶斯3种分类模型及Sklearn使用(高斯&多项式&伯努利)
贝叶斯③——Python实现贝叶斯文本分类(伯努利&多项式模型对比)
贝叶斯④——Sklean新闻分类(TF-IDF)
贝叶斯⑤——搜狗新闻分类实战(jieba + TF-IDF + 贝叶斯)
贝叶斯⑥——银行借贷模型(贝叶斯与决策树对比)

贝叶斯分类是一类以贝叶斯定理为基础的分类算法的总称,其中基于特征之间相互独立的朴素贝叶斯是最简单,但效果却非常好的一种分类算法。本文整理了贝叶斯算法的基本原理,希望能够对大家有所帮助~~

一、贝叶斯定理

设想一个问题:班里有30个男生,20个女生,有3个男生留长头发,有15个女生留长头发,现在有一个人留长头发,是男生的可能性有大?

解答过程
P(长发)=(3+15)/(30+20)=18/50=9/25
P(男生)=30/(30+20)=3/5
P(女生)=20/(20+30)=2/5
P(长发|男生)=3/30 = 1/10
P(长发|女生)=15/20=3/4
P(男生|长发) = P(长发|男生)× P(男生)/P(长发) =(1/10×3/5) /(9/25) = 3/50×25/9=1/6
P(女生|长发)= P(长发|女生) × P(女生) / P(长发) = (3/4×2/5)/(9/25) = 3/10×25/9 = 5/6

上述解答过程基于一个联合分布概率理论——即A和B同时发生的概率,即等于发生A的条件下发生B的概率,也等于发生B的条件下发生A的概率,用数学表达就是:
P(A∩B) = P(A|B) × P(B)
P(A∩B)= P(B|A) × P(A)
①和②便可以得到下面等式:
P(A|B) × P(B) = P(B|A) × P(A)
再将P(B)移动右边做为分母,便可以得到大名鼎鼎的贝叶斯公式:
P(A|B) = P(B|A) × P(A) / P(B)
P(A)叫做A的先验概率(边缘概率),是不考虑B的情况下发生A的概率
P(A|B)叫做A的后验概率(条件概率),是发生B的情况下发生A的概率
P(B)叫做B的先验概率(边缘概率),是不考虑A的情况下发生B的概率
P(B|A)叫做B的后验概率(条件概率),是发生A的情况下发生B的概率

贝叶斯分类就是基于贝叶斯定理,在给出特征的情况下,求样本属于哪个类别的问题
P(类别|特征) = P(特征|类别) × P(类别) / P(特征)
根据训练数据计算出其余3个概率,再根据贝叶斯定理计算出属于每个类别的概率,概率最大的类别就是最终的结果

①上述题目由于只有头发长度这一个特征,因此计算其余3个概率还是非常简单的,但如要考虑头发长度,皮肤颜色,肌肉含量,身高4个特征,那么联合概率分布总共是4维空间,总个数2^4 = 16,这其实也还算好,但是实际业务中每个特征的取值往往成千上万,通过统计来计算条件概率的值,基本是不可能的了;

② 假设我们认为特征不独立,那么计算时必须要从整个样本空间去找
比如P((长发,皮肤黑,肌肉多,身高高)|男生)就要找出符合这4个特征的男生,但这样的人可能非常少,甚至为0,那么就会导致条件概率出现为0的情况,这是不利于计算的

基于上述两个原因,贝叶斯分类中对条件概率分布做了条件独立性的假设,这就是朴素贝叶斯的由来,即
P((长发,皮肤黑,肌肉多,身高高)|男生) = P(长发|男生)× P(皮肤黑|男生)×P(肌肉多|男生)×P(身高高|男生)

这样可以在大大简化运算,虽然会牺牲掉一些准确度,但已经能够非常好地达到业务上的需求,因此就一直沿用下来。

二、拉普拉斯平滑

贝叶斯算法是基于训练样本计算先验和条件概率,但样本有限,很有可能不会包含特征的所有属性值,尤其是在特征属性值是连续分布的情况下,这时候测试样本出现一个训练样本没有的属性值,鉴于连乘的算法,只要有一个为0概率就为0,这是不合理的,不能因为一个事件没有观察到就武断的认为该事件的概率是0。

为了解决零概率的问题,法国数学家拉普拉斯最早提出用加1的方法估计没有出现过的现象的概率,所以加法平滑也叫做拉普拉斯平滑。

假定训练样本很大时,每个分子x的计数加1造成的估计概率变化可以忽略不计,但可以方便有效的避免零概率问题,实际业务中分子加了多少个1,分母也会相应加上多少个1,来尽量减少加1带来的误差

三、朴素贝叶斯算法的优缺点

①优点:
1)朴素贝叶斯模型发源于古典数学理论,有稳定的分类效率。
2)对小规模的数据表现很好,能个处理多分类任务,适合增量式训练,尤其是数据量超出内存时,我们可以一批批的去增量训练。
3)对缺失数据不太敏感,算法也比较简单,常用于文本分类。
②缺点:   
1) 朴素贝叶斯给定输出类别的情况下,假设属性之间相互独立,这个假设在实际应用中往往是不成立的,在属性个数比较多或者属性之间相关性较大时,分类效果不好。而在属性相关性较小时,朴素贝叶斯性能最为良好
2)需要知道先验概率,且先验概率很多时候取决于假设,假设的模型可以有很多种,因此在某些时候会由于假设的先验模型的原因导致预测效果不佳。

你可能感兴趣的:(贝叶斯定理,贝叶斯算法,朴素贝叶斯,拉普拉斯平滑,贝叶斯)