01 贝叶斯算法 - 朴素贝叶斯

简介:

引子:

1、孩子的性别问题

已知一对夫妻生了2个孩子,其中一个是女孩,那么另一个也是女孩的概率的多少?
普遍大家会觉得生男生女都一样,所以另一个也是女孩的概率是1/2。而另一部分稍微聪明一点的人认为:根据排列组合,两个孩子生男生女一共有4种可能性,所以都是女生的概率是1/4。
然而恭喜你们,完美得避开了正确答案。
我们来看看这究竟是怎么一回事,不考虑数学公式,我们来看看两个孩子中其中一个是女孩的可能性有哪些。

首先,小夫妻生了老大和老二,但题干中并没有说明哪个是女孩。
给出所有生孩子可能出现的情况:
(老大,老二) = { 男男, 女女, 男女, 女男 };
在其中,出现女孩的情况有三个:
{女女, 男女, 女男 };
在这三种情况里,满足__其中一个是女孩,那么另一个也是女孩的__情况只有一种。
所以__正确答案是1/3__;

用条件公式概率公式来描述:

思路1:
$color{red}{P(A|B) = P(2个都是女孩 | 其中一个是女孩) = 1/3}$
即:在其中一个是女孩的情况下,夫妻生的双胞胎都是女孩的概率是1/3。

思路2:
P(AB) :表示两个都是女孩的概率 = 1/4;
P(B):其中一个是女孩 = 3/4;
$\color{red}{P(A|B) =P(AB)/P(B) = 1/3}$

请将这两个红色的公式深深得植入大脑后开始本章的学习。


2、古典概率中著名的三门问题

参赛者会看见三扇关闭了的门,其中一扇的后面有一辆汽车,选中后面有车的那扇门可赢得该汽车,另外两扇门后面则各藏有一只山羊。当参赛者选定了一扇门,但未去开启它的时候,节目主持人开启剩下两扇门的其中一扇,露出其中一只山羊。主持人其后会问参赛者要不要换另一扇仍然关上的门。问题是:换另一扇门会否增加参赛者赢得汽车的机率?

推荐一个非常鬼畜的动画来帮助大家理解这个问题:
https://mp.weixin.qq.com/s/7XqjBR4xUUOtuWyzL5v2ig

数学公式分析:

第一次选中车,第二次中选车的__联合概率__,用公式表达:
$color{red}{P(1车,2车) 这是一个联合概率。}$

P(1车,2车) = 第一次选中车的概率 × (第一次选中车的条件下,第二次还选中车的概率);用公式表达:
$color{red}{P(1车,2车) = P(1车) × P(2车|1车)}$
__分析:__第一次抽到车的概率1/3,第二次如果换抽到车的概率是0。

同理:第一次选中羊,第二次选中车的__联合概率公式__:
$color{red}{P(1羊,2车) = P(1羊) × P(2车|1羊)}$
__分析:__第一次抽到羊的概率2/3,第二次抽如果换,必然抽到车。

获奖概率:P(2车) - 如果第二次换门,抽奖获得车的概率。
$color{red}{P(2车) = P(1车,2车) + P(1羊,2车)}$
$color{red}{= P(1车) × P(2车|1车) + P(1羊) × P(2车|1羊)}$
$color{red}{= 1/3×0 + 2/3×1 = 2/3}$

同理,如果第二次换门,抽奖获得羊的概率:P(2羊)
$color{red}{P(2羊) = P(1羊,2羊) + P(1车,2羊)}$
$color{red}{= P(1羊) × P(2羊|1羊) + P(1车) × P(2羊|1车)}$
$color{red}{= 2/3×0 + 1/3×1 = 1/3}$

结论:从概率角度来看,换个门是有价值的。

衍生一个问题:一共1000个门里,有999只草泥马,只有一辆劳斯莱斯。
你选了一扇门后,我去掉了另外998个装有草泥马的门。
现在剩下一扇你刚才选的门,以及另外一扇没有打开的门。

