[监督学习]GDA 高斯判别分析

  高斯判别分析(Gaussian discriminative analysis )是一个较为直观的模型,基本的假设是我们得到的数据是独立同分布的(IID),虽然在实际中这种假设很难达到,但有时候拥有了好的假设可以得到较好的结果。在Andrew Ng大神的CS229 Lecture notes中有一个例子:假设我们要对大象和狗分类,回归模型和感知机模型是在两类数据之间找到一个decision boundary,通过这个decision boundary来区分大象和狗。高斯判别分析提供了另外一种思路:首先我们观察大象,对大象建立一个模型来描述他的特点;在观察狗,并建立相应的模型来描述狗。当一个新的狗或者象过来时,我们首先带入象模型和狗模型,最后决定新来的的动物的类别。

  这是一种软分类的思路,所谓软分类就是我们对一个样本决定它的类别时有一个可信度的概念,比方说当数据位于decision boundary附近的时候,我们将数据硬分为0或者1类(在这里是象和狗类)有时是不合理的,因为这是类别的不确定性更大。软分类的思路在高斯混合模型(GMM)中也有体现(Anil K. Jain在08年在TPAMI发了一篇文章是关于如何利用GMM来分类,小菜今年才想到这个思路,只能follow人家了)。我感觉这一点是高斯判别分析相对于其他模型的优越之处。

以下是干货

我们处理的数据往往是多维的,因此高斯分布也应该是多维的。一维的正态分布为

那么,n维正态分布表示为

这里;后边的表示参数,该式表示以μ为均值,Σ为协方差的n维正态分布。

将n为高斯模型应用到监督学习中,假设输入数据为x,类别为y(0或者1),那么对应二类的分类问题有

这就是经典的高斯判别分析模型,更为直观化的表述为

p(y)是满足伯努利概型(就是独立实验),第二个式子指的是当类别为y=0是,x的分布为一个高斯分布,第三个式子与第二个式子。上式中有四个参数(两个高斯分布用了同一个方差),实际上感觉5个的话更精确。

剩下的问题就是如何对这些参数进行估计了,用极大似然估计的观点本人没有做出来(才疏学浅),可以用下面直观地思路求解:每个数据的类别已经知道了,并且每一组别的数据分布都是高斯的,我们可以直接用高斯分布的参数估计来求解4(或者5)个参数。我们知道高斯分布的均值的估计就是数据的均值,那么

如果两个高斯分布用一个Σ,那么

否则,可以单独求取每个类别的方差,还有一个参数Φ,直接统计点的个数得到

这就是GDA的思路和实现方式,看起来这个模型还是一个较为naive的模型,此模型只能应用于监督学习中,并且数据的分部必须大致是高斯分布的,对于一些奇怪的形状,可能并没有好的分类结果。

上面提到,高斯判别分析是一个软分类器,这就直接体现在数据与类别的分布(或者中心)的“亲近”程度上,至于怎么做,相信都有不同的见解。最主要的是这种基于数据density的方式的思路是很有创新性的。

以下是实现结果

下面给出用MATLAB实现的高判别分析的代码

 1 clc,clear
 2 mu1 = [2 3];
 3 SIGMA1 = [1 0; 0 1];
 4 n1=2;
 5 m1=50;
 6 r1 = mvnrnd(mu1,SIGMA1,m1);
 7
 8 mu2 = [5 5];
 9 SIGMA2 = [1 0; 0 1];
10 n2=2;
11 m2=100;
12 r2 = mvnrnd(mu2,SIGMA2,m2);
13
14 x=[r1;r2];
15 y=[zeros(m1,1);ones(m2,1)];
16
17 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
18 % plot the datas
19 figure
20 pos = find(y);
21 neg = find(y == 0);
22 plot(x(pos, 1), x(pos, 2), ‘+‘)
23 hold on
24 plot(x(neg, 1), x(neg, 2), ‘o‘)
25 hold on
26 xlabel(‘axis X‘)
27 ylabel(‘axis Y‘)
28
29
30 %%%%%%%%%%%%%%%%%%%
31 sigma1 = cov(x(neg,:));
32 sigma2 = cov(x(pos,:));
33 mu1=mean(x(neg,:));
34 mu2=mean(x(pos,:));
35
36 [x1 y1]=meshgrid(linspace(0,10,100)‘,linspace(0,10,100)‘);
37
38
39 X1=[x1(:) y1(:)];
40 z1=mvnpdf(X1,mu1,sigma1);
41 contour(x1,y1,reshape(z1,100,100),8);
42 hold on;
43
44 z2=mvnpdf(X1,mu2,sigma2);
45 contour(x1,y1,reshape(z2,100,100),8);
46 hold off; 
时间: 2024-10-05 04:45:08

[监督学习]GDA 高斯判别分析的相关文章

【cs229-Lecture5】生成学习算法:1)高斯判别分析(GDA);2)朴素贝叶斯(NB)

