假设我们有个特定的输入 x,我们想要 Inference 它的类别,我们可以通过 贝叶斯定理 中的后验概率最大的类作为 x 类的输入。
P(Y=ck∣X=x)=∑kP(X=x∣Y=ck)P(Y=ck)P(X=x∣Y=ck)P(Y=ck)
其中的 Y 即输入的类别。
所以分类器可以描述为
y=f(x)=argckmaxP(Y=ck∣X=x)
注意到该式 (1) 的分母对于所有的 ck 都是相同的。所以其核心是需要估计出条件概率分布:
P(X=x∣Y=ck)=P(X(1)=x(1),⋯,X(n)=x(n)∣Y=ck),k=1,2,⋯,K
这里 X⊆Rn ,所以 x(1) 表示第 i 维度上的值
以及先验概率分布:
P(Y=ck),k=1,2,⋯,K
但是条件概率有指数级数量的参数,事实上,假设 x(j) 可取值有 Sj 个,j=1,2,⋯,n,Y 可取值有 K 个,那么参数个数为 Kj=1∏nSj ^2c4383
而朴素贝叶斯对上面的 (3) 条件概率分布作出了条件独立性的假设,这是非常强的假设,朴素贝叶斯就此得名。具体的,条件独立性假设是
P(X=x∣Y=ck)=P(X(1)=x(1),⋯,X(n)=x(n)∣Y=ck)=j=1∏nP(X(j)=x(j)∣Y=ck)
条件独立假设等于是说用于分类的特征在类确定的条件下都是条件独立的。
在这样的假设下分类器 (2) 可以表示为:
y=argckmaxP(Y=ck)j∏P(X(j)=x(j)∣Y=ck)
极大似然估计
在朴素贝叶斯法中,学习意味着估计 P(Y=ck) 和 P(X(j)=x(j)∣Y=ck).我们可以使用 极大似然估计 估计相应的概率.
对于先验概率 P(Y=ck) 的极大似然估计是
P(Y=ck)=N∑i=1NI(yi=ck),k=1,2,⋯,K
我们想利用一大批数据 {y∈Y} 估计 Y=ck 的概率 P(Y=ck)
注意到对于每一个类可以视为二项分布,即
{P(Y=ck)=pP(Y=ck)=1−p引入指示函数可以简写为
P(I(Y,ck))=pI(1−p)1−I,I={1,Y=ck0,Y=ck所以对于那一批数据,我们需要
argpmaxL(p)=argpmaxy∈Y∏P(I(y,ck))⇒argpmaxy∈Y∑logP(I(y,ck))(Log Derivative Trick)=argpmaxy∈Y∑log(pI(1−p)(1−I))=argpmaxy=1∑logp+y=1∑log(1−p)比较麻烦的是这里的 ∑y=1logp,∑y=1log(1−p) 不是太好求导,我们令
n1=∑I(y=ck),n0=∑I(y=ck)即 y 等于 ck 的数量 n1 和 y 不等于 ck 的数量 n0,于是上式变换为
=argpmax(n1logp+n0log(1−p))我们对其求导,得到
∇pL=∂p∂(∑y∈Ylog(P(y=ck∣p)))=∂p∂(n1logp+n0log(1−p))=pn1−1−pn0求零点得到
p=n0+n1n1=N∑i=1NI(yi=ck)这就是先验概率的最大似然估计值
而对于条件概率的最大似然估计为
P(X(j)=ajl∣Y=ck)=∑j=1NI(yi=ck)∑i=1NI(xi(j)=ajl,yi=ck)
式中,xi(j) 是第 i 个样本的第 j 个特征;ajl 是第 j 个特征可能取的第 l 个值;
根据条件概率定义
P(X(j)=ajl∣Y=ck)=P(Y=ck)P(X(j)=ajl,Y=ck)我们已经求得 P(Y=ck),接下来求 P(X(j)=ajl,Y=ck) 的最大似然值:
同样的引入指示函数
L(P)=argpmaxx∈X∑log(pI(1−p)1−I),I={1,x(i)=ajl and Y=ck0,x(i)=ajl, or Y=ck=argpmax(n1logp+n0log(1−p)),n1=i=1∑N(I),n0=i=1∑N(1−I)