现在你换不换?

傻子才不换...


例子想要说明的重点:

在给定条件的情况下,很多生活中看似显而易见的概率问题会发生重大的变化。

在模型求解的过程中,会遇到2种问题:__判别式模型__和__生成式模型__。
判别式模型: P(Y|X) - 条件概率,即在发生了X的条件下,生成了Y的概率。
生成式模型: P(X,Y) - 联合概率,即考虑X和Y同时发生的概率。
很多模型都是基于判别式和生成式进行构建的。很多__分类__的问题用的是__判别式__模型。__聚类__问题多数采用__生成式__模型。


一、贝叶斯定理相关公式

先验概率P(A):在不考虑任何情况下,A事件发生的概率。
条件概率P(B|A):A事件发生的情况下,B事件发生的概率。
后验概率P(A|B):在B事件发生之后,对A事件发生的概率的重新评估。

有时候 P(B|A) 不太好求,但右边式子中的情况都比较好求,这时候可以通过贝叶斯公式转化问题:
P(B|A) = P(A,B) / P(A) = P(B)P(A|B) / P(A)

贝叶斯公式


全概率:如果A和A'(A的补集)构成样本空间的一个划分,那么事件B的概率为:A和A'的概率分别乘以B对这两个事件的概率之和。

例子中的:$color{red}{P(2车) = P(1车,2车) + P(1羊,2车)}$ 就是求全概率的一种情况。
即: $color{red}{全集=A+A的补集}$;

基于条件概率的贝叶斯定律数学公式:


例子:后验概率问题 - P(B|A) = P(A,B) / P(A) = P(B)P(A|B) / P(A);
有两个碗,第一个碗中装有30个水果糖和10个巧克力糖,第二个碗中装有20个水果糖和20个巧克力糖,现在随机选择一个碗,从中取出一颗糖,发现是水果糖,请求出这颗水果糖来自一号碗的概率有多大?

思路:
1、已知每个碗中取出水果糖的概率,已知每次选碗也是随机。
2、那么先求出随机取碗条件下,取出是水果糖的__全概率__。
3、再根据P(B|A) = P(A,B) / P(A) = P(B)P(A|B) / P(A) 公式反推后验概率问题:水果糖来自一号碗的概率有多大。


二、朴素贝叶斯算法

朴素贝叶斯(Naive Bayes, NB)是基于“__特征之间是独立的__”这一朴素假设,应用贝叶斯定理的监督学习算法。__朴素贝叶斯本质就是一个分类算法。__

对应给定的样本X的特征向量x1,x2,...,xn;该样本X的类别y的概率可以由贝叶斯公式得到:


朴素贝叶斯算法推导:

特征属性之间是独立的,所以得到:

在给定样本的情况下,P(x1,x2,...,xm)是常数,所以得到:

P(x1,x2,xn)是一个定值,所以式子左右成正比

从而:

用TF-IDF分词和词袋法来分析上述公式的应用:

分析 - 朴素贝叶斯算法


朴素贝叶斯算法流程/定义如下:

1、设x={a1,a2,...,an}为待分类项,其中a为x的一个特征属性。
2、类别集合为C={y1,y2,...,yn};
3、分别计算P(y1|x),P(y2|x),....,P(yn|x)的值(贝叶斯公式)
4、如果P(yk|x)=max{P(y1|x),P(y2|x),....,P(yn|x)},那么认为x为yk类型。


三、高斯朴素贝叶斯

Gaussian Naive Bayes是指当特征属性为连续值时,而且分布服从高斯分布,那么在计算P(x|y)的时候可以直接使用高斯分布的概率公式:

因此只需要计算出各个类别中此特征项划分的各个均值和标准。

P(xk|yk) 怎么求?

1、先找到yk这个分类结果的样本,找到这些样本对应的xk属性,求这些xk的均值和标准差,最后代入g(x,η,σ);

2、分别计算P(x1|yk)× ....× P(xn|yk) × P(yk)的值,这个公式和P(yk|x1,x2,...,xn)成正比;

