最近看了一些NLP的论文,发现对于基础的机器学习算法还不是很熟悉,决定现在来补一下,通过看网上的一些博客和李航的《统计学习方法》来学习一些最基础的机器学习算法。
朴素贝叶斯法
朴素贝叶斯(naive bayes)法是基于贝叶斯定理与特征条件独立假设的一种分类方法,首先介绍一下贝叶斯公式。
贝叶斯公式
贝叶斯公式在概率论的课上是一个非常基础的公式,也是一个非常简单但有用的公式,这个定理解决了现实生活里经常遇到的问题:已知某条件概率,如何得到两个事件交换后的概率,也就是在已知P(A|B)的情况下如何求得P(B|A)。公式如下:P(A∣B)⋅P(B))P(A)\frac{P(A|B)\cdot P(B))}{P(A)}P(A)P(A∣B)⋅P(B))
或者
朴素贝叶斯的原理与流程
朴素贝叶斯的思想真的非常“朴素”,我们要对某个问题进行分类,当我们知道了他具有的某个特征,求出他在具有这个特征的条件下属于某一类的概率,对比所有类别的概率,最大的那一类就是我们的结果。
我们要求的是在已知某一特征X=x的条件下属于某类Y=CkY=C_{k}Y=Ck的概率,即P(Y=Ck∣X=x)P(Y=C_{k}|X=x)P(Y=Ck∣X=x),由贝叶斯公式可得:P(Y=Ck∣X=x)=P(Y=Ck)⋅P(X=x∣Y=Ck)∑kP(Y=Ck)⋅P(X=x∣Y=Ck)……(1)P(Y=C_{k}|X=x)=\frac{P(Y=C_{k})\cdot P(X=x|Y=C_{k})}{\sum_{k}P(Y=C_{k})\cdot P(X=x|Y=C_{k})} ……(1)P(Y=Ck∣X=x)=∑kP(Y=Ck)⋅P(X=x∣Y=Ck)P(Y=Ck)⋅P(X=x∣Y=Ck)……(1)
朴素贝叶斯法对条件概率分布作了条件独立性假设,即用于分类的特征在类确定的条件下都是条件独立的。即P(X=x∣Y=Ck)=P(X(1)=x(1),...,X(n)=x(n)∣Y=Ck)=∏j=1nP(Xj=xj∣Y=Ck)……(2)P(X=x|Y=C_{k})=P(X^{(1)}=x^{(1)},...,X^{(n)}=x^{(n)}|Y=C_{k})=\prod_{j=1}^{n}P(X^{j}=x^{j}|Y=C_{k})……(2)P(X=x∣Y=Ck)=P(X(1)=x(1),...,X(n)=x(n)∣Y=Ck)=j=1∏nP(Xj=xj∣Y=Ck)……(2)
(2)代入(1)式
P(Y=Ck∣X=x)=P(Y=Ck)⋅∏j=1nP(Xj=xj∣Y=Ck)∑kP(Y=Ck)⋅∏j=1nP(Xj=xj∣Y=Ck)……(3)P(Y=C_{k}|X=x)=\frac{P(Y=C_{k})\cdot \prod_{j=1}^{n}P(X^{j}=x^{j}|Y=C_{k})}{\sum_{k}P(Y=C_{k})\cdot \prod_{j=1}^{n}P(X^{j}=x^{j}|Y=C_{k})}……(3)P(Y=Ck∣X=x)=∑kP(Y=Ck)⋅∏j=1nP(Xj=xj∣Y=Ck)P(Y=Ck)⋅∏j=1nP(Xj=xj∣Y=Ck)……(3)
由于(3)式中的分母对于所有的CkC_{k}Ck都相同,所以,y=argmaxCkP(Y=Ck)∏jP(X(j)=x(j)∣Y=Ck)y=arg max_{C_{k}}P(Y=C_{k})\prod_{j}P(X^{(j)}=x^{(j)}|Y=C_{k})y=argmaxCkP(Y=Ck)j∏P(X(j)=x(j)∣Y=Ck)
根据以上分析,朴素贝叶斯的计算流程可以归结为下图(转自https://www.cnblogs.com/leoo2sk/archive/2010/09/17/naive-bayesian-classifier.html)