高斯判别分析 - CSDN
精华内容
参与话题
  •   高斯判别分析(GDA)是经典的生成学习模型,也是一种监督分类学习算法。假设有样本集D={(x1,y1),(x2,y2),...,(xn,yn)}D=\{(x_1,y_1),(x_2,y_2),...,(x_n,y_n)\}D={(x1​,y1​),(x2​,y2​),...,(xn​,yn​)},其中...

      高斯判别分析(GDA)是经典的生成学习模型,也是一种监督分类学习算法。
      假设有样本集D={(x1,y1),(x2,y2),...,(xn,yn)}D=\{(x_1,y_1),(x_2,y_2),...,(x_n,y_n)\},其中xiRd,yi{0,1}x_i \in R^d,y_i \in \{0,1\}。高斯判别分析作为生成学习算法,同样也是对联合概率P(x,y)P(x,y)建模,在GDA模型中首先假设:
    yBernoulli(ϕ)xy=0N(μ0,Σ)xy=1N(μ1,Σ)y \sim Bernoulli(\phi) \\ x|y=0 \sim N(\mu_0,\Sigma) \\ x|y=1 \sim N(\mu_1,\Sigma)
    其概率分布:
    p(y)=ϕy(1ϕ)1yp(xy=0)=1(2π)d2Σ12exp(12(xμ0)TΣ1(xμ0))p(xy=1)=1(2π)d2Σ12exp(12(xμ1)TΣ1(xμ1)) p(y)= \phi^y(1- \phi)^{1-y} \\ p(x|y=0) = \frac{1}{(2\pi)^{\frac d2} |\Sigma|^{\frac12}} exp \left(-\frac 12 (x - \mu_0)^T \Sigma^{-1} (x - \mu_0) \right) \\ p(x|y=1) = \frac{1}{(2\pi)^{\frac d2} |\Sigma|^{\frac12}} exp \left(-\frac 12 (x - \mu_1)^T \Sigma^{-1} (x - \mu_1) \right)
    在样本集D上的对数似然函数:
    l(ϕ,μ0,μ1,Σ)=logi=1mP(xi,yi;ϕ,μ0,μ1,Σ)=logi=1mP(xiyi;μ0,μ1,Σ)P(yi;ϕ)=i=1mlogP(xiyi;μ0,μ1,Σ)+logP(yi;ϕ)=i=1mlogP(xiyi=0;μ0,Σ)1yiP(xiyi=1;μ1,Σ)yi+logP(yi;ϕ)=i=1m(1yi)logP(xiyi=0;μ0,Σ)+yilogP(xiyi=1;μ1,Σ)+logP(yi;ϕ)=i=1m(1yi)[d2log2π12logΣ12(xμ0)TΣ1(xμ0)]+yi[d2log2π12logΣ12(xμ1)TΣ1(xμ1)]+logϕy(1ϕ)1y\begin{aligned} l(\phi, \mu_0 ,\mu_1 ,\Sigma) &= log \prod_{i=1}^m P(x_i,y_i;\phi, \mu_0 ,\mu_1 ,\Sigma) \\ & = log \prod_{i=1}^m P(x_i|y_i;\mu_0 ,\mu_1 ,\Sigma)P(y_i;\phi) \\ & = \sum_{i=1}^m logP(x_i|y_i;\mu_0 ,\mu_1 ,\Sigma) + log P(y_i;\phi) \\ & = \sum_{i=1}^m logP(x_i|y_i=0;\mu_0 ,\Sigma)^{1-y_i} P(x_i|y_i=1;\mu_1 ,\Sigma)^{y_i} + log P(y_i;\phi) \\ & = \sum_{i=1}^m (1-y_i)logP(x_i|y_i=0;\mu_0 ,\Sigma) + y_i log P(x_i|y_i=1;\mu_1 ,\Sigma) + log P(y_i;\phi) \\ & = \sum_{i=1}^m (1-y_i)[-\frac d2log 2\pi - \frac12 log|\Sigma| - \frac 12 (x - \mu_0)^T \Sigma^{-1} (x - \mu_0)] \\ & \qquad + y_i[-\frac d2log 2\pi - \frac12 log|\Sigma| - \frac 12 (x - \mu_1)^T \Sigma^{-1} (x - \mu_1)] + log \phi^y(1- \phi)^{1-y} \end{aligned}
    在计算似然函数的最大值我们先了解几个公式:

    trABC=trCAB=trBCAtrAXX=trXAX=ATuTvx=uvx=uxv+vxulogXX=1XX(X1)TXX=(X1)TtrX1AX=(X1)TAT(X1)TtrABC=trCAB = tr BCA \\ \frac{\partial trAX}{ \partial X}=\frac{\partial trXA}{ \partial X} =A^T \\ \frac{\partial u^Tv}{\partial x} = \frac{\partial uv}{\partial x} = \frac{\partial u}{\partial x}v+\frac{\partial v}{\partial x}u \\ \frac{\partial log|X|}{\partial X} =\frac{1}{|X|}|X|(X^{-1})^T \\ \frac{\partial |X|}{\partial X} = (X^{-1})^T \\ \frac{\partial trX^{-1}A}{\partial X} = -(X^{-1})^TA^T(X^{-1})^T

    我们通过最大似然函数估计参数:
    l(ϕ,μ0,μ1,Σ)ϕ=i=1mlogϕyi(1ϕ)1yiϕ=i=1myilogϕ+(1yi)log(1ϕ)ϕ=i=1myiϕ1yi1ϕ=i=1myiϕϕ(1ϕ)=0i=1myiϕ=0i=1myi=i=1mϕ=mϕϕ=i=1mI(yi=1)m\begin{aligned} \frac{\partial l(\phi, \mu_0 ,\mu_1 ,\Sigma) }{ \partial \phi} & = \frac{ \partial \sum_{i=1}^m log \phi^{y_i}(1- \phi)^{1-y_i}}{\partial \phi} \\ & = \frac{ \partial \sum_{i=1}^m y_i log \phi + (1-y_i)log(1- \phi) }{ \partial \phi } \\ & = \sum_{i=1}^m \frac {y_i}{\phi} - \frac{ 1-y_i }{ 1- \phi } = \sum_{i=1}^m \frac{y_i - \phi}{\phi (1- \phi)} = 0 \\ & \Rightarrow \sum_{i=1}^m y_i - \phi = 0 \Rightarrow \sum_{i=1}^m y_i = \sum_{i=1}^m \phi = m \phi \\ \phi & = \frac{ \sum_{i=1}^m I(y_i=1) }{m} \end{aligned}
    l(ϕ,μ0,μ1,Σ)μ0=i=1m(1yi)[12(xiμ0)TΣ1(xiμ0)]μ0=i=1m12(1yi)[(xiμ0)μ0Σ1(xiμ0)+Σ1(xiμ0)μ0(xiμ0)]=i=1m12(1yi)[Σ1(xiμ0)(Σ1)T(xiμ0)]=i=1m(1yi)Σ1(xiμ0)=0i=1m(1yi)ΣΣ1(xiμ0)=0Σi=1m(1yi)(xiμ0)=0μ0=i=1mI(yi=0)xim\begin{aligned} \frac{\partial l(\phi, \mu_0 ,\mu_1 ,\Sigma) }{ \partial \mu_0} & = \frac{ \partial \sum_{i=1}^m (1-y_i)[ - \frac 12 (x_i - \mu_0)^T \Sigma^{-1} (x_i - \mu_0) ]}{\partial \mu_0} \\ & = \sum_{i=1}^m - \frac 12 (1-y_i) [ \frac{\partial (x_i - \mu_0)}{\partial \mu_0} \Sigma^{-1} (x_i - \mu_0) + \frac{\partial \Sigma^{-1} (x_i - \mu_0) }{\partial \mu_0} (x_i - \mu_0)] \\ & = \sum_{i=1}^m - \frac 12 (1-y_i) [- \Sigma^{-1} (x_i - \mu_0) - (\Sigma_{-1})^T (x_i - \mu_0)] \\ & = \sum_{i=1}^m (1-y_i) \Sigma^{-1} (x_i - \mu_0) = 0 \\ & \Rightarrow \sum_{i=1}^m (1-y_i) \Sigma \Sigma^{-1} (x_i - \mu_0) = 0 \Sigma \Rightarrow \sum_{i=1}^m (1-y_i) (x_i - \mu_0) =0 \\ \mu_0 & = \frac{ \sum_{i=1}^m I(y_i=0) x_i}{m} \end{aligned}
    l(ϕ,μ0,μ1,Σ)μ1=i=1myi[12(xiμ1)TΣ1(xiμ1)]μ1=i=1m12yi[(xiμ1)μ1Σ1(xiμ1)+Σ1(xiμ1)μ1(xiμ1)]=i=1m12yi[Σ1(xiμ1)(Σ1)T(xiμ1)]=i=1myiΣ1(xiμ1)=0i=1myiΣΣ1(xiμ1)=0Σi=1myi(xiμ1)=0μ1=i=1mI(yi=1)xim\begin{aligned} \frac{\partial l(\phi, \mu_0 ,\mu_1 ,\Sigma) }{ \partial \mu_1} & = \frac{ \partial \sum_{i=1}^m y_i[ - \frac 12 (x_i - \mu_1)^T \Sigma^{-1} (x_i - \mu_1) ] }{\partial \mu_1} \\ & = \sum_{i=1}^m - \frac 12 y_i [ \frac{\partial (x_i - \mu_1)}{\partial \mu_1} \Sigma^{-1} (x_i - \mu_1) + \frac{\partial \Sigma^{-1} (x_i - \mu_1) }{\partial \mu_1} (x_i - \mu_1)] \\ & = \sum_{i=1}^m - \frac 12 y_i [- \Sigma^{-1} (x_i - \mu_1) - (\Sigma^{-1})^T (x_i - \mu_1)] \\ & = \sum_{i=1}^m y_i \Sigma^{-1} (x_i - \mu_1) = 0 \\ & \Rightarrow \sum_{i=1}^m y_i \Sigma \Sigma^{-1} (x_i - \mu_1) = 0 \Sigma \Rightarrow \sum_{i=1}^m y_i (x_i - \mu_1) =0 \\ \mu_1 & = \frac{ \sum_{i=1}^m I(y_i=1) x_i}{m} \end{aligned}

    l(ϕ,μ0,μ1,Σ)Σ=i=1myi[12(xiμ1)TΣ1(xiμ1)]Σ+i=1m(1yi)[12(xiμ0)TΣ1(xiμ0)]Σ+i=1m12logΣΣ=i=1myitr[12(xiμ1)TΣ1(xiμ1)]Σ+(1yi)tr[12(xiμ0)TΣ1(xiμ0)]Σ+i=1m(12logΣ)Σ=i=1m12yitr[Σ1(xiμ1)(xiμ1)T]Σ12(1yi)tr[Σ1(xiμ0)(xiμ0)T]Σ+i=1m121ΣΣ(Σ1)T=i=1m12yi[(Σ1)T((xiμ1)(xiμ1)T)T(Σ1)T]12(1yi)[(Σ1)T((xiμ0)(xiμ0)T)T(Σ1)T]12m(Σ1)T=i=1m12yi[Σ1(xiμ1)(xiμ1)TΣ1]12(1yi)[Σ1(xiμ0)(xiμ0)TΣ1]12mΣ1=0i=1m12yi[ΣΣ1(xiμ1)(xiμ1)TΣΣ1]12(1yi)[ΣΣ1(xiμ0)(xiμ0)TΣΣ1]12mΣΣ1Σ=Σ0Σi=1m12yi[(xiμ1)(xiμ1)T]12(1yi)[(xiμ0)(xiμ0)T]12mΣ=0i=1myi[(xiμ1)(xiμ1)T]+(1yi)[(xiμ0)(xiμ0)T]mΣ=0Σ=i=1myi[(xiμ1)(xiμ1)T]+(1yi)[(xiμ0)(xiμ0)T]m\begin{aligned} \frac{\partial l(\phi, \mu_0 ,\mu_1 ,\Sigma) }{ \partial \Sigma} & = \frac{ \partial \sum_{i=1}^m y_i[ - \frac 12 (x_i - \mu_1)^T \Sigma^{-1} (x_i - \mu_1) ]}{\partial \Sigma} + \frac{ \partial \sum_{i=1}^m (1-y_i) [ - \frac 12 (x_i - \mu_0)^T \Sigma^{-1} (x_i - \mu_0) ]}{\partial \Sigma} + \frac{ \partial \sum_{i=1}^m - \frac 12 log| \Sigma| }{ \partial \Sigma } \\ & = \sum_{i=1}^m y_i \frac{ \partial tr[ - \frac 12 (x_i - \mu_1)^T \Sigma^{-1} (x_i - \mu_1) ]}{\partial \Sigma} + (1-y_i) \frac{ \partial tr[ - \frac 12 (x_i - \mu_0)^T \Sigma^{-1} (x_i - \mu_0) ]}{\partial \Sigma} + \sum_{i=1}^m \frac{ \partial (- \frac 12 log| \Sigma| ) }{ \partial \Sigma } \\ & = \sum_{i=1}^m - \frac 12 y_i \frac{ \partial tr[ \Sigma^{-1} (x_i - \mu_1)(x_i - \mu_1)^T ]}{\partial \Sigma} - \frac 12 (1-y_i) \frac{ \partial tr[ \Sigma^{-1} (x_i - \mu_0)(x_i - \mu_0)^T ]}{\partial \Sigma} + \sum_{i=1}^m - \frac 12 \frac{1}{|\Sigma|} |\Sigma| (\Sigma^{-1})^T \\ & = \sum_{i=1}^m - \frac 12 y_i [- (\Sigma^{-1})^T( (x_i - \mu_1)(x_i - \mu_1)^T)^T (\Sigma^{-1})^T] - \frac 12 (1-y_i) [- (\Sigma^{-1})^T( (x_i - \mu_0)(x_i - \mu_0)^T)^T (\Sigma^{-1})^T] - \frac 12 m (\Sigma^{-1})^T\\ & = \sum_{i=1}^m - \frac 12 y_i [- \Sigma^{-1} (x_i - \mu_1)(x_i - \mu_1)^T \Sigma^{-1}] - \frac 12 (1-y_i) [- \Sigma^{-1} (x_i - \mu_0)(x_i - \mu_0)^T \Sigma^{-1}] - \frac 12 m \Sigma^{-1} =0\\ & \Rightarrow \sum_{i=1}^m - \frac 12 y_i [- \Sigma \Sigma^{-1} (x_i - \mu_1)(x_i - \mu_1)^T \Sigma \Sigma^{-1}] - \frac 12 (1-y_i) [- \Sigma \Sigma^{-1} (x_i - \mu_0)(x_i - \mu_0)^T \Sigma \Sigma^{-1}] - \frac 12 m \Sigma \Sigma^{-1}\Sigma =\Sigma0\Sigma \\ & \Rightarrow \sum_{i=1}^m - \frac 12 y_i [- (x_i - \mu_1)(x_i - \mu_1)^T] - \frac 12 (1-y_i) [-(x_i - \mu_0)(x_i - \mu_0)^T] - \frac 12 m \Sigma =0 \\ & \Rightarrow \sum_{i=1}^m y_i [ (x_i - \mu_1)(x_i - \mu_1)^T] + (1-y_i) [(x_i - \mu_0)(x_i - \mu_0)^T] -m \Sigma =0 \\ \Sigma & = \frac{ \sum_{i=1}^m y_i [ (x_i - \mu_1)(x_i - \mu_1)^T] + (1-y_i) [(x_i - \mu_0)(x_i - \mu_0)^T] }{m} \end{aligned}
    综上,我们有:
    ϕ=i=1mI(yi=1)mμ0=i=1mI(yi=0)ximμ1=i=1mI(yi=1)ximΣ=i=1myi[(xiμ1)(xiμ1)T]+(1yi)[(xiμ0)(xiμ0)T]m \phi = \frac{ \sum_{i=1}^m I(y_i=1) }{m} \\ \mu_0 = \frac{ \sum_{i=1}^m I(y_i=0) x_i}{m} \\ \mu_1 = \frac{ \sum_{i=1}^m I(y_i=1) x_i}{m} \\ \Sigma = \frac{ \sum_{i=1}^m y_i [ (x_i - \mu_1)(x_i - \mu_1)^T] + (1-y_i) [(x_i - \mu_0)(x_i - \mu_0)^T] }{m}

    展开全文
  • 高斯判别分析【GDA】

    2019-12-01 20:20:36
    一、高斯判别模型定义 高斯判别属于生成模型的一种(明明是个生成模型,名字里面非得加个判别,还有logistic回归模型,明明是分类,名字里面非要加回归),生成模型就是要最大化后验概率,如下图所示: 下面是...

    一、高斯判别模型定义

    高斯判别属于生成模型的一种(明明是个生成模型,名字里面非得加个判别,还有logistic回归模型,明明是分类,名字里面非要加回归),生成模型就是要最大化后验概率,如下图所示:

    下面是整个高斯判别模型的说明:

    二、模型求解

    2.1 模型中Φ的求解

    下面就是求解模型参数的过程:

    2.2 模型中u1,u2的求解

    2.3 模型中Σ的求解

     

    二、高斯判别模型与logistic模型的联系

    参考资料:1>CS229课程笔记

                        2>机器学习-白板推导系列-线性分类

    展开全文
  • 这是吴恩达机器学习视频的关于高斯判别分析的相关讲英文讲义的中文翻译,由于原版讲义未对相关公式进行推导,在上传的资源里对这些公式进行的详细的数学推导。希望对大家有所帮助
  • 在前面的博文中,我们介绍了线性判别分析用于分类,在这篇博文中,我们介绍高斯判别分析高斯判别分析也是一种用于分类的方法,在样本数据服从多元高斯分布以及类别标签\(y\)服从伯努利分布的假设条件下,然后再由...

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

    接下来的目标就是在目标准则下,求得高斯分布的参数,包括\(\theta=(\phi,u_1,u_2,\Sigma)\)。首先定义似然函数

    \[L(\theta)= \log\Pi_{i=1}^{N}p(x_i,y_i) \]

    然后利用贝叶斯公式

    \[p(x,y)=p(x|y)p(y) \]

    进而可以将似然函数表示成

    \[L(\theta)=\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)) \]

    那么参数\(\theta\)可以通过最大化\(L(\theta)\)得到

    \[\hat{\theta}=\arg \max_{\theta} L(\theta)\\ =\arg \max_\theta \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(\theta)\)\(\phi\)求偏导,可以得到

    \[\frac{\partial L(\theta)}{\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(\theta)\)的表达式可以知道\(u_1,u_2\)只与前两项有关系,首先让\(L(\theta)\)\(u_1\)求偏导,得到

    \[\frac{\partial{L(\theta)}}{\partial{u_1}}=\sum_{i=1}^{N}y_i\log\frac{1}{(2\pi)^{p/2}\lvert\Sigma\lvert^{\frac{1}{2}}}e^{-\frac{1}{2}(x_i-u_1)^T\Sigma^{-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)^T\Sigma^{-1}(x_i-u_1)] \]

    重新定义目标函数\(l(u_1)\)如下

    \[l(u_1)=-\frac{1}{2}\sum_{i=1}^{N}y_i(x_i-u_1)^T\Sigma^{-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\\ \rightarrow \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_i\log 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)) \]


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

    展开全文
  • 机器学习笔记(五)-高斯判别分析

    千次阅读 2019-04-28 20:54:05
    在机器学习笔记(四)-逻辑回归中已经介绍了,软分类又分为概率判别模型:...还有概率生成模型,为代表的是高斯判别分析(GDA:Guassian Discrimant Analysis)。GDA是本文的主角。本文主要是对GDA算法学习和Python验证

    原创不易,转载前请注明博主的链接地址:Blessy_Zhu https://blog.csdn.net/weixin_42555080
    本次代码的环境:
    运行平台: Windows
    Python版本: Python3.x
    IDE: PyCharm

    一、 前言

    机器学习笔记(四)-逻辑回归已经介绍了,软分类又分为概率判别模型:为代表的模型是逻辑回归;还有概率生成模型,为代表的是高斯判别分析(GDA:Guassian Discrimant Analysis)。GDA是本文的主角。接下来,直奔主题吧!!!

    二、GDA实现细节

    机器学习笔记(四)-逻辑回归中介绍,生成模型的主要过程就是通过先验,求后验概率,如下式子所示:
    在这里插入图片描述
    根据y的取值是0或者1,实际上就是符合伯努利分布,这样,为了求P(x|y),现假设:
    在这里插入图片描述
    将上面y=1,y=0的合并成一个式子,同时也将x|y=1和x|y=0合并成一个式子:
    在这里插入图片描述
    这样,根据训练样本,估计出先验概率以及高斯分布的均值和协方差矩阵(注意这里两类内部高斯分布的协方差矩阵相同),即可通过如下贝叶斯公式求出一个新样本分别属于两类的概率,进而可实现对该样本的分类。
    在这里插入图片描述
    接下里就开始求目标函数,这里采用的是log-likelihood log似然函数。

    那么高斯判别分析的核心工作就是估计上述未知量ϕ,μ1,μ2,Σ。如何来估计这些参数?又该最大似然估计上场了。其对数似然函数为:
     

     
    在这里插入图片描述

    首先求最好求的内容ϕ,因为它只和最后一个式子有关系:
     

     
    在这里插入图片描述

    接下来求μ1,μ1只和第一个式子有关;实际上,μ2只和第二个式子有关,这里就不再详细的写μ2的推导过程,只给出μ1的推导过程:
     

     
    在这里插入图片描述

    最后求解最难求的Σ,它是和式子1,2都有关系,也就是求使得满足下面式子的Σ值:
    在这里插入图片描述
    为了方便运算,下面引入了tr()的运算。
     

     
    在这里插入图片描述
    在这里插入图片描述

    三、GDA验证

    首先产生任意两簇基于高斯分布的数据:

    #GDA
    import matplotlib.pyplot as plt
    from numpy import *
    
    #任意产生两簇基于高斯分布的数据
    mean0=[2,3]
    cov=mat([[1,0],[0,2]])
    x0=random.multivariate_normal(mean0,cov,500).T   #第一类的数据值为0
    y0=zeros(shape(x0)[1])
    mean1=[7,8]
    cov=mat([[1,0],[0,2]])
    x1=random.multivariate_normal(mean1,cov,300).T
    y1=ones(shape(x1)[1]) #第二类数据值为1
    x=array([concatenate((x0[0],x1[0])),concatenate((x0[1],x1[1]))])
    y=array([concatenate((y0,y1))])
    m=shape(x)[1]
    

    定义并初始化参数:ϕ,μ0,μ1,Σ,并展示原始数据

    #定义并初始化参数:ϕ,μ0,μ1,Σ
    phi=(1.0/m)*len(y1)
    u0=mean(x0,axis=1)
    u1=mean(x1,axis=1)
    
    #展示原始训练数据
    xplot0=x0
    xplot1=x1
    x0=x0.T
    x1=x1.T
    x=x.T
    x0_sub_u0=x0-u0
    x1_sub_u1=x1-u1
    x_sub_u=concatenate([x0_sub_u0,x1_sub_u1])
    x_sub_u=mat(x_sub_u)
    sigma=(1.0/m)*(x_sub_u.T*x_sub_u)
    
    #用u0和u1的中正态绘制区分边界
    midPoint=[(u0[0]+u1[0])/2.0,(u0[1]+u1[1])/2.0]
    k=(u1[1]-u0[1])/(u1[0]-u0[0])
    x=range(-2,11)
    y=[(-1.0/k)*(i-midPoint[0])+midPoint[1] for i in x]
    #绘制两个高斯分布的轮廓
    def gaussian_2d(x, y, x0, y0, sigmaMatrix):
        return exp(-0.5*((x-x0)**2+0.5*(y-y0)**2))
    delta = 0.025
    xgrid0=arange(-2, 6, delta)
    ygrid0=arange(-2, 6, delta)
    xgrid1=arange(3,11,delta)
    ygrid1=arange(3,11,delta)
    X0,Y0=meshgrid(xgrid0, ygrid0)   #generate the grid
    X1,Y1=meshgrid(xgrid1,ygrid1)
    Z0=gaussian_2d(X0,Y0,2,3,cov)
    Z1=gaussian_2d(X1,Y1,7,8,cov)
    

    最后,绘制图形

    #绘图
    plt.figure(1)
    plt.clf()
    plt.plot(xplot0[0],xplot0[1],'ko')
    plt.plot(xplot1[0],xplot1[1],'gs')
    plt.plot(u0[0],u0[1],'rx',markersize=20)
    plt.plot(u1[0],u1[1],'y*',markersize=20)
    plt.plot(x,y)
    CS0=plt.contour(X0, Y0, Z0)
    plt.clabel(CS0, inline=1, fontsize=10)
    CS1=plt.contour(X1,Y1,Z1)
    plt.clabel(CS1, inline=1, fontsize=10)
    plt.title("Gaussian discriminat analysis")
    plt.xlabel('Feature Dimension (0)')
    plt.ylabel('Feature Dimension (1)')
    plt.show(1)
    

    结果展示:
    在这里插入图片描述

    四、总结

    本篇内容主要介绍了GDA高斯判别分析,并对GDA模型进行验证。这篇文章就到这里了,欢迎大佬们多批评指正,也欢迎大家积极评论多多交流。
     

     
    在这里插入图片描述

    参考文章

    1 机器学习(十七)——高斯判别分析模型(The Gaussian Discriminant Analysis model)
    2 斯坦福大学机器学习——高斯判别分析
    3 斯坦福机器学习实现与分析之五(高斯判别分析)
    4 生成学习算法之高斯判别分析模型
    5 高斯判别分析(GDA)Python代码(乳腺癌数据实例)
    6 高斯判别分析算法(Gaussian discriminat analysis)

    展开全文
  • 生成学习算法之高斯判别分析模型

    千次阅读 2016-09-02 22:24:23
    第四部分 生成学习算法 到目前为止,我们主要讨论了建模——给定下的的条件分布——的学习算法。例如,逻辑回归把建模成,这里是sigmoid函数。在这些讲义中,我们将讨论一种不同形式的学习算法。...
  • 同朴素贝叶斯一样,高斯判别分析(Gaussian discriminant analysismodel, GDA)也是一种生成学习算法,在该模型中,我们假设y给定的情况下,x服从混合正态分布。通过训练确定参数,新样本通过已建立的模型计算出隶属...
  • 高斯判别分析(GDA)

    2019-10-09 10:24:47
    概率判别模型与概率生成模型的区别 概率判别模型 首先用sigmoid函数求出 然后通过极大似然估计,求出P(Y|X)的似然来估计预测值 概略判别模型精确的求出概率值 概率生成模型 生成模型不直接计算而是...
  • 高斯判别分析算法及其python实现

    千次阅读 2015-06-12 19:12:53
    高斯判别分析算法(Gaussian discriminat analysis)高斯判别算法是一个典型的生成学习算法
  • 高斯判别分析和朴素贝叶斯分类器

    千次阅读 2014-03-27 20:28:38
    分类模型分为判别模型和生成模型: 判别模型的思路是我先根据已知的数据生成一个分类器,遇到要分类的对象,我们首先提取这个对象的特征,然后把这些特征放入之前的分类器中,从而得到分类结果。 生成模型的...
  • 高斯判别分析(附Matlab实现)

    千次阅读 2014-04-14 12:10:43
    高斯判别分析(Gaussian Discriminant analysis,GDA),与之前的线性回归和Logistic回归从方法上讲有很大的不同,GDA是一种生成学习算法(Generative Learning Algorithms),而之前的属于判别学习算法...
  • 本篇博客为斯坦福ML公开课第五个视频的笔记,主要内容包括生成学习算法(generate learning algorithm)、高斯判别分析(Gaussian DiscriminantAnalysis,GDA)、朴素贝叶斯(Navie Bayes)、拉普拉斯平滑(Laplace ...
  • 2)高斯判别分析(Gaussian Discriminant Analysis(GDA))  2.1) 多元正态分布  2.2) 高斯判别模型分析  2.3) 利用高斯判别模型进行分类  2.4)高斯判别分析(GDA)与logistic回归的关系 1)判别模
  •  ——“数学王子”高斯 正态分布的历史: 谈及正态分布的历史,不得不提两位数学家,第一位,Abraham de Moivre(法国裔英国籍数学家 1667.05.26---1754.11.27 中文翻译:德莫佛),在1733年,首次提出了正态...
  • 高斯判别模型,内容其实非常简单 对于大多数模型,无非就是做这么几件事情 1.假设模型 2.设定参数,表示概率 3.用最大似然,通过样本算出参数 4.用得到的参数,再去测试数据里计算概率高斯模型判别是是这样,...
  • 2.高斯判别分析(GDA,Gaussian Discriminant Analysis) 3.朴素贝叶斯(Naive Bayes) 4.拉普拉斯平滑(Laplace smoothing)1.生成学习算法判别学习算法(discriminative learning algorithm):直接学习p(y|x)
  • 逻辑斯蒂和LDA方法是紧密相连的,都产生线性决策边界,两者只是在拟合过程中有一些差异,所以两者得到的结果应该是接近的,但当LDA的前提假设-观测服从每一类协方差矩阵都相同的高斯分布-成立时,LDA应该比逻辑斯蒂...
  • 线性判别分析(LDA)基本原理及实现

    万次阅读 多人点赞 2018-10-14 10:51:42
    这里就对另外一种经典的降维方法线性判别分析(Linear Discriminant Analysis, 简称LDA)做一个总结。LDA在模式识别领域(比如人脸识别,舰艇识别等图形图像识别领域)中有非常广泛的应用,因此我们有必要了解下它的...
  • 高斯判别分析与Logistic回归之间是有一定关系的,通过公式转换,我们能够把高斯判别分析的公式转换为Logistic回归公式。但是高斯判别分析与Logistic回归之间有什么关系呢?
  • 今天我们来聊一聊生成学习算法,内容主要包括生成模型和判别模型的比较,以及生成学习算法的一个例子——高斯判别分析(Gaussian Discriminant Analysis, GDA)。1. 生成模型和判别模型 前面我们讨论的学习算法...
1 2 3 4 5 ... 20
收藏数 8,509
精华内容 3,403
热门标签
关键字:

高斯判别分析