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

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

  1. 样本输入特征为\(x\in\mathbb{R}^n\),其类别\(y\in\{0,1\}\);
  2. 样本类别\(y\)服从参数为\(\phi\)的伯努力分布,即\(y\sim Bernoulli(\phi)\);
  3. 两类样本分别服从不同的高斯分布,即\(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的更多相关文章

  1. 高斯判别分析 Gaussian Discriminant Analysis

    如果在我们的分类问题中,输入特征xx是连续型随机变量,高斯判别模型(Gaussian Discriminant Analysis,GDA)就可以派上用场了. 以二分类问题为例进行说明,模型建立如下: ...

  2. Gaussian discriminant analysis 高斯判别分析

    高斯判别分析(附Matlab实现) 生成学习算法 高斯判别分析(Gaussian Discriminant analysis,GDA),与之前的线性回归和Logistic回归从方法上讲有很大的不同,G ...

  3. 高斯判别分析模型( Gaussian discriminant analysis)及Python实现

    高斯判别分析模型( Gaussian discriminant analysis)及Python实现 http://www.cnblogs.com/sumai 1.模型 高斯判别分析模型是一种生成模型 ...

  4. 生成式学习算法(三)之----高斯判别分析模型(Gaussian Discriminant Analysis ,GDA)

    高斯判别分析模型(Gaussian Discriminant Analysis ,GDA) 当我们分类问题的输入特征$x $为连续值随机变量时,可以用高斯判别分析模型(Gaussian Discrim ...

  5. 机器学习理论基础学习3.4--- Linear classification 线性分类之Gaussian Discriminant Analysis高斯判别模型

    一.什么是高斯判别模型? 二.怎么求解参数?

  6. [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- ...

  7. 线性判别分析(Linear Discriminant Analysis,LDA)

    一.LDA的基本思想 线性判别式分析(Linear Discriminant Analysis, LDA),也叫做Fisher线性判别(Fisher Linear Discriminant ,FLD) ...

  8. OpenCV LDA(Linnear Discriminant analysis)类的使用---OpenCV LDA演示样例

    1.OpenCV中LDA类的声明 //contrib.hpp class CV_EXPORTS LDA { public: // Initializes a LDA with num_componen ...

  9. 线性判别分析(Linear Discriminant Analysis, LDA)算法分析

    原文来自:http://blog.csdn.net/xiazhaoqiang/article/details/6585537 LDA算法入门 一. LDA算法概述:       线性判别式分析(Lin ...

随机推荐

  1. C# 有关文件路径的操作

    1. 由文件全路径,获取文件扩展名.文件名等信息 string fullPath = @"\WebSite1\Default.aspx"; string filename = Sy ...

  2. Dos操作

    \tree/f >c.txt \dir/s/b >c.txt

  3. ubuntu12.04 安装 chrome

    1.下载deb包 2. sudo apt-get remove google-chrome-stable sudo dpkg -i google-chrome-stable_current_amd64 ...

  4. bzoj 1040 [ZJOI2008]骑士(基环外向树,树形DP)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1040 [题意] 给一个基环森林,每个点有一个权值,求一个点集使得点集中的点无边相连且权 ...

  5. 2015北京网络赛B题 Mission Impossible 6

    借用大牛的一张图片:模拟 #include<cstdio> #include<cmath> #include<cstring> #include<algori ...

  6. 基于Ubuntu14.10的Hadoop+HBase环境搭建

    本篇博文中谈及的Hadoop和HBase都是单机版,简单了解. 首先在Ubuntu上搭建Hadoop开发环境,主要参考另外一篇博客,仔细照做并解决出现的问题即可. 地址:http://www.powe ...

  7. 关于硬盘和几种RAID

    1 硬盘的基本工作原理 1.1 硬盘部件结构图 1.2 主要参数术语解释 磁头:在与硬盘交换数据的过程 中,读操作远远快于写操作,硬盘厂商开发一种读/写分离磁头. 转速(Rotationl Speed ...

  8. 29个你必须知道的Linux命令

    虽然Linux发行版支持各种各样的饿GUI(graphical user interfaces),但在某些情况下,Linux的命令行接口(bash)仍然是简单快速的.Bash和 Linux Shell ...

  9. JS 格式化日期

    function formatDate(date){ var year=date.getFullYear(); var month=date.getMonth()+1; var date=date.g ...

  10. unigui下载文件

    lblProduct.Caption := '<a href="files\1.t" target=new>要下载的文件名</a>';