贝叶斯(约1701-1761) Thomas Bayes,英国数学家。约1701年出生于伦敦,做过神甫。1742年成为英国皇家学会会员。1761年4月7日逝世。贝叶斯在数学方面主要研究概率论。他首先将归纳推理法用于概率论基础理论,并创立了贝叶斯统计理论,对于统计决策函数、统计推断、统计的估算等做出了贡献。他死后,理查德·普莱斯 (Richard Price)于1763年将他的著作《机会问题的解法》(An essay towards solving a problem in the doctrine of chances)寄给了英国皇家学会,对于现代概率论和数理统计产生了重要的影响。
–-----------------------------------------------------------------------------—----------------------------------------
–-----------------------------------------------------------------------------—----------------------------------------
–-----------------------------------------------------------------------------—----------------------------------------
设 A 1 , A 2 , . . . , A n A_1,A_2,...,A_n A1,A2,...,An为一个完备事件组,其中 P ( A ) > 0 , i = 1 , 2 , . . . , n P(A)>0,i=1,2,...,n P(A)>0,i=1,2,...,n。则对于任意事件B,如果 P ( B ) > 0 P(B)>0 P(B)>0,则有:
–-----------------------------------------------------------------------------—----------------------------------------
已知一所学校里男生占60%,女生占40%,男生总是穿长裤,女生则一半穿长裤一半穿裙子。问:你在校园里随机遇到一个穿长裤的人,Ta是男生的概率是多少?
–-----------------------------------------------------------------------------—------------------------------------–
–-----------------------------------------------------------------------------—------------------------------------–
–-----------------------------------------------------------------------------—------------------------------------–
在分类问题中,我们常常需要根据新样本所具有的属性将其划分到某个类别中;
–-----------------------------------------------------------------------------—----------------------------------------
从上面3.1的简介里可以看出,最重要的一步就是第4步,那么如何计算 P ( y k ∣ X ) P(y_k|X) P(yk∣X)就是这里研究的重点:
说明:上式的计算方法是假设在 x 1 , x 2 , . . . , x n x_1,x_2,...,x_n x1,x2,...,xn相互独立的基础上,而在工业运用上 x 1 , x 2 , . . . , x n x_1,x_2,...,x_n x1,x2,...,xn大多不是完全相互独立的,所以上式应该为约等于。而如果 x 1 , x 2 , . . . , x n x_1,x_2,...,x_n x1,x2,...,xn的相关性很强,也就是 x k , x l x_k,x_l xk,xl可能相互影响时,就建议不要用朴素贝叶斯的方法,得到的效果会很差。
–-----------------------------------------------------------------------------—----------------------------------------
有下面这个相亲数据表,问:当有一个具有(矮、富、帅)的新样本出现,是见还是不见?
以下是 P ( 见 ∣ [ 矮 、 富 、 帅 ] ) P(见|[矮、富、帅]) P(见∣[矮、富、帅])的计算过程,有兴趣的伙伴自己计算 P ( 不 见 ∣ [ 矮 、 富 、 帅 ] ) P(不见|[矮、富、帅]) P(不见∣[矮、富、帅])
举例说明 P ( 矮 ∣ 见 ) = P(矮|见)= P(矮∣见)= 1 3 1 \over 3 31的计算过程:
在上面数据集中,“见”总共有3条数据,在这3条数据中,“矮”出现了1次,所以 P ( 矮 ∣ 见 ) = P(矮|见)= P(矮∣见)= 1 3 1 \over 3 31
–-----------------------------------------------------------------------------—----------------------------------------
如果数据集变成如下,还是(矮、富、帅)这个样本出现,是见还是不见?
分析:还是用朴素贝叶斯求 m a x ( P ( 见 ∣ [ 矮 、 富 、 帅 ] ) , P ( 不 见 ∣ [ 矮 、 富 、 帅 ] ) ) max(P(见|[矮、富、帅]),P(不见|[矮、富、帅])) max(P(见∣[矮、富、帅]),P(不见∣[矮、富、帅])),但是出现了问题:
由于 P ( 矮 ∣ 见 ) = P(矮|见)= P(矮∣见)= 0 2 0 \over 2 20 = 0 =0 =0,那么计算出来的 P ( 见 ∣ [ 矮 、 富 、 帅 ] ) P(见|[矮、富、帅]) P(见∣[矮、富、帅])也是等于0。数据集的特例,对我们的计算结果产生了影响,为了规避这个情况,我们就需要引入拉普拉斯修正的方法:
结合上面,就是把 P ( 矮 ∣ 见 ) = P(矮|见)= P(矮∣见)= 0 2 0 \over 2 20的分子+1,分母+k;
由于样本空间的类别标签 Y = ( 见 , 不 见 ) Y=(见,不见) Y=(见,不见),所以 k = 2 k=2 k=2,
经过拉普拉斯修正后: P ( 矮 ∣ 见 ) = P(矮|见)= P(矮∣见)= 0 + 1 2 + 2 0+1 \over 2+2 2+20+1, P ( 富 ∣ 见 ) = P(富|见)= P(富∣见)= 2 + 1 2 + 2 2+1 \over 2+2 2+22+1, P ( 帅 ∣ 见 ) = P(帅|见)= P(帅∣见)= 1 + 1 2 + 2 1+1 \over 2+2 2+21+1,所以
有兴趣的伙伴自己计算 P ( 不 见 ∣ [ 矮 、 富 、 帅 ] ) ) P(不见|[矮、富、帅])) P(不见∣[矮、富、帅])),记得要使用拉普拉斯修正;
计算后比较“见”与“不见”两个数值,哪个大就选择哪个;
这以上就是朴素贝叶斯算法所有的内容。
–-----------------------------------------------------------------------------—----------------------------------------
–-----------------------------------------------------------------------------—----------------------------------------
–-----------------------------------------------------------------------------—----------------------------------------
以上的例子用到的数据都是离散化的数据,但如果遇到下面连续数值怎么处理呢?
我们需要将连续的数值转化为离散的数据,以下介绍两种方法:
–-----------------------------------------------------------------------------—----------------------------------------
将连续数据分段形成离散数据的预处理方法。以170分出高矮、20K分出富穷、60分出帅丑,得到离散数据如下:
出现问题:分箱法更多依赖于经验,按照上面的分箱法,170与190都被分作“高”,显然差距有点大,有没有什么方法能更好的保持原有数据的特征,又能表达概率的呢!
–-----------------------------------------------------------------------------—----------------------------------------
我们只需计算各类特征下的均值和方差:
比如:有以下样本空间,问(170,30k,70)是见还是不见?
分析:还是计算 m a x ( P ( 见 ∣ [ 170 , 30 k , 70 ] ) , P ( 不 见 ∣ [ 170 , 30 k , 70 ] ) ) max(P(见|[170,30k,70]),P(不见|[170,30k,70])) max(P(见∣[170,30k,70]),P(不见∣[170,30k,70]))
解:求 P ( 见 ∣ [ 170 , 30 k , 70 ] ) P(见|[170,30k,70]) P(见∣[170,30k,70])
P ( 见 ∣ [ 170 , 30 k , 70 ] ) = [ ( P ( 170 ∣ 见 ) ∗ P ( 30 K ∣ 见 ) ∗ P ( 70 ∣ 见 ) ) ∗ P ( 见 ) ] / [ P ( 170 ) ∗ P ( 30 k ) ∗ P ( 70 ) ] P(见|[170,30k,70])=[(P(170|见)*P(30K|见)* P(70|见))*P(见)]/[P(170)* P(30k)* P(70)] P(见∣[170,30k,70])=[(P(170∣见)∗P(30K∣见)∗P(70∣见))∗P(见)]/[P(170)∗P(30k)∗P(70)]
以特征1-身高为例:
若“身高”的均值为180,标准差为8.24,则 P ( 170 ∣ 见 ) P(170|见) P(170∣见)的概率为:
剩下的以特征2-财富值、特征3-颜值的计算过程也是带入上公式。
–-----------------------------------------------------------------------------—----------------------------------------
–-----------------------------------------------------------------------------—----------------------------------------
–-----------------------------------------------------------------------------—----------------------------------------