生成学习算法之高斯判别分析模型
来源:互联网 发布:人工智能产业链全景图 编辑:程序博客网 时间:2024/06/05 19:17
第四部分 生成学习算法
考虑一个分类问题,在这个分类问题中,我们想基于一个动物的一些特征,来学习区分是大象()还是小狗()。给定一个训练集,一个诸如逻辑回归或感知器的算法(基本上)试图找到一条直线—也就是一个分界线—来分离大象和狗。然后,为了把一个新动物归类成大象或者小狗,要检查它落在了边界线的哪一侧,相应地做出预测。
这里有一个不同的方法。首先,看大象,我们可以建立一个大象看起来像什么的模型。然后,看小狗,我们可以建立一个不同的小狗看起来像什么的模型。最后,为了把一个新动物分类,我们可以把它和大象模型相比配,而且把它和小狗模型相比配,来看那个新动物是看起来更像我们训练集中的大象,还是更像我们训练集中的小狗。
试图直接学习的算法(例如逻辑回归)或试图学习从输入空间直接映射到标签的算法(如感知器算法),被称作判别学习算法(discriminative learing algorithms)。这里,我们反而将讨论试图建模(和)的算法。这些算法被称作生成学习算法(generative learing algorithms)。比如,如果表示一个样例是一只小狗(0)或者一只大象(1),然后是小狗特征分布的模型,是大象特征分布的模型。
建完模型(称作类的先验(class priors))和,我们的算法然后可以使用贝叶斯公式来推导给定时的的后验分布:
这里,分母由给出(你应该能够核实这是标准的概率性质),因此也可以根据我们学习的和项表示出来。实际上,如果我们在为了做出预测而计算,然后我们实际上不需要计算分母,因为
1 高斯判别分析
我们将要看的第一个生成学习算法是高斯判别分析(GDA)。在这个模型中,我们将假定服从多元正态分布。在继续讨论GDA模型本身之前,让我们简单的谈一下多元正态分布的特征。
1.1 多元正态分布
n维的多元正态分布,也称作多元高斯分布,是由一个均值向量(mean vector)和一个协方差矩阵(covariance matrix)参数化的,这里,是对称的和半正定的。也写作,它的密度由
给出。在上面的等式中,表示矩阵的行列式。
对于一个服从的随机变量,(毫无令人意外)均值由给出:
一个向量值随机变量Z的协方差被定义为。这推广了一个实数值随机变量的方差的符号。协方差也可以被定义成。(你应该能够向自己证明这两个定义是相等的。)如果,那么
这里有一些高斯分布的密度看起来像什么的例子:
最左边的图形显示了一个零均值(即,2 x 1的0-向量)和协方差矩阵(2 x 2的单位矩阵)的高斯分布(的密度)。一个具有零均值和单位协方差(阵)的高斯分布也被称为标准正态分布(standard normal distribution)。中间的图形显示了一个具有零均值和的高斯分布的密度;最右边的图形显示了一个零均值和的高斯分布的密度。我们看到,随着变得更大,高斯分布变得更“分散”,当它变得更小,分布变得更“压紧”的。
让我们再看一些例子。
上面的图形显示了0均值和协方差矩阵分别为
的高斯分布。最左边的图形显示了熟悉的标准正态分布,我们看到当我们增加中的非对角元素,沿45°直线(由给出的)密度变得更“压紧”。当我们看相同三个密度的轮廓时,我们可以更清晰地看到这些:
这里是最后一组通过变化产生的例子。
上边的图形分别使用了
从最左边和中间的图形,我们看到通过减小协方差矩阵的对角线元素,密度现在再次变得“压紧的”,但是是相反的方向。最后,当我们改变参数,轮廓一般会形成椭圆形的(最右边的图形显示了这样一个例子)。
作为我们最后一组例子,固定,通过改变,我们也可以在周围移动密度的均值。
上面的图形由,均值向量分别为
所生成的。
1.2 高斯判别分析模型
当我们有一个输入特征是连续值随机变量的分类问题时,我们然后可以使用高斯判别分析(GDA)模型,这个模型使用多元正态分布建模。模型为:
写出这个分布,它是:
这里,我们模型的参数是。(注意,尽管模型中有两个不同的均值,但这个模型通常被使用时只使用一个协方差矩阵。)数据的log-似然由
给出。
通过关于参数来最大化,我们发现参数的最大似然估计为:
形象地,算法在做什么如下所示:
图形中显示的是训练集,和两个已经拟合了两类数据的高斯分布的轮廓。注意,两个高斯分布有相同形状和朝向的轮廓,因为他们共有一个协方差矩阵,但是他们有不同的均值。图形中也显示了一条给出决策边界的直线,在直线上。在边界的一侧,我们预测是最有可能的结果,在另一侧,我们预测(是最有可能的结果)。
1.3 讨论:GDA和逻辑回归
GDA模型同逻辑回归有一个有趣的关系。如果我们把看作的函数,我们将会发现它可以被表示成
这样的形式,在这里是某个合适的的函数。这恰好是逻辑回归——一个判别算法——用来建模的形式。
我们什么时候更喜欢哪个模型呢?一般而言,当训练相同的数据集时,GDA和逻辑回归将给出不同的决策边界。哪个更好?
我们刚刚表明如果服从(共有的)多元高斯分布,然后必然是一个逻辑函数。然而,逆命题是不对的;也就是说,是一个逻辑函数不一定意味着是多元高斯分布。这表明,相比逻辑回归,GDA关于数据做了更强的建模假设。事实证明,当这些建模假设是正确的,GDA将会更好的拟合数据,是一个更好的模型。明确地说,当确实是(共有的)高斯分布,然后GDA是渐进有效(asymptotically efficient)的。非正式地,这意味着在非常大的训练集中(大的m),没有算法严格地比GDA更好(就评估的精确性而言)。特别是,可以证明,在这个背景下,GDA是一个比逻辑回归更好的算法;更一般地,即使对于小规模的训练集,我们一般认为GDA会更好一些。
相比之下,通过做出明显较弱的假设,逻辑回归对不正确的建模假设也更是鲁棒和不敏感。有很多不同的假设集可以致使为一个逻辑函数的形式。比如说,如果,然后将是逻辑函数。逻辑回归对于像这样的Poisson数据也工作的不错。但是如果我们使用GDA在这样的数据上——在这样非高斯分布的数据上拟合高斯分布——那么结果将是难以预测的,GDA可能(或可能不)工作的好。
总结:GDA做了更强的建模假设,于是当建模假设是正确的或近似正确时,它是更加数据有效的(也就是需要更少的数据就可以学习“好”)。逻辑回归做了弱一些的假设,因此对于建模假设中的偏差是明显更加鲁棒的。具体地说,当数据确实不是高斯分布时,然后在大的数据集下,逻辑回归几乎总是比逻辑回归做的好。由于这个原因,在实践中逻辑回归比GDA使用的更多。(尽管关于判别vs生成模型的一些相关的考虑也适用于我们接下来要讨论的朴素贝叶斯算法,但是朴素贝叶斯算法仍被认为是一个好的,当然也是一个很受欢迎的,分类算法。)
本篇文章介绍了生成学习算法的第一个算法:判别分析算法,并且讨论了它和逻辑回归的关系。在下一小节中,我们将讲述第二个生成学习算法:朴素贝叶斯算法。
想写一写机器学习的翻译来巩固一下自己的知识,同时给需要的朋友们提供参考,鉴于作者水平有限,翻译不对或不恰当的地方,欢迎指正和建议。
- 生成学习算法之高斯判别分析模型
- 生成学习算法、高斯判别分析与朴素贝叶斯模型
- 生成学习算法.高斯判别分析(GDA).GDA与Logistic模型
- 生成学习算法.高斯判别分析(GDA).GDA与Logistic模型
- 机器学习第四篇(stanford大学公开课学习笔记) —生成型学习算法之高斯判别分析模型和朴素贝叶斯方法
- 生成模型中的高斯判别分析和朴素贝叶斯
- 生成模型、高斯判别分析、朴素贝叶斯——斯坦福CS229机器学习个人总结(二)
- 分类-3-生成学习-2-高斯判别分析、协方差
- GDA高斯判别分析及判别式模型与生成式模型区别
- 机器学习 --高斯判别分析
- 机器学习--高斯判别分析
- 【cs229-Lecture5】生成学习算法:1)高斯判别分析(GDA);2)朴素贝叶斯(NB)
- 深入浅出机器学习之生成模型,高斯判别
- 高斯判别分析算法及其python实现
- 高斯判别分析算法及其python实现
- <机器学习练习>高斯判别分析GDA
- 斯坦福机器学习笔记1:GDA高斯判别分析算法的原理及matlab程序实现
- 高斯判别分析模型The Gaussian Discriminant Analysis model
- spi nor flash驱动
- sysbench安装及常见问题解决
- VB程序学习代码记录20160828
- leetcode_c++:Divide and Conquer:The Skyline Problem(218)
- poj3167 Cow Patterns
- 生成学习算法之高斯判别分析模型
- Mybatis的<if>和<choose>的区别 以及“=”判断
- 备忘录模式(java版)
- 会计学
- javaFx的变量,javaFx的数据类型,javaFx的运算符
- ios学习开发0828
- HUD 1541/BIT(数状数组)
- R语言从基础入门到提高(二)Vectors(向量)
- spark val b = a.flatMap(x => 1 to x)详解