生成学习算法(Generative Learning algorithms)

一:引言

在前面我们谈论到的算法都是在给定x的情况下直接对p(y|x;Θ)进行建模。例如,逻辑回归利用hθ(x) = g(θTx)对p(y|x;Θ)建模。

现在考虑这样一个分类问题,我们想根据一些特征来区别动物是大象(y=1)还是狗(y=0)。给定了这样一个训练集,逻辑回归或感知机算法要做的就是去找到一个决策边界,将大象和狗的样本分开来。但是如果换个思路,首先根据大象的特征来学习出一个大象的模型,然后根据狗的特征学习出狗的模型,最后对于一个新的样本,提取它的特征先放到大象的模型中求得是大象的概率,然后放到狗的模型中求得是狗的概率,最后我们比较两个概率哪个大,即确定这个动物是哪种类型。也即求p(x|y)(也包括p(y)),y为输出结果,x为特征。

上面介绍了那么多,现在我们来试着定义这两种解决问题的方法:

判别学习算法(discriminative learning algorithm):直接学习p(y|x)或者是从输入直接映射到输出的方法

生成学习算法(generative learning algorithm):对p(x|y)(也包括p(y))进行建模。

为了深化理解生成学习算法,我们再看

y:输出变量,取两值,如果是大象取1,狗则取0

p(x|y = 0):对狗的特征进行建模

p(x|y = 1):对大象的特征建模

当我们对p(x|y)和p(y)完成建模后,运用贝叶斯公式,就可以求得在给定x的情况下y的概率,如下:

p(x) = p(x|y = 1)p(y = 1) + p(x|y =0)p(y = 0)

由于我们关心的是y离散结果中哪一个的概率更大,而不是要求得具体的概率,所以上面的公式我们可以表达为:

常见的生成模型有:隐马尔可夫模型HMM、朴素贝叶斯模型、高斯混合模型GMM、LDA等

二:高斯判别分析(Gaussian Discriminant Analysis)

下面介绍第一个生成学习算法,GDA。在GDA中,假设p(x|y)是多项正态分布

2.1 多项正态分布(The multivariate normal distribution)

n维的多项正态分布也成为多项高斯分布。参数为均值向量μ∈Rn   ,协方差矩阵∑∈Rnxn,记为其概率密度表示为:

|Σ|表示矩阵Σ的行列式(determinant)

均值 :

协方差:Cov(Z) =E[(Z − E[Z])(Z − E[Z])T ]=E[ZZT ]− (E[Z])(E[Z])T =Σ。If X ∼ N (µ, Σ),则Cov(X) = Σ.

接下来我们结合图像看一下多项高斯分布的例子。

说明:

左边第一个图,μ为一个2x1的向量,值为0,协方差矩阵∑=I(2x2的单位向量)此时的高斯分布称为标准正态分布

第二个图,μ不变,∑=0.6I

第三个图,μ不变,∑=2I

所以,决定中心位置,决定投影椭圆的朝向和大小。

2.2高斯判别分析模型(The Gaussian Discriminant Analysis model)

现在有一个分类问题,训练集的特征值x是随机连续值,那么我们可以利用高斯判别分析模型,假设p(x|y)满足多值正态分布,即:

概率分布为:

模型参数为φ, Σ, µ0 and µ1 ,对数似然函数为:

注意这里的参数有两个,表示在不同的结果模型下,特征均值不同,但我们假设协方差相同。反映在图上就是不同模型中心位置不同,但形状相同。这样就可以用直线来进行分隔判别。

求得所有的参数:

是训练样本中结果y=1占有的比例。

是y=0的样本中特征均值。

是y=1的样本中特征均值。

是样本特征方差均值。

所以通过上面所述,画出图像如下图:

直线两边的y值不同,但协方差矩阵相同,因此形状相同。不同,因此位置不同。

2.3讨论GDA和逻辑回归(Discussion: GDA and logistic regression)

现在我们把p(y = 1|x; φ, µ0, µ1, Σ)看成是x的函数,则可以表达为:

θ 是参数φ, Σ, µ0, µ1的函数,这正是逻辑回归的形式。

逻辑回归和GDA在训练相同的数据集的时候我们得到两种不同的决策边界,那么怎么样来进行选择模型呢:

上面提到如果p(x|y)是一个多维的高斯分布,那么p(y|x)可以推出一个logistic函数;反之则不正确,p(y|x)是一个logistic函数并不能推出p(x|y)服从高斯分布.这说明GDA比logistic回归做了更强的模型假设.

