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

作者: 壮志_凌云 | 来源:发表于2019-07-03 16:17 被阅读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 }

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

    相关文章

      网友评论

        本文标题:朴素贝叶斯算法中拉普拉斯平滑的证明

        本文链接:https://www.haomeiwen.com/subject/czeqhctx.html