zoukankan      html  css  js  c++  java
  • 机器学习-高斯判别分析

    在前面的博文中,我们介绍了线性判别分析用于分类,在这篇博文中,我们介绍高斯判别分析。高斯判别分析也是一种用于分类的方法,在样本数据服从多元高斯分布以及类别标签(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)

    可以看到(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)的求解过程和(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)) ]


    至此已经完成了高斯判别分析中的所有的参数估计。

  • 相关阅读:
    [BZOJ4631]踩气球
    [BZOJ1998][Hnoi2010]Fsk物品调度
    [BZOJ3624][Apio2008]免费道路
    [BZOJ1064][Noi2008]假面舞会
    [BZOJ4154][Ipsc2015]Generating Synergy
    [BZOJ1941][Sdoi2010]Hide and Seek
    [BZOJ2850]巧克力王国
    [BZOJ2683][BZOJ4066]简单题
    万年历(calendar)
    SACD ISO镜像中提取DSDIFF(DFF)、DSF文件
  • 原文地址:https://www.cnblogs.com/tingweichen/p/12800728.html
Copyright © 2011-2022 走看看