zoukankan      html  css  js  c++  java
  • Gaussian Discriminant Analysis

    如果在我们的分类问题中,输入特征$x$是连续型随机变量,高斯判别模型(Gaussian Discriminant Analysis,GDA)就可以派上用场了。

    以二分类问题为例进行说明,模型建立如下:

    1. 样本输入特征为(xinmathbb{R}^n),其类别(yin{0,1});
    2. 样本类别(y)服从参数为(phi)的伯努力分布,即(ysim Bernoulli(phi));
    3. 两类样本分别服从不同的高斯分布,即(x|y=0simmathcal{N}(mu_0,Sigma),x|y=1simmathcal{N}(mu_1,Sigma));

    对应的概率分布形式如下:
    egin{equation}
    p(y)=phi^y(1-phi)^{1-y}
    end{equation}
    egin{equation}
    p(x|y=0)=frac{1}{(2pi)^{frac{n}{2}}|Sigma|^{frac{1}{2}}}exp(-frac{1}{2}(x-mu_0)^TSigma^{-1}(x-mu_0))
    end{equation}
    egin{equation}
    p(x|y=1)=frac{1}{(2pi)^{frac{n}{2}}|Sigma|^{frac{1}{2}}}exp(-frac{1}{2}(x-mu_1)^TSigma^{-1}(x-mu_1))
    end{equation}
    egin{equation}
    p(x|y)=frac{1}{(2pi)^{frac{n}{2}}|Sigma|^{frac{1}{2}}}exp(-frac{1}{2}(x-mu_y)^TSigma^{-1}(x-mu_y))
    end{equation}

    我们模型的参数包括(phi,mu_0,mu_1,Sigma)。这里的两个高斯分布具有不同的均值(mu_0)和(mu_1),但在实际应用中一般取相同的方差(Sigma)。

    给定包含(m)个样本的训练集(mathcal{S}={(x^{(1)},y^{(1)}),(x^{(2)},y^{(2)}),cdots,(x^{(m)},y^{(m)})}),似然函数形式如下:
    egin{equation}
    egin{array}{ll}
    &quadmathcal{L}(phi,mu_0,mu_1,Sigma)\
    &=logprod_{i=1}^m p(x^{(i)},y^{(i)};phi,mu_0,mu_1,Sigma)\
    &=logprod_{i=1}^m p(x^{(i)}|y^{(i)};mu_0,mu_1,Sigma)p(y^{(i)};phi)\
    &=sum_{i=1}^mlog p(x^{(i)}|y^{(i)};mu_0,mu_1,Sigma)+log p(y^{(i)};phi)\
    &=sum_{i=1}^mleft[-frac{1}{2}(x^{(i)}-mu_{y^{(i)}})^TSigma^{-1}(x^{(i)}-mu_{y^{(i)}}) ight.\
    &quadleft.-frac{n}{2}log(2pi)-frac{1}{2}log|Sigma^{-1}|+y^{(i)}logphi ight.\
    &quadleft.+(1-y^{(i)})log(1-phi) ight]
    end{array}
    end{equation}

    通过最大似然进行参数估计,用似然函数(mathcal{L})对各个参数求偏导:
    egin{equation}
    egin{array}{ll}
    &quadfrac{partialmathcal{L}(phi,mu_0,mu_1,Sigma)}{partialphi}\
    &=frac{partial}{partialphi}sum_{i=1}^mleft[y^{(i)}logphi+(1-y^{(i)})log(1-phi) ight]\
    &=sum_{i=1}^mfrac{y^{(i)}}{phi}-frac{1-y^{(i)}}{1-phi}\
    &=sum_{i=1}^mfrac{y^{(i)}-phi}{phi(1-phi)}=0\
    &Rightarrow phi=frac{sum_{i=1}^my^{(i)}}{m}=frac{sum_{i=1}^m1{y^{(i)}=1}}{m}
    end{array}
    end{equation}
    egin{equation}
    egin{array}{ll}
    &quadfrac{partialmathcal{L}(phi,mu_0,mu_1,Sigma)}{partialmu_0}\
    &=frac{partial}{partialphi}sum_{i=1}^mleft[-frac{1}{2}1{y^{(i)}=0}(x^{(i)}-mu_{0})^TSigma^{-1}(x^{(i)}-mu_{0}) ight]\
    &=frac{partial}{partialmu_0}sum_{i=1}^m-frac{1}{2}1{y^{(i)}=0}\
    &quadcdot Tr[mu_0^TSigma^{-1}mu_0-mu_0^TSigma^{-1}x^{(i)}-(x^{(i)})^TSigma^{-1}mu_0]\
    &=sum_{i=1}^m1{y^{(i)}=0}Sigma^{-1}(x^{(i)}-mu_0)=0\
    &Rightarrow mu_0=frac{sum_{i=1}^m1{y^{(i)}=0}x^{(i)}}{sum_{i=1}^m1{y^{(i)}=0}}
    end{array}
    end{equation}
    同理,可得
    egin{equation}
    mu_1=frac{sum_{i=1}^m1{y^{(i)}=1}x^{(i)}}{sum_{i=1}^m1{y^{(i)}=1}}
    end{equation}
    egin{equation}
    egin{array}{ll}
    &quadfrac{partialmathcal{L}(phi,mu_0,mu_1,Sigma)}{partialSigma}\
    &=frac{partial}{partialSigma}[-frac{1}{2}(x^{(i)}-mu_{y^{(i)}})^TSigma^{-1}(x^{(i)}-mu_{y{(i)}})-frac{1}{2}log|Sigma|]\
    &=sum_{i=1}^mfrac{1}{2}[left(Sigma^{-1}(x^{(i)}-mu_{y^{(i)}})(x^{(i)}-mu_{y^{(i)}})^TSigma^{-1} ight)^T-(Sigma^{-1})^T]\
    &=frac{1}{2}sum_{i=1}^m(x^{(i)}-mu_{y^{(i)}})(x^{(i)}-mu_{y^{(i)}})^T-Sigma=0\
    &Rightarrow Sigma=frac{1}{m}(x^{(i)}-mu_{y^{(i)}})(x^{(i)}-mu_{y^{(i)}})^T
    end{array}
    end{equation}

    仔细分析一下估计出的四个参数,我们会发现$phi$就是在训练集上统计出的(y=1)的样本出现的概率,(mu_0)和(mu_1)则分别为两类样本各自的均值,(Sigma)为整个训练集上的样本方差。

    有了这些参数,我们怎样进行预测呢?这就很简单了,将各参数带入(p(x|y))和(p(y)),利用(p(x|y)p(y)=p(x,y))可导出联合概率,我们取使联合概率(p(x,y))最大的类别(y)即可
    egin{equation}
    underset{yin{0,1}}{argmax}{;p(x|y)p(y)}
    end{equation}

    最后,我们来分析高斯判别模型和Logistic回归之间的情缘。如果(x|y)服从高斯分布(mathcal{N}(mu,Sigma))(只针对(y)取两个离散值的情况),则(p(y|x))具有logistic函数的形式;反过来,(p(y|x))形式上为logistic函数并不能说明(x|ysimmathcal{N}(mu,Sigma))。实际上,有很多组假设都能使(p(y|x))有logistic函数的形式,只要假设满足(x|y)服从指数族分布(Exponential Family Distribution)。例如,(x|y=0sim Poisson(lambda_0))和(x|y=1sim Poisson(lambda_1)),则(p(y|x))在形式上同样为logistic函数。以高斯判别分析为例,简单证明一下:
    egin{equation}
    egin{array}{ll}
    &p(y=1|x)\
    =&frac{p(x|y=1)p(y=1)}{p(x|y=1)p(y=1)+p(x|y=0)p(y=0)}\
    =&frac{expleft(-frac{1}{2}(x-mu_1)^TSigma^{-1}(x-mu_1) ight)phi}{expleft(-frac{1}{2}(x-mu_1)^TSigma^{-1}(x-mu_1) ight)phi+expleft(-frac{1}{2}(x-mu_0)^TSigma^{-1}(x-mu_0) ight)(1-phi)}\
    =&frac{1}{1+expleft(frac{1}{2}(x-mu_1)^TSigma^{-1}(x-mu_1)-frac{1}{2}(x-mu_0)^TSigma^{-1}(x-mu_0) ight)frac{1-phi}{phi}}\
    =&frac{1}{1+expleft(x^TSigma^{-1}(mu_0-mu_1)+frac{1}{2}mu_1^TSigma^{-1}mu_1-frac{1}{2}mu_0^TSigma^{-1}mu_0+log(1-phi)-logphi ight)}
    end{array}
    end{equation}

    高斯判别分析在建模时提出了很强的假设,那就是各个类别的数据服从高斯分布。当建模的假设近似正确时,高斯判别分析对数据的应用更高效,因为模型知道数据服从高斯分布,并且直接获取了高斯分布的均值和方差,因此在数据量较少的情形下能有较好效果。如果数据的实际分布与假设相悖时,效果往往会比较差。Logistic回归做出的模型假设相比之下很弱,因此对模型的假设具有更好的鲁棒性。举个例子,如果数据呈现的不是高斯分布而是Poisson分布,但是我们仍然假设(x|y)服从高斯分布,这时logistic回归的性能仍然会很好。原因很简单,不管(x|y)是服从高斯分布还是Poisson分布,(p(y=1|x))最终都可以简化成logistic函数的形式。但如果我们采用GDA在非高斯分布的数据上用高斯模型拟合,就无法保证能取得较好的结果。在我们不确定(x|y)的概率分布的情况下,用logistic回归更稳妥,也是基于这个原因,logistic回归实际上用得更多一些。

    以下是GDA相关实验的一个小Demo截图和简要说明,实验代码在这里下载。实验中用两个均值不同但方差相同的高斯模型随机生成了400个1维的样本点,其中两类样本之比为(3:2),而且两类样本见存在重叠;将整个数据集拆分成容量为(9:1)的两部分,前者作为训练集,后者作为测试集。横坐标上的蓝色和绿色点表示两类样本;蓝色和绿色曲线标明了整个训练集属于两类的概率;红色曲线则表明了(p(y=1|x))的值,从实验角度证明(p(y=1|x))形式上为logistic函数。在生成下图的这次运行实例中,正确分类率为(0.975)。

  • 相关阅读:
    Mybatis中的like模糊查询
    Cookie
    架构师的自我修养
    微服务要面临的问题
    为啥要去IOE——分布式架构的由来
    分层架构设计
    如何选开源协议
    中国互联网20年简史
    2018第27周总结
    保住本金,安全第一
  • 原文地址:https://www.cnblogs.com/jeromeblog/p/3395013.html
Copyright © 2011-2022 走看看