朴素贝叶斯算法实现简单,学习和预测的效率均很高,是一种非常常用的方法。
1 贝叶斯算法
贝叶斯算法指通过学习数据的先验概率 P(Y) 和类条件概率 P(X=x|Y=ck) 分布,通过贝叶斯定理计算出后验概率 P(Y=ck|X=x) 。因为在实际中,我们往往比较容易得到前两者,通过(1)式我们便可以得到我们实际希望得到的样本在满足x的条件下,属于 ck 这个类别的后验概率的大小.
P(Y|X)=P(X,Y)P(X)=P(X|Y)P(Y)∑YP(Y)P(X|Y)
(1)
贝叶斯定理的推导非常简单,可以直接利用类条件概率推得。
P(Y|X)=P(X,Y)P(X)
(2)
P(X|Y)=P(X,Y)P(Y)
(3)
从以上(2,3)两式,我们便可以得到(1)式
2 朴素贝叶斯算法
假设我们的输入空间 χ⊆Rn 为n维向量的集和,那么我们的条件概率可以写作:
P(X=x|Y=ck)=P(X(1)=x(1),X(2)=x(2),...,X(n)=x(n)),k=1,2...,K
(4)
如果按照第一节中提到的贝叶斯公式直接进行计算,需要估计的参数将按照指数级增长。假设
xj 的取值有
Sj ,j=1,2,…,n,n为特征维度,y的取值有K个,那么需要估计的参数个数大约为
K∏j=1nSj 个。如果X,Y的取值均是boolean variable,那么需要估计的参数大约为
2n+1 个。面对如此多的参数,学习将变得非常的低效,因此我们引入了朴素贝叶斯的概念。这里的“朴素”就是作了条件概率中各条件具有独立的假设,这时,(4)的条件概率可以写作:
P(X=x|Y=ck)=P(X(1)=x(1),X(2)=x(2),...,X(n)=x(n))=∏j=1nP(X(j)=x(j)|Y=ck)
(5)
此时,需要学习的参数只有
∑j=1nK∗Sj 个,特别是当特征的维度很高时,两者的差距将会非常的明显。可以得到朴素贝叶斯分类的基本公式:
P(Y=ck|X=x)=P(X=x|Y=ck)P(Y=ck)∑kP(X=x|Y=ck)P(Y=ck)=P(Y=ck)∏jP(X(j)=x(j)|Y=ck)∑kP(Y=ck)∏jP(X(j)=x(j)|Y=ck),k=1,2,...,K
(6)
取使(6)式最大的
ck 作为需要预测的样本所属的类别
总结
在朴素贝叶斯算法中,我们假设所有的条件互相独立,这是一个较强的假设,但这是由于这一假设,使模型中需要学习的参数大大减少,因而朴素贝叶斯算法的效率较高,但是分类的性能不一定很高。
参考资料
- 统计学习方法
- Generative and discriminative classifiers: naive Bayes and logistic regression, 2005