深入解析朴素贝叶斯算法

朴素贝叶斯法是基于贝叶斯定理特征条件独立假设分类方法。
1)对于给定的数据集,首先基于特征条件独立假设学习输入\输出的联合概率分布;
2)然后基于此模型,对给定的输入 x x ,利用贝叶斯定理求出后验概率最大的输出 y y
下面我们就围绕上面2个步骤进行介绍。

基本概念:

先验概率:是根据以往的经验和分析得到的概率(先验概率是我们在未知条件下对事件发生可能性猜测的数学表示)
后验概率:事情已经发生,要探求这件事情发生的原因是由某个因素引起的可能性大小(根据结果反推是由那个原因引起的)
(下面的例子参考这个老哥的博客:https://www.cnblogs.com/yemanxiaozu/p/7680761.html)

P ( ) = P ( ) P ( ) P(加了醋|吃起来是酸的)=\frac{P(加了醋,且吃起来是酸的)}{P(吃起来是酸的)}

= P ( ) P ( ) P =\frac{P(吃起来是酸的|加了醋)*P(加了醋)}{P(吃起来是酸的)}

= P ( ) P ( ) P ( ) P ( ) + P ( ) P ( ) =\frac{P(吃起来是酸的|加了醋)*P(加了醋)}{P(吃起来是酸的|加了醋)*P(加了醋)+P(吃起来是酸的|肉变质)*P(肉变质)}

其中 P ( ) P(加了醋|吃起来是酸的) 就是后验概率,所谓后验概率是一种果因概率,即在一个结果已经发生的条件下,可能是其中一个原因造成的概率有多大。

贝叶斯公式: P ( Y X ) = P ( X Y ) P ( Y ) P ( X ) P(Y|X)=\frac{P(X|Y)P(Y)}{P(X)}
贝叶斯公式是由联合概率公式推导出来的:
P ( Y , X ) = P ( Y X ) P ( X ) = P ( X Y ) P ( Y ) P(Y,X)=P(Y|X)P(X)=P(X|Y)P(Y)

概率论与数理统计中关于贝叶斯公式的解释:
“如果我们把事件Y看做【结果】,把诸事件X1.X2……看做导致这个结果的可能的【原因】,则可以形象的把全概率公式看做成为【由原因推结果】;而贝叶斯公式则恰好相反,其作用于【由结果推原因】:现在有一个【结果】Y已发生,在众多可能的【原因】中,到底是哪一个导致了这个【结果】”

用机器学习视角理解贝叶斯公式
在机器学习的视角下,我们把X理解为“具有某特征”,把Y理解成“类别标签”,则

P ( " " " " ) = P ( " " ) P ( " " ) P ( " " ) P("属于某类"|"具有某特征")=\frac{P("具有某特征"|“属于某类”)P("属于某类")}{P("具有某特征")}

P(“属于某类”|“具有某特征”)=在已知某样本“具有某特征”的条件下,该样本“属于某类”的概率。所以叫做『后验概率』。
P(“具有某特征”|“属于某类”)=在已知某样本“属于某类”的条件下,该样本“具有某特征”的概率。
P(“属于某类”)=(在未知某样本具有该“具有某特征”的条件下,)该样本“属于某类”的概率。所以叫做『先验概率』。
P(“具有某特征”)=(在未知某样本“属于某类”的条件下,)该样本“具有某特征”的概率。

朴素贝叶斯法的学习与分类

朴素贝叶斯法通过训练集学习联合概率分布 P ( X , Y ) P(X,Y) ,具体的,学习以下先验概率分布及条件概率分布
先验概率分布
P ( Y = c k ) , k = 1 , 2 K P(Y=c_k),k=1,2…K ----------------------(1)
条件概率分布
P ( X = x Y = c k ) = P ( X ( 1 ) = x ( 1 ) , X ( n ) = x ( n ) Y = c k ) , k = 1 , 2 K P(X=x|Y=c_k)=P(X^{(1)}=x^{(1)},……X^{(n)}=x^{(n)}|Y=c_k),k=1,2…K ------------(2)

由(1)和(2)可得到联合概率分布 P ( X , Y ) P(X,Y)

朴素贝叶斯法对条件概率分布做了条件独立性的假设所以得名为朴素
具体的,条件独立性假设是:
P ( X = x Y = c k ) = P ( X ( 1 ) = x ( 1 ) , X ( n ) = x ( n ) Y = c k ) = j = 1 n P ( X ( j ) = x ( j ) Y = c k ) P(X=x|Y=c_k)=P(X^{(1)}=x^{(1)},……X^{(n)}=x^{(n)}|Y=c_k)=∏_{j=1}^{n}P(X^{(j)}=x^{(j)}|Y=c_k)

条件独立性假设等于是说:用于分类的特征类确定的条件下都是条件独立的

朴素贝叶斯分类时,对给定的输入 x x ,通过学习到的模型计算后验概率分布 P ( Y = c k X = x ) P(Y=c_k|X=x) ,将后验概率最大的类作为 x x 的类输出。
后验概率计算根据贝叶斯定理:
P ( Y = c k X = x ) = P ( X = x Y = c k ) P ( Y = c k ) k P ( X = x Y = c k ) P ( Y = c k ) P(Y=c_k|X=x)=\frac{P(X=x|Y=c_k)P(Y=c_k)}{\displaystyle\sum_kP(X=x|Y=c_k)P(Y=c_k)} (3)
(稍微解释一下,上式的分母其实是运用了全概率公式,求的 P ( X = x ) P(X=x) )

P ( X = x Y = c k ) = j = 1 n P ( X ( j ) = x ( j ) Y = c k ) P(X=x|Y=c_k)=∏_{j=1}^{n}P(X^{(j)}=x^{(j)}|Y=c_k) 带入上面的(3)得:

P ( Y = c k X = x ) = P ( Y = c k ) j = 1 n P ( X ( j ) = x ( j ) Y = c k ) k P ( Y = c k ) j = 1 n P ( X ( j ) = x ( j ) Y = c k ) P(Y=c_k|X=x)=\frac{P(Y=c_k)∏_{j=1}^{n}P(X^{(j)}=x^{(j)}|Y=c_k)}{\displaystyle\sum_kP(Y=c_k)∏_{j=1}^{n}P(X^{(j)}=x^{(j)}|Y=c_k)}
这就是朴素贝叶斯分类的基本公式,
于是朴素贝叶斯分类器可以表示成下面的形式:
y = f ( x ) = a r g m a x c k P ( Y = c k ) j = 1 n P ( X ( j ) = x ( j ) Y = c k ) k P ( Y = c k ) j = 1 n P ( X ( j ) = x ( j ) Y = c k ) y=f(x)=argmax_{c_k}\frac{P(Y=c_k)∏_{j=1}^{n}P(X^{(j)}=x^{(j)}|Y=c_k)}{\displaystyle\sum_kP(Y=c_k)∏_{j=1}^{n}P(X^{(j)}=x^{(j)}|Y=c_k)} (4)

在(4)中分母对于所有的 c k c_k 都是相同的,所以,
y = a r g m a x c k P ( Y = c k ) j = 1 n P ( X ( j ) = x ( j ) Y = c k ) y=argmax_{c_k}P(Y=c_k)∏_{j=1}^{n}P(X^{(j)}=x^{(j)}|Y=c_k)

后验概率最大化的含义

朴素贝叶斯将实例分到后验概率最大化的类中,这等价于期望风险最小化。

朴素贝叶斯法的参数估计

在朴素贝叶斯法中,学习意味着估计 P ( Y = c k ) P ( X ( j ) = x ( j ) Y = c k ) P(Y=c_k)和P(X^{(j)}=x^{(j)}|Y=c_k)
可以利用极大似然估计法估计相应的概率。
先验概率P(Y=c_k)的极大似然估计是:
P ( Y = c k ) = i = 1 N I ( y i = c k ) N P(Y=c_k)=\frac{\displaystyle\sum_{i=1}^{N}I(y_i=c_k)}{N}
设第j个特征可能取值的集合为 a j 1 , a j 2 , a j S j {a_{j1},a_{j2},……a_{jS_j}}
则条件概率为:
P ( X ( j ) = a j l Y = c k ) = i = 1 N I ( x i ( j ) = a j l , y i = c k ) i = 1 N I ( y i = c k ) P(X^{(j)}=a_{jl}|Y=c_k)=\frac{\displaystyle\sum_{i=1}^{N}I(x_i^{(j)}=a_{jl,y_i=c_k})}{\displaystyle\sum_{i=1}^{N}I(y_i=c_k)}

**朴素贝叶斯算法:**对于给定的数据集,
1)计算先验概率及条件概率
P ( Y = c k ) = i = 1 N I ( y i = c k ) N P(Y=c_k)=\frac{\displaystyle\sum_{i=1}^{N}I(y_i=c_k)}{N}

