监督学习的任务都是从数据中学习一个模型(也叫做分类器),应用这一模型,对给定的输入xxx预测相应的输出YYY,这个模型的一般形式为:决策函数Y=f(x)Y =f(x)Y=f(x),或者条件概率分布P(Y∣X)P(Y|X)P(Y∣X)
决策函数Y=f(x)Y = f(x)Y=f(x):你输入一个xxx,其就输出一个y,y,y,,这个YYY与一个阈值比较,根据比较结果判定xxx属于那个类别,例如两个累w1和w2w1和w2w1和w2的分类问题,如果YYY大于阈值,则xxx属于类w1w1w1,如果小于阈值则属于类w2w2w2,这样就得到了该x对应的类别啦。
条件概率分布P(Y∣X)P(Y|X)P(Y∣X),你输入一个x,其通过比较其属于所有类的概率,然后输出概率最大的作为该xxx对应的类别。例如:
如果P(w1∣x)大于p(w2∣x)P(w1|x)大于p(w2|x)P(w1∣x)大于p(w2∣x),那么我们就认为xxx属于w1类的。
所以上面两个模型,都可以实现对给定输入XXX预测相应的输出YYY的功能。实际上通过条件概率的分布P(Y∣X)P(Y|X)P(Y∣X),进行预测,也是隐含着表达成决策函数Y=f(x)Y = f(x)Y=f(x)形式的。例如也是两类w1和w2w1和w2w1和w2,那么我们求得P(w1∣x),P(w2∣x)P(w1|x),P(w2|x)P(w1∣x),P(w2∣x),那么实际上判别函数都可以表示成:Y=P(w1∣X)/P(w2∣X)Y= P(w1|X)/P(w2|X)Y=P(w1∣X)/P(w2∣X),如果Y大于1或者某个阈值,那么X就属于类w1,如果小于阈值则属于w2。而同样的,很神奇的一件事请,实际上决策函数Y=f(x)Y = f(x)Y=f(x),也是隐含着使用P(Y∣X)P(Y|X)P(Y∣X)的,
因为一般决策函数Y=f(X)Y=f(X)Y=f(X),是通过学习算法,使你的预测和训练数据之间的误差平方最小化。而贝叶斯告诉我们,虽然其没有显示的运用贝叶斯或者以某种形式计算概率,但其实际上也是在隐含的输出极大似然假设,(MAP假设)。也就是说学习器的任务是在所有假设模型都有相等的先验概率条件下。输出极大似然假设。
所以呢,分类器的设计都是给定训练数据的基础上,估计其概率模型P(Y∣X)P(Y|X)P(Y∣X),如果可以估计出来,那么就可以进行分类的。但是一般来说,概率模型是比较难估计的,给一堆数给你。特别是数不多的时候,你一般很难找到这些数满足什么规律吧。那能否不依赖概率模型直接设计分类器呢?事实上,分类器就是一个决策函数(决策面)。如果能够从要解决问题和训练样本出发,直接求出判别函数。就不用估计概率模型了。这就是决策函数Y=f(x)Y = f(x)Y=f(x)的伟大使命了。例如:支持向量机,我们已经知道其决策函数(分类面)是线性的了。也就是可以表示成Y=f(X)=WX+bY=f(X)=WX+bY=f(X)=WX+b的形式的。 那么我们通过训练样本来学习得到W和bW和bW和b的值,就可以得到Y=F(X)Y = F(X)Y=F(X),
还有一种更直接的分类方法,其不用事先设计分类器,而是只确定分类原则,根据已知样本(训练样本)直接对未知样本进行分类。包括近邻法、其不会在进行具体的预测之前求出概率模型P(Y∣X)P(Y|X)P(Y∣X),或者决策函数Y=f(x)Y = f(x)Y=f(x),而是在真正预测的时候,将x与训练数据的各类xix_ixi比较,和那些比较相似,就判断其X属于xix_ixi对应的类。
监督学习方法又分为生成式方法和判别式方法。所学到的模型分别分为生成模型和判别模型,简称GM和DM。
生成方法:由数据学习联合概率分布P(X,Y)P(X,Y)P(X,Y),然后求出条件概率分布P(Y∣X)P(Y|X)P(Y∣X),作为预测模型,即生成模型为
P(Y∣X)=P(X,Y)P(X)P(Y|X) = \frac{P(X,Y)}{P(X)}P(Y∣X)=P(X)P(X,Y)
基本思想是首先建立,联合样本的概率密度模型P(X,Y)P(X,Y)P(X,Y),然后再得到后验概率P(Y∣X)P(Y|X)P(Y∣X),再利用其进行分类。就像上面所说那样,这里先求出P(X,Y)P(X,Y)P(X,Y)才得到P(Y∣X)P(Y|X)P(Y∣X)的,然后这个过程还是先求出P(x)P(x)P(x),P(x)P(x)P(x)就是你训练数据的概率分布。需要你的数据样本非常多的时候,你得到的P(x)P(x)P(x)才能很好额描述你数据的真正分布,例如,你投硬币,你尝试了100次,得到正面次数和你实验次数比可能是310\frac{3}{10}103, 然后你直觉告诉你,你可能不对,然后你再尝试了500次,哎,这次,你正面次数和你的实验次数的比可能变成了410\frac{4}{10}104,这时候,你就半信半疑了,不相信上帝还有一个手,所以你再尝试了200000次,这时候正面次数和你实验次数比,就变成510\frac{5}{10}105,这时候,你就觉得很靠谱啦。
还有一个问题,就是,在机器学习这种还有一个约定俗称的规则,不要去学习那些对机器学习任务没有用的东西。例如:对于一个分类任务,对一个给定输入xxx中,在将其划分到一个类yyy中,那么我们用生成模型:p(x,y)=p(y∣x).p(x)p(x,y)=p(y|x).p(x)p(x,y)=p(y∣x).p(x).
那么,我们就**需要去对p(x)建模**,但这增加了我们的工作量,(除了上面说的那个**估计得到P(X)可能不太准确外)**。实际上,因为数据的稀疏性,导致我们都**是被强迫地使用弱独立性假设去对p(x)建模**的,所以就产生了局限性。所以我们**更趋向于直观的使用判别模型去分类**。这样的方法之所以称为生成方法,是因为模型表示了给定输入X产生输出Y的生成关系。**用于随机生成的观察值建模**,特别是在给定某些隐藏参数情况下**。典型的生成模型有:朴素贝叶斯和隐马尔科夫模型**等。