在前面的博文中,我们介绍了线性判别分析用于分类,在这篇博文中,我们介绍高斯判别分析。高斯判别分析也是一种用于分类的方法,在样本数据服从多元高斯分布以及类别标签(y)服从伯努利分布的假设条件下,然后再由贝叶斯公式求出一个新样本分别属于两类别的概率。
对于给定的数据集(D={(x_1,y_1),cdots,(x_N,y_N)}),其中(y_={1,0})。根据假设(y_i)服从伯努利分布,那么有如下公式成立
[p(y)=phi^y(1-phi)^{1-y}
]
其中(phi)表示$y_i=$0的概率值。另外两类样本数据集均服从高斯分布,且方差一样。那么可以将两个类别表示成如下
[x|y=1 sim N(u_1, Sigma)\
x|y=0 sim N(u_2,Sigma)
]
那么综合表达这两类样本成
[p(x|y)=[N(u_1,Sigma)]^y[N(u_2, Sigma)]^{1-y}
]
接下来的目标就是在目标准则下,求得高斯分布的参数,包括( heta=(phi,u_1,u_2,Sigma))。首先定义似然函数
[L( heta)= logPi_{i=1}^{N}p(x_i,y_i)
]
然后利用贝叶斯公式
[p(x,y)=p(x|y)p(y)
]
进而可以将似然函数表示成
[L( heta)=log Pi_{i=1}^{N}[p(x_i|y_i)p(y_i)]\
sum_{i=1}^{N}(log p(x_i|y_i)+log p(y_i))
]
那么参数( heta)可以通过最大化(L( heta))得到
[hat{ heta}=arg max_{ heta} L( heta)\
=arg max_ heta sum_{i=1}^{N}[log N(u_1,Sigma)^{y_i} + log N(u_2,Sigma)^{1-y_i}+log(phi^{y_i}(1-phi)^{1-y_i})]
]
可以看到(phi)只与后两项有关,让(L( heta))对(phi)求偏导,可以得到
[frac{partial L( heta)}{partial{phi}}=sum_{i=1}^{N}y_{i} frac{1}{phi}+(1-y_i)(-1)frac{1}{1-phi}=0
]
很容易得到
[phi = frac{1}{N}sum_{i=1}^{N}y_i
]
(u_1)的求解过程和(u_2)类似,因此只介绍求解(u_1)的过程。从(L( heta))的表达式可以知道(u_1,u_2)只与前两项有关系,首先让(L( heta))对(u_1)求偏导,得到
[frac{partial{L( heta)}}{partial{u_1}}=sum_{i=1}^{N}y_ilogfrac{1}{(2pi)^{p/2}lvertSigmalvert^{frac{1}{2}}}e^{-frac{1}{2}(x_i-u_1)^TSigma^{-1}(x_i-u_1)}
]
由于中间的分数项是一个常数,那么(u_1)的求解可以转成如下优化问题
[hat{u}_1=arg max_{u_1} sum_{i=1}^{N} y_i[-frac{1}{2}(x_u-u_1)^TSigma^{-1}(x_i-u_1)]
]
重新定义目标函数(l(u_1))如下
[l(u_1)=-frac{1}{2}sum_{i=1}^{N}y_i(x_i-u_1)^TSigma^{-1}(x_i-u_1)\
-frac{1}{2}sum_{i=1}^{N}y_i[x_i^{T}Sigma^{-1}x_i-2x_{i}^{T}Sigma^{-1}u_1+u_1^{T}Sigma_{-1}u_1]
]
上式对(u_1)求偏导,得到
[frac{partial{l(u_1)}}{partial{u_1}}=sum_{i=1}^{N}y_i[Sigma^{-1}x_i-Sigma^{-1}u_1]=0\
ightarrow hat{u}_1=frac{sum_{i=1}^{N}x_iy_i}{sum_{i=1}^{N}y_i}=frac{sum_{i=1}^{Nx_iy_i}}{N_1}
]
同理可得
[hat{u}_2=frac{sum_{i=1}^{N}x_iy_i}{N_2}
]
-
(Sigma)求解
为了求得(Sigma),我们首先将数据集分块,分成(c_1={x_i|y_i=1})和(c_2={x_i|y_i=0})其中(c_1)中的样本个数为(N_1),样本数据集(c_2)中的样本个数为(N_2)。而(Sigma)可以通过如下优化问题求解
[hat{Sigma}=arg max_{Sigma} sum_{i=1}^{N} y_ilog N(u_1, Sigma )+(1-y_i)log N(u_2, Sigma)\
=arg max_{Sigma} sum_{x_i in c_1}log (N(u_1, Sigma)) + sum_{x_i in c_2} log (N(u_2, Sigma))
]
至此已经完成了高斯判别分析中的所有的参数估计。