生成学习算法(Generative Learning Algorithms)
来源:互联网 发布:淘宝红人模特排行榜 编辑:程序博客网 时间:2024/04/28 14:44
今天我们来聊一聊生成学习算法,内容主要包括生成模型和判别模型的比较,以及生成学习算法的一个例子——高斯判别分析(Gaussian Discriminant Analysis, GDA)。
1. 生成模型和判别模型
前面我们讨论的学习算法(线性回归、逻辑回归、softmax等)都有一个共同点,那就是我们都在想方设法求出
我们现在考虑另外一种思路,就是从训练集中我们先总结出各个类别的特征分布都是什么样的,也就是得到
也就是说,判别方法并不关心数据是长什么样子的,它直接面向分类任务,只关心数据之间的区别或者差异,然后利用学习到的区别来对样本作出预测。而生成方法则试图弄清楚数据是怎样产生的,每种类别数据的分布规律是什么,然后对于测试样本,再去判断那个类别最有可能产生这样的数据。
那怎么通过各个类别的特征分布判断一个新样本呢?这时就需要用到贝叶斯定理(Bayes rule)了:
我们选出使
这个式子直观上也很好理解:比如我们在马路边远远地望到一个小动物,你想要判断它是一只狗还是一只鹿。首先,你肯定是要观察它的特征,然后根据你之前已经建立的经验,把它分别与狗和鹿的特征相对比,看更像哪个,也就是利用条件概率p(x|y)。然而距离太远了,根据你现在能够观察到的来看,可能和两者的特征都很符合。这个时候如果要让你作出判断的话,我想大多数人都会认为这个在马路边出现的动物是狗。为什么呢?因为狗在城市中更为常见,先验概率p(y=dog)的值更大。在这个过程中,我们便是同时利用了条件概率和先验概率来作出判断的。
注意,虽然在这个公式中也出现了
另外有一个问题,在我看到的资料中都没有明确提到,也可能是我涉猎较少没有发现,但我觉得应该注意的是,训练集中各个类别样本所占比例的问题。我们的生成模型中的p(y)就是由此得到的。有时为了得到充分的样本我们可能会刻意均衡每个类别样本的数量。比如前面马路边小动物分类的问题里,我们在训练集中收集的狗和鹿的数量各占一半。但我们在实际生活中见到它们的比例并不是这样的,可能我们见到狗的概率为……这样我们的p(y)就不是真实的。所以我们的训练集要具有代表性,而不能人为地控制比例。
我们首先来讨论一下高斯判别分析模型,感受一下生成方法的概念,并对比了高斯判别分析模型和逻辑回归的联系和区别。后面我们再具体讨论更加经典的生成模型——朴素贝叶斯分类器(Naive Bayes classifier)。
2. 高斯判别分析模型(Gaussian Discriminant Analysis model)
作为生成模型的第一个例子,我们来讨论一下高斯判别分析模型(Gaussian Discriminant Analysis model)。这是个什么模型呢?其实很好理解,就是在一个二元分类问题中,类别y依然是服从伯努利分布,然后给定y的情况下,条件概率p(x|y)服从高斯分布,写成数学形式就是这样:
相应的概率分布就是:
这很好理解吧。它的对数似然函数:
好,我们现在从训练数据中学习模型的参数。数学推导的方法与之前我们用到的最大化对数似然函数的方法一致,我们可以得到:
再次说明,这里的
我们把学习到的参数代回到p(x|y=i)中,就可以得到不同类别下样本特征的分布情况了,本例中的分布是这样的:
这就是两种类别下特征的分布情况,是二维的高斯分布,不同轮廓线代表不同的概率值,越靠近中心的值位置越大。这样,对于每一个测试样本,我们就可以计算出它在不同类别下的条件概率,再结合p(y),来得出使它出现的概率最大的类别了。
3. 高斯判别分析和逻辑回归的关系
从高斯判别分析模型中,如果我们应用贝叶斯定理,计算出y=1关于x的条件概率,我们可以得到:
为了简洁表示,这里用
那么这两种方法我们到底应该选择哪种呢?对于同样的训练集,GDA和逻辑回归一般会给出不同的决策边界,那到底哪一种比较好呢?
是这样的,从上面的推导过程我们也可以看出,如果
然而,逻辑回归也有它的好处。那就是由于它对数据的假设条件比较弱,因此它更加鲁棒,如果对数据的假设出了点差错,也并不会对它造成多大的影响。它的性格属于“成大事不拘小节”型的。实际上,还有一些其它的数据分布也可以使用逻辑回归,比如泊松分布。相比之下,GDA就只能做专一的“精细活儿”了,如果我们用GDA来预测符合泊松分布的数据,那结果很可能就不怎么好了。
总结一下两者的特点就是:GDA模型的假设更强,对于符合要求的数据,可以在更少的样本中学习出有效的结果。逻辑回归则相反,它对数据的假设较弱,但这也使得它对模型假设的偏差问题更加鲁棒。特别地,如果数据不是高斯分布的话,那么在有限的样本集中,逻辑回归通常比GDA表现更好。因此在实际中逻辑回归更加常用。
后面我们将要讨论一个更加著名的生成学习算法——朴素贝叶斯分类器(Naive Bayes classifier)。
- 生成学习算法(Generative Learning Algorithms)
- 生成学习算法Generative Learning algorithms
- 生成学习算法(generative learning algorithms)
- 生成学习算法Generative Learning algorithms
- Generative Learning algorithms生成学习算法
- 生成学习算法(Generative Learning algorithms)
- 生成学习算法(generative learning algorithms)和判别学习算法(discriminative learning algorithms)
- 机器学习算法笔记2_1:生成学习算法(Generative Learning algorithms)
- 机器学习系列-Generative Learning Algorithms
- 关于机器学习中的生成学习算法(Generative Learning Algorithm)
- MachineLearning—Generative Learning algorithms
- 生成学习算法(Generative Learning):GDA(高斯判别)和Navie Bayes(朴素贝叶斯)(一)
- 5 Generative Learning algorithms ,Discriminative algorithm
- 生成对抗网络学习笔记5----DCGAN(unsupervised representation learning with deep convolutional generative adv)的实现
- 生成对抗网络学习笔记5----DCGAN(unsupervised representation learning with deep convolutional generative adv)的实现
- 层级实时记忆脑皮质学习算法(HTM Cortical Learning Algorithms)-------英文原版翻译
- 生成对抗网络学习笔记3----论文unsupervised representation learning with deep convolutional generative adversarial
- 机器学习 Generative Learning Algorithm (A)
- Java程序执行Linux命令
- bzoj3265: 志愿者招募加强版 单纯形
- Bestcoder Pro.ID 2011 多项式求和
- Android群英传第五章笔记·Android Scroll分析
- myeclipse插件安装-svn插件
- 生成学习算法(Generative Learning Algorithms)
- XML (7)
- Android Studio的使用03-配置忽略文件
- 二.常见标签、选择符与伪类
- 双向BFS初步——c++代码分析
- JS 返回上一步(退回上一步上一个网页)
- Scrapy Pipeline之处理CPU密集型或阻塞型操作
- php+mysql日期时间转换
- 关于前端的思考与感悟