机器学习大数据,机器学习,人工智能机器学习与数据挖掘

朴素贝叶斯算法中拉普拉斯平滑的证明

2019-07-03  本文已影响1人  壮志_凌云

        朴素贝叶斯算法中的拉普拉斯平滑,是为了缓解先验概率为零的情况。在贝叶斯估计中,使用狄利克雷分布作为先验分布,来估计多项分布中的参数值,即可得到拉普拉斯平滑。证明如下:

一、狄利克雷分布

        引入狄利克雷分布的定义,若随机向量符合狄利克雷分布,即 X ~Dir(X_1, \dots ,X_k;\alpha_1, \dots \alpha_k),其中 X_i \in [0, 1],  \sum_{i}^k X_i = 1,设 \alpha = \sum_{i=1}^k \alpha_i,则 X 的概率密度函数为:

f(X) = \frac{ \prod_{i=1}^k X_i^{\alpha_i - 1} }{ \int_{0}^{1} \dots \int_{0}^{1}  \prod_{i=1}^k X_i^{\alpha_i - 1} dX_1 \dots dX_k  } = \frac{ \prod_{i=1}^k X_i^{\alpha_i - 1} }{  \frac{ \prod_{i=1}^k \Gamma(\alpha_i)  }{ \Gamma(\alpha) }  }

    下面计算随机向量 X 的分量 X_i 的期望。我们通过计算 X_1 来代替,这仍然不失一般性。X_1 的概率密度函数为:

f_1(X_1) = \frac{ \int_{0}^{1} \dots \int_{0}^{1} \prod_{i=1}^k X_i^{\alpha_i - 1} dX_2 \dots dX_k }{ \int_{0}^{1} \dots \int_{0}^{1}  \prod_{i=1}^k X_i^{\alpha_i - 1} dX_1 \dots dX_k  }

X_1 的期望为:

E(X_1)  = \int_0^1 X_1 f_1(X_1) dX_1 = \frac{ \int_{0}^{1} \dots \int_{0}^{1} X_1^{\alpha_1} \prod_{i=2}^k X_i^{\alpha_i - 1} dX_1 \dots dX_k }{ \int_{0}^{1} \dots \int_{0}^{1}  \prod_{i=1}^k X_i^{\alpha_i - 1} dX_1 \dots dX_k  }= \frac{ \frac{  \Gamma(\alpha_1 + 1) \prod_{i=2}^k \Gamma(\alpha_i)  }{ \Gamma(\alpha + 1) } }{ \frac{ \prod_{i=1}^k \Gamma(\alpha_i)  }{ \Gamma(\alpha) } }  = \frac{ \Gamma(\alpha_1 + 1) \Gamma(\alpha) }{ \Gamma(\alpha_1) \Gamma(\alpha + 1) }  = \frac{ \alpha_1 }{ 
 \alpha }

故,E(X_i) = \frac{ \alpha_i }{ \alpha }

二、多项分布

        引入多项分布的定义,若随机向量满足多项分布,即 X ~ PN(X_1, \dots X_k; p_1, \dots , p_k) ,其中  \sum_{i=1}^k X_i = n, p_i \in [0, 1],  \sum_{i}^k p_i = 1,则 X 的分布律为:

P(X_1 = x_1, \dots , X_k = x_k) = \frac{ n! }{ \prod_{i=1}^k x_i! } \prod_{i=1}^k p_i^{x_i}

        在多项分布参数的贝叶斯估计中,使用狄利克雷分布作为先验分布。设 h(p_1, \dots, p_k;\alpha_1, \dots ,\alpha_k) 为狄利克雷分布的概率密度函数,m(X_1, \dots , X_k; p_1, \dots ,p_k) 为多项分布的分布律,则后验分布为:

P(p_1, \dots ,p_k|X_1, \dots ,X_k) = \frac{ h(p_1, \dots, p_k; \alpha_1, \dots ,\alpha_k) m(X_1, \dots , X_k; p_1, \dots ,p_k) }{ \int_0^1 \dots \int_0^1 h(p_1, \dots, p_k; \alpha_1, \dots ,\alpha_k) m(X_1, \dots , X_k; p_1, \dots ,p_k) dp_1 \dots dp_k}

= \frac{ \prod_{i=1}^k p_i^{x_i + \alpha_i - 1} }{ \int_{0}^{1} \dots \int_{0}^{1}  \prod_{i=1}^k p_i^{x_i + \alpha_i - 1} dp_1 \dots dp_k  } ~ Dir(p_1, \dots , p_k; x_1 + \alpha_1, \dots , x_k + \alpha_k)

        由于多项分布的后验分布也是狄利克雷分布,故狄利克雷分布是多项分布的共轭分布。由此可得多项分布参数 p_i 的贝叶斯估计值为:

\hat{p_i}  = E(p_i) = \frac{ x_i + \alpha_i }{  x + \alpha },x = \sum_{i=1}^k x_i, \alpha = \sum_{i=1}^k \alpha_i

三、拉普拉斯平滑

        设 (X, Y) 为数据集中的样本,X 为样本特征向量,Y 为分类变量。 N 为数据集样本数,K 为分类个数,c_i,i = 1, \dots, K 表示第 i 个分类,n_i,i = 1, \dots, K 表示数据集中第 i 个分类的样本数。现在要根据数据集来估计分类的先验概率P(Y = c_i)

        由于 \sum_{i=1}^K P(Y = c_i) = 1, \sum_{i=1}^K n_i = N,所以这是一个多项分布的参数估计问题。使用上面已经证明的多项分布参数的贝叶斯估计,并设 \alpha_i = \lambda, i = 1, \dots , K,则:

p(Y = c_i) = \frac{ n_i + \lambda }{ N + K \lambda }

        根据数据集估计特定分类下特征值的先验概率,其实就是在该分类的子数据集中进行多项分布的参数估计。按照上面相同的方法,设 n 为特征个数, S_j, j = 1, \dots, n 为第 j 个特征包含的值个数,x_{j,k}, j = 1, \dots, n; k = 1, \dots, Sj 为第 j 个特征的第 k 个值,n_{i, j, k}  为第 i 个分类的数据集中第 j 个特征取第 k 个值的样本数,则:

P(X_j = x_{j,k} | Y = c_i) = \frac{ n_{i,j,k} + \lambda }{ n_i + S_j \lambda }

        这就证明了朴素贝叶斯算法中的拉普拉斯平滑。

上一篇下一篇

猜你喜欢

热点阅读