如果p(x|y)真的服从或者趋近于服从高斯分布,则GDA比logistic回归效率高.

当训练样本很大时,严格意义上来说并没有比GDA更好的算法(不管预测的多么精确).

事实证明即使样本数量很小,GDA相对logisic都是一个更好的算法.

但是,logistic回归做了更弱的假设,相对于不正确的模型假设,具有更好的鲁棒性(robust).许多不同的假设能够推出logistic函数的形式. 比如说,如果那么p(y|x)是logistic. logstic回归在这种类型的Poisson数据中性能很好. 但是如果我们使用GDA模型,把高斯分布应用于并不是高斯数据中,结果是不好预测的,GDA就不是很好了.

三:朴素贝叶斯(Naive Bayes)

在GDA中,特征向量x是连续的实数向量,那么现在谈论一下当x是离散时的情况。

我们沿用对垃圾邮件进行分类的例子,我们要区分邮件是不是垃圾邮件。分类邮件是文本分类的一种应用

将一封邮件作为输入特征向量,与现有的字典进行比较,如果在字典中第i个词在邮件中出现,则xi =1,否则xi =0,所以现在我们假设输入特征向量如下:

选定特征向量后,现在要对p(x|y)进行建模:

假设字典中有50000个词,x ∈ {0, 1}50000   如果采用多项式建模, 将会有250000种结果,250000-1维的参数向量,这样明显参数过多。所以为了对p(x|y)建模,需要做一个强假设,假设x的特征是条件独立的,这个假设称为朴素贝叶斯假设(Naive Bayes (NB) assumption),这个算法就称为朴素贝叶斯分类(Naive Bayes classifier).

解释:

如果有一封垃圾邮件(y=1),在邮件中出现buy这个词在2087这个位置它对39831这个位置是否出现price这个词都没有影响,也就是,我们可以这样表达p(x2087|y) = p(x2087|y, x39831),这个和x2087 and x39831 相互独立不同,如果相互独立,则可以写为p(x2087) = p(x2087|x39831),我们这里假设的是在给定y的情况下,x2087 and x39831 独立。

现在我们回到问题中,在做出假设后,可以得到:

解释

第一个等号用到的是概率的性质 链式法则

第二个等式用到的是朴素贝叶斯假设

朴素贝叶斯假设是约束性很强的假设,一般情况下 buy和price是有关系的,这里我们假设的是条件独立 ,独立和条件独立不相同

模型参数:

φi|y=1 = p(xi= 1|y = 1)

φi|y=0 = p(xi = 1|y = 0)

φy = p(y = 1)

对于训练集{(x(i) , y(i)); i =1, . . . , m},根据生成学习模型规则,联合似然函数(joint likelihood)为:

得到最大似然估计值:

最后一个式子是表示y=1的样本数占全部样本数的比例,前两个表示在y=1或0的样本中,特征Xj=1的比例。

拟合好所有的参数后,如果我们现在要对一个新的样本进行预测,特征为x,则有:

实际上只要比较分子就行了,分母对于y = 0和y = 1是一样的,这时只要比较p(y = 0|x)与p(y = 1|x)哪个大就可以确定邮件是否是垃圾邮件。

3.1拉普拉斯平滑(Laplace smoothing)

朴素贝叶斯模型可以在大部分情况下工作良好。但是该模型有一个缺点:对数据稀疏问题敏感。

  比如在邮件分类中,对于低年级的研究生,NIPS显得太过于高大上,邮件中可能没有出现过,现在新来了一个邮件"NIPS call for papers",假设NIPS这个词在词典中的位置为35000,然而NIPS这个词从来没有在训练数据中出现过,这是第一次出现NIPS,于是算概率时:

由于NIPS从未在垃圾邮件和正常邮件中出现过,所以结果只能是0了。于是最后的后验概率:

对于这样的情况,我们可以采用拉普拉斯平滑,对于未出现的特征,我们赋予一个小的值而不是0。具体平滑方法为:

假设离散随机变量取值为{1,2,···,k},原来的估计公式为:

使用拉普拉斯平滑后,新的估计公式为:

即每个k值出现次数加1,分母总的加k,类似于NLP中的平滑,具体参考宗成庆老师的《统计自然语言处理》一书。

  对于上述的朴素贝叶斯模型,参数计算公式改为:

