如果在我们的分类问题中,输入特征xx是连续型随机变量,高斯判别模型(Gaussian Discriminant Analysis,GDA)就可以派上用场了。
以二分类问题为例进行说明,模型建立如下:
- 样本输入特征为x∈Rnx∈Rn,其类别y∈{0,1}y∈{0,1};
- 样本类别yy服从参数为??的伯努力分布,即y∼Bernoulli(?)y∼Bernoulli(?);
- 两类样本分别服从不同的高斯分布,即x|y=0∼N(μ0,Σ),x|y=1∼N(μ1,Σ)x|y=0∼N(μ0,Σ),x|y=1∼N(μ1,Σ);
对应的概率分布形式如下:
p(y)=?y(1−?)1−y(1)(1)p(y)=?y(1−?)1−y
p(x|y=0)=1(2π)n2|Σ|12exp(−12(x−μ0)TΣ−1(x−μ0))(2)(2)p(x|y=0)=1(2π)n2|Σ|12exp?(−12(x−μ0)TΣ−1(x−μ0))
p(x|y=1)=1(2π)n2|Σ|12exp(−12(x−μ1)TΣ−1(x−μ1))(3)(3)p(x|y=1)=1(2π)n2|Σ|12exp?(−12(x−μ1)TΣ−1(x−μ1))
p(x|y)=1(2π)n2|Σ|12exp(−12(x−μy)TΣ−1(x−μy))(4)(4)p(x|y)=1(2π)n2|Σ|12exp?(−12(x−μy)TΣ−1(x−μy))
我们模型的参数包括?,μ0,μ1,Σ?,μ0,μ1,Σ。这里的两个高斯分布具有不同的均值μ0μ0和μ1μ1,但在实际应用中一般取相同的方差ΣΣ。
给定包含mm个样本的训练集S={(x(1),y(1)),(x(2),y(2)),?,(x(m),y(m))}S={(x(1),y(1)),(x(2),y(2)),?,(x(m),y(m))},似然函数形式如下:
L(?,μ0,μ1,Σ)=log∏mi=1p(x(i),y(i);?,μ0,μ1,Σ)=log∏mi=1p(x(i)|y(i);μ0,μ1,Σ)p(y(i);?)=∑mi=1logp(x(i)|y(i);μ0,μ1,Σ)+logp(y(i);?)=∑mi=1[−12(x(i)−μy(i))TΣ−1(x(i)−μy(i))−n2log(2π)−12log|Σ−1|+y(i)log?+(1−y(i))log(1−?)](5)(5)L(?,μ0,μ1,Σ)=log?∏i=1mp(x(i),y(i);?,μ0,μ1,Σ)=log?∏i=1mp(x(i)|y(i);μ0,μ1,Σ)p(y(i);?)=∑i=1mlog?p(x(i)|y(i);μ0,μ1,Σ)+log?p(y(i);?)=∑i=1m[−12(x(i)−μy(i))TΣ−1(x(i)−μy(i))−n2log?(2π)−12log?|Σ−1|+y(i)log??+(1−y(i))log?(1−?)]
通过最大似然进行参数估计,用似然函数LL对各个参数求偏导:
∂L(?,μ0,μ1,Σ)∂?=∂∂?∑mi=1[y(i)log?+(1−y(i))log(1−?)]=∑mi=1y(i)?−1−y(i)1−?=∑mi=1y(i)−??(1−?)=0⇒?=∑mi=1y(i)m=∑mi=11{y(i)=1}m(6)(6)∂L(?,μ0,μ1,Σ)∂?=∂∂?∑i=1m[y(i)log??+(1−y(i))log?(1−?)]=∑i=1my(i)?−1−y(i)1−?=∑i=1my(i)−??(1−?)=0⇒?=∑i=1my(i)m=∑i=1m1{y(i)=1}m
∂L(?,μ0,μ1,Σ)∂μ0=∂∂?∑mi=1[−121{y(i)=0}(x(i)−μ0)TΣ−1(x(i)−μ0)]=∂∂μ0∑mi=1−121{y(i)=0}⋅Tr[μT0Σ−1μ0−μT0Σ−1x(i)−(x(i))TΣ−1μ0]=∑mi=11{y(i)=0}Σ−1(x(i)−μ0)=0⇒μ0=∑mi=11{y(i)=0}x(i)∑mi=11{y(i)=0}(7)(7)∂L(?,μ0,μ1,Σ)∂μ0=∂∂?∑i=1m[−121{y(i)=0}(x(i)−μ0)TΣ−1(x(i)−μ0)]=∂∂μ0∑i=1m−121{y(i)=0}⋅Tr[μ0TΣ−1μ0−μ0TΣ−1x(i)−(x(i))TΣ−1μ0]=∑i=1m1{y(i)=0}Σ−1(x(i)−μ0)=0⇒μ0=∑i=1m1{y(i)=0}x(i)∑i=1m1{y(i)=0}
同理,可得
μ1=∑mi=11{y(i)=1}x(i)∑mi=11{y(i)=1}(8)(8)μ1=∑i=1m1{y(i)=1}x(i)∑i=1m1{y(i)=1}
∂L(?,μ0,μ1,Σ)∂Σ=∂∂Σ[−12(x(i)−μy(i))TΣ−1(x(i)−μy(i))−12log|Σ|]=∑mi=112[(Σ−1(x(i)−μy(i))(x(i)−μy(i))TΣ−1)T−(Σ−1)T]=12∑mi=1(x(i)−μy(i))(x(i)−μy(i))T−Σ=0⇒Σ=1m(x(i)−μy(i))(x(i)−μy(i))T(9)(9)∂L(?,μ0,μ1,Σ)∂Σ=∂∂Σ[−12(x(i)−μy(i))TΣ−1(x(i)−μy(i))−12log?|Σ|]=∑i=1m12[(Σ−1(x(i)−μy(i))(x(i)−μy(i))TΣ−1)T−(Σ−1)T]=12∑i=1m(x(i)−μy(i))(x(i)−μy(i))T−Σ=0⇒Σ=1m(x(i)−μy(i))(x(i)−μy(i))T
仔细分析一下估计出的四个参数,我们会发现??就是在训练集上统计出的y=1y=1的样本出现的概率,μ0μ0和μ1μ1则分别为两类样本各自的均值,ΣΣ为整个训练集上的样本方差。
有了这些参数,我们怎样进行预测呢?这就很简单了,将各参数带入p(x|y)p(x|y)和p(y)p(y),利用p(x|y)p(y)=p(x,y)p(x|y)p(y)=p(x,y)可导出联合概率,我们取使联合概率p(x,y)p(x,y)最大的类别yy即可
argmaxy∈{0,1}p(x|y)p(y)(10)(10)argmaxy∈{0,1}p(x|y)p(y)
最后,我们来分析高斯判别模型和Logistic回归之间的情缘。如果x|yx|y服从高斯分布N(μ,Σ)N(μ,Σ)(只针对yy取两个离散值的情况),则p(y|x)p(y|x)具有logistic函数的形式;反过来,p(y|x)p(y|x)形式上为logistic函数并不能说明x|y∼N(μ,Σ)x|y∼N(μ,Σ)。实际上,有很多组假设都能使p(y|x)p(y|x)有logistic函数的形式,只要假设满足x|yx|y服从指数族分布(Exponential Family Distribution)。例如,x|y=0∼Poisson(λ0)x|y=0∼Poisson(λ0)和x|y=1∼Poisson(λ1)x|y=1∼Poisson(λ1),则p(y|x)p(y|x)在形式上同样为logistic函数。以高斯判别分析为例,简单证明一下:
====p(y=1|x)p(x|y=1)p(y=1)p(x|y=1)p(y=1)+p(x|y=0)p(y=0)exp(−12(x−μ1)TΣ−1(x−μ1))?exp(−12(x−μ1)TΣ−1(x−μ1))?+exp(−12(x−μ0)TΣ−1(x−μ0))(1−?)11+exp(12(x−μ1)TΣ−1(x−μ1)−12(x−μ0)TΣ−1(x−μ0))1−??11+exp(xTΣ−1(μ0−μ1)+12μT1Σ−1μ1−12μT0Σ−1μ0+log(1−?)−log?)(11)(11)p(y=1|x)=p(x|y=1)p(y=1)p(x|y=1)p(y=1)+p(x|y=0)p(y=0)=exp?(−12(x−μ1)TΣ−1(x−μ1))?exp?(−12(x−μ1)TΣ−1(x−μ1))?+exp?(−12(x−μ0)TΣ−1(x−μ0))(1−?)=11+exp?(12(x−μ1)TΣ−1(x−μ1)−12(x−μ0)TΣ−1(x−μ0))1−??=11+exp?(xTΣ−1(μ0−μ1)+12μ1TΣ−1μ1−12μ0TΣ−1μ0+log?(1−?)−log??)
高斯判别分析 Gaussian Discriminant Analysis