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 ...
随机推荐
- RMAN catalog备份恢复方案
对于数据库的稳定性,高可用,跨平台以及海量数据库的处理,Oracle 数据库通常是大型数据库和大企业的首选.尽管如此,仍然不乏很多中小企业想要品尝一下Oracle腥味,因此在Oracle环境中也有不少 ...
- (六)学习MVC之标签a提交页面
标签<a>如何做到与<input type="submit"/>一样有提交页面信息的效果? @using (Html.BeginForm("Log ...
- SDUT 3258 Square Number 简单数学
和上一题一样,把平方因子除去,然后对应的数就变成固定的 #include <cstdio> #include <iostream> #include <algorithm ...
- HDU 5699 货物运输 二分判定
转自:http://blog.csdn.net/jtjy568805874/article/details/51480479 #include <cstdio> #include < ...
- 《Python基础教程(第二版)》学习笔记 -> 第四章 字典
字典是Python中唯一内建的映射类型. 字典中的值并没有特殊的顺序,但是都存储在一个特定的键(Key)里.键可以是数字.字符串甚至是元组. 字典的使用 某些情况下,字典比列表更加适用: 表征游戏棋盘 ...
- qtp不识别树结构中的点击事件
qtp不识别树结构中的点击事件,未生成该点击事件的脚本,解决办法: 1.未生成点击"auto分类c1"的脚本 2.点击1.对象库-2.添加对象库-3.选中对象-点击OK,即将该对象 ...
- 设计模式_Memento_备忘录模式
形象例子: 同时跟几个MM聊天时,一定要记清楚刚才跟MM说了些什么话,不然MM发现了会不高兴的哦,幸亏我有个备忘录,刚才与哪个MM说了什么话我都拷贝一份放到备忘录里面保存,这样可以随时察看以前的记录啦 ...
- MapReduce:Shuffle过程的流程
Shuffle过程是MapReduce的核心,Shuffle描述着数据从map task输出到reduce task输入的这段过程. 1.map端
- 用Python操作Excel2007 及以上的版本读写,来自官方的Demo
大牛请略过,新手可以参考,具体见下面的代码注释, 另外一个问题,想学习这个语言,最好还是英语牛一些,可以去官网多看看有用的类库,汉语的资料不是很全 #运行环境 3.4,下面这个操作Excel的包是针对 ...
- CentOS上安装MySQL
1.准备RPM安装包 MySQL-server-5.6.33-1.linux_glibc2.5.x86_64 MySQL-client-5.6.33-1.linux_glibc2.5.x86_64 2 ...