最简单、详细朴素贝叶斯算法原理

朴素贝叶斯的原理归根结底就是使用先验概率去计算后验概率。有关先验概率和后验概率请参考先验概率和后验概率最简单理解

1.假设有一数据集X,包含X1到Xn条数据,每条数据包含m个特征(m维),可以表示为:

$$ X_1:X_1^1、X_1^2、X_1^3....X_1^m $$

2.数据集输出Y一共有k个类别,表示为1到k。
3.现在,我们根据频率统计得出输出Y的概率P(y=1)、P(y=2)...P(y=k)
4.我们的问题是想求得测试集(假设有j个)的分类,即

$$ max[P(y=1|X_{test1})、P(y=2|X_{test1})、P(y=3|X_{test1})...P(y=k|X_{test1})] $$

$$ max[P(y=1|X_{testn})、P(y=2|X_{testn})、P(y=3|X_{testn})...P(y=k|X_{testn})] $$

如果测试集数据1在y=1的情况下概率最大,则数据1的输出为类别1,同理可得其他。
5.对于上面的目标公式,我们可以代入条件概率公式计算,即:

$$ P(y=1|X_{test1}) = \frac{P(X_{test1}|y=1)*P(y=1)}{P(X_{test1})} $$

我们已知P(y=1)的值,对于分母,因为分母在每一个公式中

$$ P(y=1|X_{test1})、P(y=2|X_{test1})、P(y=3|X_{test1})...P(y=k|X_{test1}) $$

都出现,所以可以省略不计算,所以最后的关键就是计算

$$ P(X_{test1}|y=1)=P(X_{test1}^1,X_{test1}^2,X_{test1}^3..X_{test1}^m|y=1) $$

6.朴素贝叶斯算法在这里假设m个特征是相互独立的(实际情况并不独立,这里只是为了方便运算,所以算法在这一步计算会有误差存在),公式可以进一步推导为:

$$ P(X_{test1}^1,X_{test1}^2,X_{test1}^3..X_{test1}^m|y=1)=P(X_{test1}^1|y=1)*P(X_{test1}^2|y=1)*P(X_{test1}^3|y=1)...P(X_{test1}^m|y=1) $$

7.现在问题有转化为了求解

$$ P(X_{test1}^1|y=1) $$

$$ P(X_{test1}^2|y=1)到P(X_{test1}^m|y=1)类同 $$

对于上述公式的求解,需要分为三种情况,第一种情况是数据集X的第一维特征(以第一维特征举例)取值是离散的,则第一维特征符合多项式分布:

$$ P(X_{test1}^1|y=1)=\frac{训练集中X_{test1}^1值出现的次数}{训练集分类为1的样本总的特征计数(不限于第一维)} $$

但是如果出现分子为0的情况,则:

$$ P(X_{test1}^1|y=1)=0 $$

$$ P(X_{test1}^1,X_{test1}^2,X_{test1}^3..X_{test1}^m|y=1)=0*P(X_{test1}^2|y=1)*P(X_{test1}^3|y=1)...P(X_{test1}^m|y=1)=0 $$

仅仅因为一个特征取值不存在就断定当前类别概率为0,是不公平的,所以在这里引入了拉普拉斯平滑:

$$ P(X_{test1}^1|y=1)=\frac{训练集中X_{test1}^1值出现的次数+1}{训练集分类为1的样本总的特征计数(不限于第一维)+训练集中第1维特征的取值个数} $$

第二种情况是数据集X的第一维特征(以第一维特征举例)取值是离散且稀疏的,那们我们只关心第一维特征的取值是否存在(不为0),如果存在记为1,不存在记为0。则第一维特征符合伯努利分布:

$$ P(X_{test1}^1|y=1) = X_{test1}\frac{训练集中分类为1的数据中第一维特征X^1不为0的数据个数}{训练集中分类为1的数据个数}+(1-X_{test1})(1-\frac{训练集中分类为1的数据中第一维特征X^1不为0的数据个数}{训练集中分类为1的数据个数}) $$

$$ 其中X_{test1}^1的取值如果不为0,即为1。 $$

第三种情况是数据集X的第一维特征(以第一维特征举例)取值是连续的,朴素贝叶斯假设第一维特征的先验概率为正态分布:

$$ P(X_{test1}^1|y=1) = \frac{1}{\sqrt{2\pi\sigma^2_1}}exp(-\frac{(X_{test1}^1-\mu_1)^2}{2\sigma^2_1}) $$

$$ 其中\mu_1为训练集中第1为特征取值的平均值,\sigma^2_1为训练集中第1为特征取值的方差 $$

8.Xtest1的y=1的情况推导出来后,可以依此类推y=2到k的情况,数据的最终输出为概率最大的y的值。再以此类推其余测试集的输出,算法结束( ̄▽ ̄)。

参考博客:https://www.cnblogs.com/pinar...

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章