• 机器学习-高斯判别分析


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


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

  • 相关阅读:
    API网络数据安全
    【值得收藏】一文掌握用户画像系统构建全流程
    手把手教你从0到1学会tensorflow进行模型训练,并能在网页轻松运行
    APP选择第三方消息推送平台时,有哪些需要关注的重要性能指标?
    如何防薅羊毛?个推基于大数据风控引擎助力APP反欺诈!
    微信为什么要搞一个小游戏?
    关于 JS 模块化的最佳实践总结
    张小龙2019微信公开课15个看点总结
    编程:从前有一个傻呆程序员,老婆交给他一项任务,他办了四次才满意
    JS是如何计算 1+1=2 的?
  • 原文地址:https://www.cnblogs.com/tingweichen/p/12800728.html
Copyright © 2020-2023  润新知