时间: 2024-10-13 15:35:09

生成学习算法(Generative Learning algorithms)的相关文章

分类和逻辑回归(Classification and logistic regression),广义线性模型(Generalized Linear Models) ,生成学习算法(Generative Learning algorithms)

分类和逻辑回归(Classification and logistic regression) http://www.cnblogs.com/czdbest/p/5768467.html 广义线性模型(Generalized Linear Models) http://www.cnblogs.com/czdbest/p/5769326.html 生成学习算法(Generative Learning algorithms) http://www.cnblogs.com/czdbest/p/5771

机器学习算法笔记2_1:生成学习算法(Generative Learning algorithms)

我们之前学习的算法都是基于p(y|x;θ), 他的思想是找出找出一个决策边界来将两类分开,而生成算法是先对两个类别分别建模,为了将样本分开,将样本代入两个模型,看样本与哪个类别更匹配. 这种试图直接从输入x映射到类别标签{0,1}的算法被称为判别学习算法:而通过计算p(x|y)(和p(y))来得到模型的算法被称为生成学习算法 通过贝叶斯函数得到p(y|x)=p(x|y)p(y)p(x), argmaxyp(y|x)=argmaxyp(x|y)p(y)p(x)=argmaxyp(x|y)p(x)

2020/03/05 生成模型&生成学习(Generative Learning)的流程

在之前的学习2020/01/02 深度学习数学基础学习--朴素贝叶斯中,大概的了解了生成学习的原理,但是对算法实现的 完整流程 不够清晰,所以今天想通过对生成学习回顾,明确一下生成学习的流程框架. 学习资料:斯坦福CS229-note2-Generative Learning algorithms的1.2节 必要的概念 类别先验概率: \(P(c)\) 类条件概率: \(P(\vec x | c)\) ,其中\(\vec x=(x_{1},x_{2},...,x_{m}); m为属性\),\(\

【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

生成学习算法

生成学习算法引入 目前为止,我们主要讲解了条件概率模型p(y|x,θ)的学习算法.接下来,我们将讨论其他的学习算法.接下来举个例子,比如现在遇到一个分类问题,基于一些特征来判断一个动物是大象 (y = 1) 还是小狗 (y = 0).基于给定的数据集,我们可以采用logistic回归或者感知器学习的方法来寻找一条直线(称之为决策边界)把大象和小狗分割开割开来.之后预测新的动物时,只要判断它在决策边界的哪一边就可以预测其所属分类. 现在有另外一种方法.首先是查看大象的数据,然后建立一个什么是大象的

(笔记)斯坦福机器学习第五讲--生成学习算法

 本讲内容 1. Generative learning algorithms(生成学习算法) 2. GDA(高斯判别分析) 3. Naive Bayes(朴素贝叶斯) 4. Laplace Smoothing(拉普拉斯平滑) 1.生成学习算法与判别学习算法 判别学习算法:直接学习  或者学习一个假设  直接输出0或者1.logistic回归是判别学习算法的一个例子. 生成学习算法:对  建模,即在给定所属的类别的情况下,对特征出现的概率建模.出于技术上的考虑,也会对  建模.   根据贝叶斯公

生成学习算法、朴素Bayes入门

PART0  判别学习算法 引入:二元分类问题 建模:判别学习算法(discriminative learning algorithm)直接根据P(y|x)[即给定特征x下的分类结果y]建模 之前我们用的算法(如logistic回归)就是判别学习算法 PART1  生成学习算法 PART1.1  Definition 引入:还是二元分类问题 建模:生成学习算法(generative learning algorithm)对P(x|y)[即给定具体的一类y下的特征x].P(y)建模,然后由baye

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

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

Stanford大学机器学习公开课(五):生成学习算法、高斯判别、朴素贝叶斯

(一)生成学习算法 在线性回归和Logistic回归这种类型的学习算法中我们探讨的模型都是p(y|x;θ),即给定x的情况探讨y的条件概率分布.如二分类问题,不管是感知器算法还是逻辑回归算法,都是在解空间中寻找一条直线从而把两种类别的样例分开,对于新的样例,只要判断在直线的哪一侧即可:这种直接对问题求解的方法可以称为判别学习方法. 而生成学习算法则是对两个类别分别进行建模,用新的样例去匹配两个模板,匹配度较高的作为新样例的类别,比如分辨大象(y=1)和狗(y=0),首先,观察大象,然后建立一个大