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

 本讲内容

1. Generative learning algorithms(生成学习算法)

2. GDA(高斯判别分析)

3. Naive Bayes(朴素贝叶斯)

4. Laplace Smoothing(拉普拉斯平滑)

1.生成学习算法与判别学习算法

判别学习算法:直接学习  或者学习一个假设  直接输出0或者1。logistic回归是判别学习算法的一个例子。

生成学习算法:对  建模,即在给定所属的类别的情况下,对特征出现的概率建模。出于技术上的考虑,也会对  建模。

         根据贝叶斯公式   得到后验概率。

       其中

       

2.高斯判别分析

高斯判别分析属于生成学习算法

首先,高斯判别分析的两个假设:

(1). , 且是连续值

(2).  属于高斯分布

多元高斯分布

当一个随机变量z满足多元高斯分布时,

所以z的概率密度函数如下

向量 是高斯分布的均值,矩阵 是协方差矩阵,

协方差矩阵对角线元素的值控制图像起伏的程度,反对角线元素的值控制图像起伏的方向。

均值控制图像中心的位置。

高斯判别分析模型

假设y服从伯努利分布,

用高斯分布对 建模

这个模型的参数为 

对这些参数作极大似然估计

这个公式被称为joint likelihood(联合似然性)

对于判别学习算法,我们的参数似然性公式定义如下

这个公式被称为conditional likelihood(条件似然性)

因此,对于生成学习算法,我们对参数的联合似然函数作极大似然估计

     对于判别学习算法,我们对参数的条件似然函数作极大似然估计 

对联合似然函数作极大似然估计,得到参数的值为

得到参数值之后, 对于一个新样本x,预测值为

         

高斯判别分析和logistic回归的关系

假设  属于高斯分布,那么一定可以推出 是一个logistic函数,但是反推不成立

这说明, 服从高斯分布的假设,要比  服从logistic分布的假设更强

那么该如何权衡高斯判别分析模型和logistic回归模型呢?

GDA做出了一个更强的假设,即  服从高斯分布,一旦这个假设正确或者近似正确,那么GDA算法的表现将会比logistic回归要好。

因为这个算法利用了更多数据的信息,算法知道数据服从高斯分布。

相反地,如果不确定  的分布情况,那么logistic回归将会表现的更好,logistic回归的弱假设使得logistic回归算法具有更好的鲁棒性,对不确定的数据分布依然能够得到一个较好的结果。

进一步,假设 的分布属于指数分布簇,那么一定可以推出 是一个logistic函数,但是反推不成立

事实证明,使用生成学习算法的好处是,生成学习算法要比判别学习算法需要更少的数据,

即使在数据量特别小的情况下,生成学习算法依然能够拟合出一个还不错的模型。

3.朴素贝叶斯 

朴素贝叶斯属于生成学习算法

对于一个垃圾邮件分类的问题,这是一个二分类的问题  

那么对于一封邮件,我们如何创建特征向量x?

普遍的做法是创建一个词典,假设该词典包含50000个单词,那么对于邮件中出现的单词,我们在词典的相应位置置1,邮件中没有出现的单词,

词典中相应的位置置0.这样对于每一封邮件,我们就可以得到一个长度为50000的特征向量x

解决了特征向量的表示问题,那么该如何对  建模呢?

假设采用多项式分布,特征向量x的取值有2^50000个,那么需要2^50000-1个参数,参数量实在是太大了。

因此朴素贝叶斯做了一个非常强的假设:给定y的时候, 是相互独立的,(是指邮件中第i个位置的单词

   (链式法则)

                                       (朴素贝叶斯的强假设)

             

很显然朴素贝叶斯的假设是不可能成立的,但是事实证明朴素贝叶斯算法确实是一个非常有效的算法。

该模型的参数:

联合似然函数为

作极大似然估计(求偏导数,然后让其等于0)求得参数

因此对于一封新的邮件x,预测值y为

高斯判别分析模型和朴素贝叶斯模型的区别?

当随机变量X的取值是连续值时,可以采用GDA模型进行预测,

当随机变量X的取值是离散值时,可以采用朴素贝叶斯模型。

对于上述邮件的例子,是否是垃圾邮件属于二分类问题,  ,因此对 建模为伯努利分布

在给定y的情况下,朴素贝叶斯假设每个单词的出现互相独立,每个单词是否出现也是一个二分类问题,即 ,因此对  也建模为伯努利分布。

在GDA模型中,假设我们要处理的依然是二分类问题,对  依然建模为伯努利分布。

在给定y的情况下,x的取值是连续值,所以我们对  建模为高斯分布。

在上述邮件例子中存在一个问题:假设在一封邮件中出现了一个以前邮件从来没有出现的词,那么在预测该邮件是否是垃圾邮件时,

      

       

存在  使得  和  都为0

那么    模型失灵。

换句话说,在有限的训练集中没有出现过的特征,不可以简单的认为该特征以后会出现的概率为0.

修正方法是采用laplace平滑。

4.laplace平滑 

假设y可以取k个不同的值,,那么

分子加1,分母加k,以避免 在预测从未见过的新值时,分子分母都为0的情况。

在上述邮件问题中,

            

同理

第五讲完。

时间: 2024-11-06 03:40:59

(笔记)斯坦福机器学习第五讲--生成学习算法的相关文章

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

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

机器学习算法笔记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)

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

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

【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回归或者感知器学习的方法来寻找一条直线(称之为决策边界)把大象和小狗分割开割开来.之后预测新的动物时,只要判断它在决策边界的哪一边就可以预测其所属分类. 现在有另外一种方法.首先是查看大象的数据,然后建立一个什么是大象的

生成学习算法(Generative Learning algorithms)

一:引言 在前面我们谈论到的算法都是在给定x的情况下直接对p(y|x;Θ)进行建模.例如,逻辑回归利用hθ(x) = g(θTx)对p(y|x;Θ)建模. 现在考虑这样一个分类问题,我们想根据一些特征来区别动物是大象(y=1)还是狗(y=0).给定了这样一个训练集,逻辑回归或感知机算法要做的就是去找到一个决策边界,将大象和狗的样本分开来.但是如果换个思路,首先根据大象的特征来学习出一个大象的模型,然后根据狗的特征学习出狗的模型,最后对于一个新的样本,提取它的特征先放到大象的模型中求得是大象的概率

生成学习算法、朴素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

分类和逻辑回归(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

吴裕雄 python 机器学习——人工神经网络感知机学习算法的应用

import numpy as np from matplotlib import pyplot as plt from sklearn import neighbors, datasets from matplotlib.colors import ListedColormap from sklearn.neural_network import MLPClassifier ## 加载数据集 np.random.seed(0) # 使用 scikit-learn 自带的 iris 数据集 ir