生成模型与判别模型
决策函数Y=f(X)和条件概率分布P(Y|X)
监督学习,以分类器为例,实际学习的是决策函数:输入X,计算Y。
- 决策函数
- 时,将Y与一个阈值比较,判断X的类别,例如二分类,Y大于阈值,属于类别0,Y小于阈值,属于类别1.
- 条件概率分布
- ,输入X,比较输出概率最大的作为X对应的类别,例如二分类:
- ,则属于类别0.
上述两个模型都可以计算X属于的类别,实际上条件概率分布
预测也隐含这决策函数
的形式,而决策函数
也隐含着条件概率分布。
- 例如二分类,我们求得了
- 和
- ,判别函数Y可以表示为
- ,如果Y>1或者某个阈值,X就是类别0
- 一般决策函数
- 是通过算法拟合模型的预测和训练数据的误差,这实际也在隐含的输出极大似然假设,也就是说学习器的任务在所有假设模型有相等的先验概率条件下,输出极大似然假设
所以,可以这样理解,分类器的设计是为了学习给定数据下的概率模型
,但概率模型比较难以估计,我们通过一个决策函数,根据数据和目标问题求出判别函数,就不需要估计概率模型了。
生成方法和判别方法
监督学习方法又分生成方法(Generative approach)和判别方法(Discriminative approach),所学到的模型分别称为生成模型(Generative Model)和判别模型(Discriminative Model)。
判别方法:由数据直接学习决策函数Y=f(X)或者条件概率分布P(Y|X)作为预测的模型,即判别模型。基本思想是有限样本条件下建立判别函数,不考虑样本的产生模型,直接研究预测模型。典型的判别模型包括k近邻,感知级,决策树,支持向量机等。
生成方法:由数据学习联合概率密度分布P(X,Y),然后求出条件概率分布P(Y|X)作为预测的模型,即生成模型:P(Y|X)= P(X,Y)/ P(X)。基本思想是首先建立样本的联合概率概率密度模型P(X,Y),然后再得到后验概率P(Y|X),再利用它进行分类,就像上面说的那样。注意了哦,这里是先求出P(X,Y)才得到P(Y|X)的,然后这个过程还得先求出P(X)。P(X)就是你的训练数据的概率分布。
这样的方法之所以称为生成方法,是因为模型表示了给定输入X产生输出Y的生成关系。用于随机生成的观察值建模,特别是在给定某些隐藏参数情况下。典型的生成模型有:朴素贝叶斯和隐马尔科夫模型等。
两个例子
例如我们有以下(x,y)形式的数据:(1,0), (1,0), (2,0), (2, 1)
那么p(x,y)是:
y=0 |
y=1 |
|
x=1 |
1/2 |
0 |
x=2 |
1/4 |
1/4 |
而p(y|x) 是:
y=0 |
y=1 |
|
x=1 |
1 |
0 |
x=2 |
1/2 |
1/2 |
我们为了将一个样本x分类到一个类y,最自然的做法就是条件概率分布
,这就是为什么我们对其直接求
方法叫做判别算法。而生成算法求
,而
可以通过贝叶斯方法转化为
,然后再用其分类。但是
还有其他作用,例如,你可以用它去生成(x,y)对。
再举一个更形象的例子,老师给学渣和学霸做考前辅导,解题方式有两种:
- 第一种,这道题涉及的知识点balabalabala,根据balabalabala…
- 第二种,根据经验,看懂不会做的选B,看不懂的选D
考试时,学霸根据balabala全做完了,学渣根据第二种方式也做完了,结果一看,学霸和小明都考了98分。可以理解,学霸用的生成方法解题,找到解题所需的理论解题,小明用判别的方式解题,根据题的差别(能不能读懂题)解题。
特别感谢大佬12年的博客,让我理解了很多 生成模型与判别模型