P ( X ( j ) = a j l Y = c k ) = i = 1 N I ( x i ( j ) = a j l , y i = c k ) i = 1 N I ( y i = c k ) P(X^{(j)}=a_{jl}|Y=c_k)=\frac{\displaystyle\sum_{i=1}^{N}I(x_i^{(j)}=a_{jl,y_i=c_k})}{\displaystyle\sum_{i=1}^{N}I(y_i=c_k)}

2)对于给定的实例 x = ( x ( 1 ) , x ( 2 ) x ( n ) ) T x=(x^{(1)},x^{(2)}……x^{(n)})^T ,计算

P ( Y = c k ) j = 1 n P ( X ( j ) = x ( j ) Y = c k ) P(Y=c_k)∏_{j=1}^{n}P(X^{(j)}=x^{(j)}|Y=c_k)

3)确定实例x的类

y = a r g m a x c k P ( Y = c k ) j = 1 n P ( X ( j ) = x ( j ) Y = c k ) y=argmax_{c_k}P(Y=c_k)∏_{j=1}^{n}P(X^{(j)}=x^{(j)}|Y=c_k)

贝叶斯估计

用极大似然估计可能会出现所有估计的概率值为0的情况,(如果对于一个新的输入实例,有一个特征值在训练样本中没有出现,则该特征值对一个条件概率就为0)这时会影响到后验概率的计算,是分类产生偏差。
解决这一问题的方法是采用贝叶斯估计。具体的,条件概率的贝叶斯估计是
P λ ( X ( j ) = a j l Y = c k ) = i = 1 N I ( x i ( j ) = a j l , y i = c k ) + λ i = 1 N I ( y i = c k ) + S j λ P_λ(X^{(j)}=a_{jl}|Y=c_k)=\frac{\displaystyle\sum_{i=1}^{N}I(x_i^{(j)}=a_{jl,y_i=c_k})+λ}{\displaystyle\sum_{i=1}^{N}I(y_i=c_k)+S_jλ}
其中 S j S_j 是该维特征对应的特征值的个数。 λ 0 λ≥0 ,当 λ = 0 λ=0 时就是极大似然估计,当 λ = 1 λ=1 时,称为拉普拉斯平滑

此时对应的,先验概率的贝叶斯估计是:

P λ ( Y = c k ) = i = 1 N I ( y i = c k ) + λ N + K λ P_λ(Y=c_k)=\frac{\displaystyle\sum_{i=1}^{N}I(y_i=c_k)+λ}{N+Kλ}

连续性变量贝叶斯如何处理?

1)对于连续性变量,不能采用离散变量的方法计算概率。
2)如果样本又太少,那么就不能分成区间计算、
3)对于这种情况,可以假设这些变量都是正态分布,通过样本计算出均值方差**,也就得到了正态分布的密度函数,有了密度函数,就可以把值带入,算出某一点的密度函数的值。**

猜你喜欢

转载自blog.csdn.net/qq_16608563/article/details/83994830