安阳手机网站建设,上海网站建设公司排行榜,灯笼制作手工简单又漂亮,wordpress3.5.1zhcn生成模型与判别模型 一、决策函数Yf(X)或者条件概率分布P(Y|X)
监督学习的任务就是从数据中学习一个模型#xff08;也叫分类器#xff09;#xff0c;应用这一模型#xff0c;对给定的输入X预测相应的输出Y。这个模型的一般形式为决策函数Yf(X)或者条件概率分布P(Y|X)。 …生成模型与判别模型 一、决策函数Yf(X)或者条件概率分布P(Y|X)
监督学习的任务就是从数据中学习一个模型也叫分类器应用这一模型对给定的输入X预测相应的输出Y。这个模型的一般形式为决策函数Yf(X)或者条件概率分布P(Y|X)。
决策函数Yf(X)你输入一个X它就输出一个Y这个Y与一个阈值比较根据比较结果判定X属于哪个类别。例如两类w1和w2分类问题如果Y大于阈值X就属于类w1如果小于阈值就属于类w2。这样就得到了该X对应的类别了。
条件概率分布P(Y|X)你输入一个X它通过比较它属于所有类的概率然后输出概率最大的那个作为该X对应的类别。例如如果P(w1|X)大于P(w2|X)那么我们就认为X是属于w1类的。
所以上面两个模型都可以实现对给定的输入X预测相应的输出Y的功能。实际上通过条件概率分布P(Y|X)进行预测也是隐含着表达成决策函数Yf(X)的形式的。例如也是两类w1和w2那么我们求得了P(w1|X)和P(w2|X)那么实际上判别函数就可以表示为Y P(w1|X)/P(w2|X)如果Y大于1或者某个阈值那么X就属于类w1如果小于阈值就属于类w2。而同样很神奇的一件事是实际上决策函数Yf(X)也是隐含着使用P(Y|X)的。因为一般决策函数Yf(X)是通过学习算法使你的预测和训练数据之间的误差平方最小化而贝叶斯告诉我们虽然它没有显式的运用贝叶斯或者以某种形式计算概率但它实际上也是在隐含的输出极大似然假设MAP假设。也就是说学习器的任务是在所有假设模型有相等的先验概率条件下输出极大似然假设。
所以呢分类器的设计就是在给定训练数据的基础上估计其概率模型P(Y|X)。如果可以估计出来那么就可以分类了。但是一般来说概率模型是比较难估计的。给一堆数给你特别是数不多的时候你一般很难找到这些数满足什么规律吧。那能否不依赖概率模型直接设计分类器呢事实上分类器就是一个决策函数或决策面如果能够从要解决的问题和训练样本出发直接求出判别函数就不用估计概率模型了这就是决策函数Yf(X)的伟大使命了。例如支持向量机我已经知道它的决策函数分类面是线性的了也就是可以表示成Yf(X)WXb的形式那么我们通过训练样本来学习得到W和b的值就可以得到Yf(X)了。还有一种更直接的分类方法它不用事先设计分类器而是只确定分类原则根据已知样本训练样本直接对未知样本进行分类。包括近邻法它不会在进行具体的预测之前求出概率模型P(Y|X)或者决策函数Yf(X)而是在真正预测的时候将X与训练数据的各类的Xi比较和哪些比较相似就判断它X也属于Xi对应的类。
二、生成方法和判别方法
监督学习方法又分生成方法Generative approach和判别方法Discriminative approach所学到的模型分别称为生成模型Generative Model和判别模型Discriminative Model。
判别方法由数据直接学习决策函数Yf(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)就是你的训练数据的概率分布。哎刚才说了需要你的数据样本非常多的时候你得到的P(X)才能很好的描述你数据真正的分布。例如你投硬币你试了100次得到正面的次数和你的试验次数的比可能是3/10然后你直觉告诉你可能不对然后你再试了500次哎这次正面的次数和你的试验次数的比可能就变成4/10这时候你半信半疑不相信上帝还有一个手所以你再试200000次这时候正面的次数和你的试验次数的比就可以当成是正面的概率了就变成5/10了。
还有一个问题就是在机器学习领域有个约定俗成的说法是不要去学那些对这个任务没用的东西。例如对于一个分类任务对一个给定的输入x将它划分到一个类y中。那么如果我们用生成模型p(x,y)p(y|x)·p(x)
那么我们就需要去对p(x)建模但这增加了我们的工作量这让我们很不爽除了上面说的那个估计得到P(X)可能不太准确外。实际上因为数据的稀疏性导致我们都是被强迫地使用弱独立性假设去对p(x)建模的所以就产生了局限性。所以我们更趋向于直观的使用判别模型去分类。
这样的方法之所以称为生成方法是因为模型表示了给定输入X产生输出Y的生成关系。用于随机生成的观察值建模特别是在给定某些隐藏参数情况下。典型的生成模型有朴素贝叶斯和隐马尔科夫模型等。
三、生成模型和判别模型的优缺点
在监督学习中两种方法各有优缺点适合于不同条件的学习问题。
生成方法的特点上面说到生成方法学习联合概率密度分布P(X,Y)所以就可以从统计的角度表示数据的分布情况能够反映同类数据本身的相似度。但它不关心到底划分各类的那个分类边界在哪。生成方法可以还原出联合概率分布P(Y|X)而判别方法不能。生成方法的学习收敛速度更快即当样本容量增加的时候学到的模型可以更快的收敛于真实模型当存在隐变量时仍可以用生成方法学习。此时判别方法就不能用。
判别方法的特点判别方法直接学习的是决策函数Yf(X)或者条件概率分布P(Y|X)。不能反映训练数据本身的特性。但它寻找不同类别之间的最优分类面反映的是异类数据之间的差异。直接面对预测往往学习的准确率更高。由于直接学习P(Y|X)或P(X)可以对数据进行各种程度上的抽象、定义特征并使用特征因此可以简化学习问题。
四、生成模型和判别模型的联系
由生成模型可以得到判别模型但由判别模型得不到生成模型。
五、再形象点可以吗
例如我们有一个输入数据x然后我们想将它分类为标签y。迎面走过来一个人你告诉我这个是男的还是女的
生成模型学习联合概率分布p(x,y)而判别模型学习条件概率分布p(y|x)。
下面是个简单的例子
例如我们有以下(x,y)形式的数据(1,0), (1,0), (2,0), (2, 1)
那么p(x,y)是 y0 y1-----------x1 | 1/2 0x2 | 1/4 1/4而p(y|x) 是 y0 y1-----------x1 | 1 0x2 | 1/2 1/2我们为了将一个样本x分类到一个类y最自然的做法就是条件概率分布p(y|x)这就是为什么我们对其直接求p(y|x)方法叫做判别算法。而生成算法求p(x,y)而p(x,y)可以通过贝叶斯方法转化为p(y|x)然后再用其分类。但是p(x,y)还有其他作用例如你可以用它去生成(x,y)对。
再假如你的任务是识别一个语音属于哪种语言。例如对面一个人走过来和你说了一句话你需要识别出她说的到底是汉语、英语还是法语等。那么你可以有两种方法达到这个目的
1、学习每一种语言你花了大量精力把汉语、英语和法语等都学会了我指的学会是你知道什么样的语音对应什么样的语言。
2、不去学习每一种语言你只学习这些语言模型之间的差别然后再分类。意思是指我学会了汉语和英语等语言的发音是有差别的我学会这种差别就好了。
那么第一种方法就是生成方法第二种方法是判别方法。
生成算法尝试去找到底这个数据是怎么生成的产生的然后再对一个信号进行分类。基于你的生成假设那么那个类别最有可能产生这个信号这个信号就属于那个类别。判别模型不关心数据是怎么生成的它只关心信号之间的差别然后用差别来简单对给定的一个信号进行分类。