参考: cs229讲义 机器学习(一):生成学习算法Generative Learning algorithms:http://www.cnblogs.com/zjgtan/archive/2013/06/08/3127490.html 首先,简单比较一下前几节课讲的判别学习算法(Discriminative Learning Algorithm)和本节课讲的生成学习算法(Generative Learning Algorithm)的区别. eg:问题:Consider a classi?cat

机器学习:线性分类、高斯判别分析(GDA)、朴素贝叶斯(NB)

简介:这篇文章主要介绍简单的二分类算法:线性分类器.高斯判别分析.朴素贝叶斯. 一.线性分类器 加入给定如下两类数据(0-1),目测分类器应该对这组数据进行这样的划分.图中,红色样本点表示0,蓝色样本点表示1. 原始数据显示为三维如下: 现在运用前一节介绍的线性拟合来进行分类,即线性分类器.当拟合出来的y值大于等于0.5,则归为1,:否则归为0. 代码如下: %% %线性分类器 function Classification_Liner %% clc; clear all; close all;

高斯判别分析 Gaussian Discriminant Analysis

如果在我们的分类问题中,输入特征xx是连续型随机变量,高斯判别模型(Gaussian Discriminant Analysis,GDA)就可以派上用场了. 以二分类问题为例进行说明,模型建立如下: 样本输入特征为x∈Rnx∈Rn,其类别y∈{0,1}y∈{0,1}: 样本类别yy服从参数为??的伯努力分布,即y∼Bernoulli(?)y∼Bernoulli(?): 两类样本分别服从不同的高斯分布,即x|y=0∼N(μ0,Σ),x|y=1∼N(μ1,Σ)x|y=0∼N(μ0,Σ),x|y=1∼

高斯判别分析算法及其python实现

高斯判别分析算法(Gaussian discriminat analysis) 高斯判别算法是一个典型的生成学习算法(关于生成学习算法可以参考我的另外一篇博客).在这个算法中,我们假设p(x|y)服从多元正态分布. 注:在判别学习算法中,我们假设p(y|x)服从一维正态分布,这个很好类比,因为在模型中输入数据X通常是拥有很多维度的,所以对于X的条件概率建模时要取多维正态分布. 多元正态分布 多元正态分布也叫多元高斯分布,这个分布的两个参数分别是平均向量μ∈?n和一个协方差矩阵∑∈?n×n 关于协

高斯判别分析、朴素贝叶斯和逻辑回归

近来看论文中经常看到GDA和朴素贝叶斯,并且论文中说的算法中用到的贝叶斯公式,对怎么用的原理比较困惑,今天主要看了斯坦福机器学习的关于GDA,NB和LR的讲义部分.理解了贝叶斯公式在GDA和NB中的原理,以及GDA和LR的关系. 与以前学习贝叶斯公式相比贝叶斯公式:对于目标B有不同的到达方式Ai,i=1,2,3,...,n.已知p(Ai)和p(B|Ai)的话,如果知道B发生了,可以知道Ai的后验概率. 贝叶斯公式图示 在GDA和NB中,类别标签就相当于Ai,每一个特征相当于B的一个分量.根据采集

【无监督学习】高斯混合模型

高斯混合模型 本博客根据 百面机器学习,算法工程师带你去面试 一书总结归纳,公式图片均出自该书. 本博客仅为个人总结学习,非商业用途,侵删. 网址 http://www.ptpress.com.cn 高斯混合模型(Gaussian Mixed Model, GMM) 是一种常见的聚类算法,与K均值算法类似,同样使用了EM算法进行迭代计算. 高斯混合模型假设每个簇的数据都是符合高斯分布(又叫正态分布) 的, 当前数据呈现的分布就是各个簇的高斯分布叠加在一起的结果. 下面是一个高斯混合分布得例子,如

斯坦福吴恩达教授机器学习公开课第五讲笔记——判别分析/高斯判别分析/GPA+逻辑回归/laplace平滑/极大似然的原理

Stanford机器学习[第五讲]-生成学习算法

本课内容: 生成学习算法的介绍: 第一个典型的生成学习算法--高斯判别分析: 生成学习算法与之前的判别学习算法的对比: 朴素贝叶斯算法, Laplace平滑. 1.生成学习算法 学习算法分为两种:一种是判别学习算法(Discriminative Learning Algorithm),简称DLA,另一种是生成学习算法(Generative Learning Algorithm),简称GLA. DLA通过建立输入空间X与输出标注{1, 0}间的映射关系学习得到p(y|x).而GLA首先确定p(x|

Stanford机器学习课程笔记4-Kmeans与高斯混合模型

这一部分属于无监督学习的内容,无监督学习内容主要包括:Kmeans聚类算法.高斯混合模型及EM算法.Factor Analysis.PCA.ICA等.本文是Kmeans聚类算法.高斯混合模型的笔记,EM算法是适用于存在latent/hidden变量的通用算法,高斯混合模型仅仅是EM算法的一种特殊情况,关于EM算法的推到参见Andrew Ng讲义.由于公式太多,最近时间又忙实习的事就简单写一些,回头看时还得参考Ng的笔记和自己的打印Notes上的笔记,这里的程序对理解可能能提供另外的一些帮助. K