Gaussian Discriminant Analysis
如果在我们的分类问题中,输入特征$x$是连续型随机变量,高斯判别模型(Gaussian Discriminant Analysis,GDA)就可以派上用场了。
以二分类问题为例进行说明,模型建立如下:
- 样本输入特征为\(x\in\mathbb{R}^n\),其类别\(y\in\{0,1\}\);
- 样本类别\(y\)服从参数为\(\phi\)的伯努力分布,即\(y\sim Bernoulli(\phi)\);
- 两类样本分别服从不同的高斯分布,即\(x|y=0\sim\mathcal{N}(\mu_0,\Sigma),x|y=1\sim\mathcal{N}(\mu_1,\Sigma)\);
对应的概率分布形式如下:
\begin{equation}
p(y)=\phi^y(1-\phi)^{1-y}
\end{equation}
\begin{equation}
p(x|y=0)=\frac{1}{(2\pi)^{\frac{n}{2}}|\Sigma|^{\frac{1}{2}}}\exp(-\frac{1}{2}(x-\mu_0)^T\Sigma^{-1}(x-\mu_0))
\end{equation}
\begin{equation}
p(x|y=1)=\frac{1}{(2\pi)^{\frac{n}{2}}|\Sigma|^{\frac{1}{2}}}\exp(-\frac{1}{2}(x-\mu_1)^T\Sigma^{-1}(x-\mu_1))
\end{equation}
\begin{equation}
p(x|y)=\frac{1}{(2\pi)^{\frac{n}{2}}|\Sigma|^{\frac{1}{2}}}\exp(-\frac{1}{2}(x-\mu_y)^T\Sigma^{-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)})\}\),似然函数形式如下:
\begin{equation}
\begin{array}{ll}
&\quad\mathcal{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\log p(x^{(i)}|y^{(i)};\mu_0,\mu_1,\Sigma)+\log p(y^{(i)};\phi)\\
&=\sum_{i=1}^m\left[-\frac{1}{2}(x^{(i)}-\mu_{y^{(i)}})^T\Sigma^{-1}(x^{(i)}-\mu_{y^{(i)}})\right.\\
&\quad\left.-\frac{n}{2}\log(2\pi)-\frac{1}{2}\log|\Sigma^{-1}|+y^{(i)}\log\phi\right.\\
&\quad\left.+(1-y^{(i)})\log(1-\phi)\right]
\end{array}
\end{equation}
通过最大似然进行参数估计,用似然函数\(\mathcal{L}\)对各个参数求偏导:
\begin{equation}
\begin{array}{ll}
&\quad\frac{\partial\mathcal{L}(\phi,\mu_0,\mu_1,\Sigma)}{\partial\phi}\\
&=\frac{\partial}{\partial\phi}\sum_{i=1}^m\left[y^{(i)}\log\phi+(1-y^{(i)})\log(1-\phi)\right]\\
&=\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 \phi=\frac{\sum_{i=1}^my^{(i)}}{m}=\frac{\sum_{i=1}^m1\{y^{(i)}=1\}}{m}
\end{array}
\end{equation}
\begin{equation}
\begin{array}{ll}
&\quad\frac{\partial\mathcal{L}(\phi,\mu_0,\mu_1,\Sigma)}{\partial\mu_0}\\
&=\frac{\partial}{\partial\phi}\sum_{i=1}^m\left[-\frac{1}{2}1\{y^{(i)}=0\}(x^{(i)}-\mu_{0})^T\Sigma^{-1}(x^{(i)}-\mu_{0})\right]\\
&=\frac{\partial}{\partial\mu_0}\sum_{i=1}^m-\frac{1}{2}1\{y^{(i)}=0\}\\
&\quad\cdot Tr[\mu_0^T\Sigma^{-1}\mu_0-\mu_0^T\Sigma^{-1}x^{(i)}-(x^{(i)})^T\Sigma^{-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}
同理,可得
\begin{equation}
\mu_1=\frac{\sum_{i=1}^m1\{y^{(i)}=1\}x^{(i)}}{\sum_{i=1}^m1\{y^{(i)}=1\}}
\end{equation}
\begin{equation}
\begin{array}{ll}
&\quad\frac{\partial\mathcal{L}(\phi,\mu_0,\mu_1,\Sigma)}{\partial\Sigma}\\
&=\frac{\partial}{\partial\Sigma}[-\frac{1}{2}(x^{(i)}-\mu_{y^{(i)}})^T\Sigma^{-1}(x^{(i)}-\mu_{y{(i)}})-\frac{1}{2}\log|\Sigma|]\\
&=\sum_{i=1}^m\frac{1}{2}[\left(\Sigma^{-1}(x^{(i)}-\mu_{y^{(i)}})(x^{(i)}-\mu_{y^{(i)}})^T\Sigma^{-1}\right)^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\)即可
\begin{equation}
\underset{y\in\{0,1\}}{arg\max}{\;p(x|y)p(y)}
\end{equation}
最后,我们来分析高斯判别模型和Logistic回归之间的情缘。如果\(x|y\)服从高斯分布\(\mathcal{N}(\mu,\Sigma)\)(只针对\(y\)取两个离散值的情况),则\(p(y|x)\)具有logistic函数的形式;反过来,\(p(y|x)\)形式上为logistic函数并不能说明\(x|y\sim\mathcal{N}(\mu,\Sigma)\)。实际上,有很多组假设都能使\(p(y|x)\)有logistic函数的形式,只要假设满足\(x|y\)服从指数族分布(Exponential Family Distribution)。例如,\(x|y=0\sim Poisson(\lambda_0)\)和\(x|y=1\sim Poisson(\lambda_1)\),则\(p(y|x)\)在形式上同样为logistic函数。以高斯判别分析为例,简单证明一下:
\begin{equation}
\begin{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{\exp\left(-\frac{1}{2}(x-\mu_1)^T\Sigma^{-1}(x-\mu_1)\right)\phi}{\exp\left(-\frac{1}{2}(x-\mu_1)^T\Sigma^{-1}(x-\mu_1)\right)\phi+\exp\left(-\frac{1}{2}(x-\mu_0)^T\Sigma^{-1}(x-\mu_0)\right)(1-\phi)}\\
=&\frac{1}{1+\exp\left(\frac{1}{2}(x-\mu_1)^T\Sigma^{-1}(x-\mu_1)-\frac{1}{2}(x-\mu_0)^T\Sigma^{-1}(x-\mu_0)\right)\frac{1-\phi}{\phi}}\\
=&\frac{1}{1+\exp\left(x^T\Sigma^{-1}(\mu_0-\mu_1)+\frac{1}{2}\mu_1^T\Sigma^{-1}\mu_1-\frac{1}{2}\mu_0^T\Sigma^{-1}\mu_0+\log(1-\phi)-\log\phi\right)}
\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\)。

Gaussian Discriminant Analysis的更多相关文章
- 高斯判别分析 Gaussian Discriminant Analysis
如果在我们的分类问题中,输入特征xx是连续型随机变量,高斯判别模型(Gaussian Discriminant Analysis,GDA)就可以派上用场了. 以二分类问题为例进行说明,模型建立如下: ...
- Gaussian discriminant analysis 高斯判别分析
高斯判别分析(附Matlab实现) 生成学习算法 高斯判别分析(Gaussian Discriminant analysis,GDA),与之前的线性回归和Logistic回归从方法上讲有很大的不同,G ...
- 高斯判别分析模型( Gaussian discriminant analysis)及Python实现
高斯判别分析模型( Gaussian discriminant analysis)及Python实现 http://www.cnblogs.com/sumai 1.模型 高斯判别分析模型是一种生成模型 ...
- 生成式学习算法(三)之----高斯判别分析模型(Gaussian Discriminant Analysis ,GDA)
高斯判别分析模型(Gaussian Discriminant Analysis ,GDA) 当我们分类问题的输入特征$x $为连续值随机变量时,可以用高斯判别分析模型(Gaussian Discrim ...
- 机器学习理论基础学习3.4--- Linear classification 线性分类之Gaussian Discriminant Analysis高斯判别模型
一.什么是高斯判别模型? 二.怎么求解参数?
- [Scikit-learn] 1.2 Dimensionality reduction - Linear and Quadratic Discriminant Analysis
Ref: http://scikit-learn.org/stable/modules/lda_qda.html Ref: http://bluewhale.cc/2016-04-10/linear- ...
- 线性判别分析(Linear Discriminant Analysis,LDA)
一.LDA的基本思想 线性判别式分析(Linear Discriminant Analysis, LDA),也叫做Fisher线性判别(Fisher Linear Discriminant ,FLD) ...
- OpenCV LDA(Linnear Discriminant analysis)类的使用---OpenCV LDA演示样例
1.OpenCV中LDA类的声明 //contrib.hpp class CV_EXPORTS LDA { public: // Initializes a LDA with num_componen ...
- 线性判别分析(Linear Discriminant Analysis, LDA)算法分析
原文来自:http://blog.csdn.net/xiazhaoqiang/article/details/6585537 LDA算法入门 一. LDA算法概述: 线性判别式分析(Lin ...
随机推荐
- SharePoint默认的欢迎WebPart中超链接样式
转:http://www.cnblogs.com/Bear-Study-Hard/archive/2010/03/22/1691641.html 在core.css文件中 .ms-SpLinkButt ...
- POJ2104 K-th Number 划分树 模板题啊
/*Source Code Problem: 2104 User: 96655 Memory: 14808K Time: 1282MS Language: G++ Result: Accepted S ...
- 【转】Qt Creator在Windows上的调试器安装与配置
https://www.librehat.com/qt-creator-on-windows-debugger-installation-and-configuration/
- HOG:从理论到OpenCV实践
(转载请注明出处:http://blog.csdn.net/zhazhiqiang/ 未经允许请勿用于商业用途) 一.理论 1.HOG特征描述子的定义: locally normalised ...
- Mongodb操作总结
1.Mongovue里面可以直接group by ,这个时候一定要注意,group by的任何条件的是 json, 注意当值是Int,非string型的时候,值不要加上双引号 2.注意group by ...
- java Object类学习
/* * Copyright (c) 1994, 2010, Oracle and/or its affiliates. All rights reserved. * ORACLE PROPRIETA ...
- 问题:关于坛友的一个js轮播效果的实现
需求:点击向前按钮进行向前翻页,向后按钮进行向后翻页,点击中间蓝色小圆圈可以来回自由切换 我的大概思路:先默认显示一个div 然后在原位置在隐藏一个div 给按钮添加click事件,转到下一个时 ...
- uva 11168
题意:给出平面上的n个点,求一条直线,使得所有点在该直线的同一侧且所有点到该直线的距离和最小,输出该距离和. 思路:要使所有点在该直线的同一侧,明显是直接利用凸包的边更优.所以枚举凸包的没条边,然后求 ...
- 设计原则 Design Principle
Design Principle设计原则 最近由于碰到要参与设计一个音频处理系统,有人提议用一个大的全局变量结构体来做状态信息交流的地方,引起了我对设计一个系统的思考,于是找到了如下资料,当然,关于这 ...
- RxJava 复杂场景 Schedulers调度
参考: https://blog.piasy.com/2016/10/14/Complex-RxJava-2-scheduler/ 以Zip为例,学习Schedulers的线程调度 要求: * cre ...