3、当分类个数为m个时,分别计算k=1~m的 P(x1|yk)× ....× P(xn|yk) × P(yk)的值,取其中最大概率时的K值,即最终的分类结果。


四、伯努利朴素贝叶斯

Bernoulli Naive Bayes是指当特征属性为离散值时,而且分布服从伯努利分布,那么在计算P(x|y)的时候可以直接使用伯努利分布的概率公式:

伯努利分布是一种离散分布,只有两种可能的结果。1表示成功,出现的概率为p;0表示失败,出现的概率为q=1-p;其中均值为E(x)=p,方差为Var(X)=p(1-p);


五、多项式朴素贝叶斯

Multinomial Naive Bayes是指当特征属性服从多项分布,从而,对于每个类别y,参数为θy=(θy1,θy2,...,θyn),其中n为特征属性数目,那么P(xi |y)的概率为θyi; 该算法__一般用于文本分类__。


分析和总结:

如果数据中既有连续的特征,又有离散的特征,我们该如何去做分类?
本质上来说,我们计算的是每一个特征对应的概率。如图:

当遇到__连续值特征__时,我们用__高斯__去算P(xi|y)。
遇到__离散值特__征时,我们__用多项式__或__伯努利__去算P(xi|y)。

但问题是我们的API中没有自动得集成这些功能,在这种情况下该怎么去做分类呢?
首先,我们要人为得去分析特征到底属于什么类型的数据。如果特征是一个连续值比较多的数据集,我们统一使用高斯就行了。反之统一用用多项式或伯努利。或者高级一点,对数据进行分箱操做。

02 贝叶斯算法 - 案例一 - 鸢尾花数据分类
03 贝叶斯算法 - 案例二 - 新闻数据分类

相关文章
|
1月前
|
算法 小程序 TensorFlow
垃圾分类算法
垃圾分类算法
93 0
|
3月前
|
算法
朴素贝叶斯算法应用
朴素贝叶斯算法应用
35 4
|
10月前
|
算法
贝叶斯算法人生
贝叶斯算法人生
|
10月前
|
算法 Python
朴素贝叶斯
朴素贝叶斯
|
11月前
|
机器学习/深度学习 人工智能 算法
连载|朴素贝叶斯
连载|朴素贝叶斯
|
算法
朴素贝叶斯和半朴素贝叶斯的区别
朴素贝叶斯和半朴素贝叶斯的区别
213 0
|
算法
统计学习-朴素贝叶斯算法(Naive Bayes)
监督学习模型,属于生成模型,非线性
71 0
统计学习-朴素贝叶斯算法(Naive Bayes)
|
机器学习/深度学习 算法 Python
【阿旭机器学习实战】【10】朴素贝叶斯模型原理及3种贝叶斯模型对比:高斯分布朴素贝叶斯、多项式分布朴素贝叶斯、伯努利分布朴素贝叶斯
【阿旭机器学习实战】【10】朴素贝叶斯模型原理及3种贝叶斯模型对比:高斯分布朴素贝叶斯、多项式分布朴素贝叶斯、伯努利分布朴素贝叶斯
【阿旭机器学习实战】【10】朴素贝叶斯模型原理及3种贝叶斯模型对比:高斯分布朴素贝叶斯、多项式分布朴素贝叶斯、伯努利分布朴素贝叶斯
|
机器学习/深度学习 搜索推荐 算法
决策树算法之 AdaBoost
AdaBoost 是一种更高级的「森林」类型的决策树,和随机森林比起来,它有以下三个特点 1. AdaBoost 的每棵树都只有一个根节点和两个叶子节点,实际上叫树桩(stump)可能会更合适 2. AdaBoost 的每个树桩的权重是不同的,而随机森林中的每棵树的权重是相同的 3. 前一个树桩的错误数据会影响后一个树桩的生成,意味着后面的树桩是前面树桩的补足。这种思想也被称为 Boos