【机器学习】判别模型vs生成模型

判别模型vs生成模型

条件概率分布p(y|x)

从概率的角度来看监督学习的话,其实就是从数据集中学习条件概率分布p(y|x)。其中, xRn 表示n维数据特征, yR 表示数据对应的类别标签。给定一个x,模型计算出x属于各个类别标签y的概率p(y|x),然后判定x的预测标签为p(y|x)最大的y标签。

比如,现在的一个问题为判定一个动物是汪星人还是喵星人。这个问题可以表示为x=[叫声,食物,毛的颜色],y=[汪星人,喵星人]。监督学习就是去比较p(y=汪星人|x) 和p(y=喵星人|x)的概率谁大,预测给定的动物为概率较大的动物。

判别模型(discriminative model) vs 生成模型(generative model)

监督学习中估计p(y|x)的方法分为两种:判别方法和生成方法,其对应的就是判别模型和生成模型。

判别模型:基于给定的数据集,直接计算p(y|x),形象的说就是直接学习找到一条决策边界,判别数据的类别标签,在决策边界一侧的是类别0,在另外一侧的是类别1。形象的描述可以使用下图表示:给定一堆的蓝色和红色的点,监督学习通过不断的学习找到了一条直线,这条直线尽可能的将不同颜色的点划分开来。当给定了一个新的点,如果这个条落在直线的上方,则判定为红色,否则为蓝色。
这里写图片描述

考虑上述所说的判定动物为猫还是狗的问题,用判别模型解决就是,通过观察这个动物的叫声、食物和毛的颜色特征,来直接判定这个动物是属于汪星人还是汪星人。常见的判别模型有KNN,决策树,PLA等。

生成模型 :基于给定的数据集,首先要学习得到其联合概率分布p(x,y)和p(x),再通过等式 p(y|x)=p(x,y)p(x)=p(x|y)p(y)p(x) 来计算p(y|x)。考虑上述所说的判定动物为喵星人还是汪星人的问题,用判生成解决就是,给定一堆的喵星人和汪星人,我们可以很容易得到 p(y=)= p(y=)= ,然后我们还需要观察喵星人有什么特征 p(x|y=) 和汪星人有什么特征 p(x|y=) 。比如喵星人吃鱼,“喵喵喵”的叫;汪星人吃骨头,“汪汪汪”的叫。当判定一个新动物的时候,去观察这个新动物的特征更像汪星人 p(y=|x) 还是猫星人 p(y=|x)

在生成模型中,我们还需要对 p(x) 建模,如果有大量数据的话,可以较准确的衡量 P(x) ,但是如果数据量较少就会导致偏差。不过,如果数据集固定,那么对于任意的类别标签 p(x) 都是一个定值 p(x)=p(x|y=1)p(y)+p(x|y=0)p(y=0) ,因此我们可以直接通过 p(y|x)p(x|y)p(y) 来衡量。

生成模型中常见的有:NB,HMM等。

判别模型和生成模型的优缺点

判别模型
- 缺点:判别模型直接学习 P(y|x) ,即找到一条判别边界,使得不同类别之间的划分距离尽可能大,并不关心数据本身的特征 p(x) ,因此无法反应数据的特性。
- 但是正是由于判别模型不关心 p(x) ,直接有数据集学习判定预测数据的类别,因此减少了计算,模型简单。

生成模型
- 缺点:与判别模型相反,生成模型因为考虑了 p(x,y)P(x) ,导致了模型复杂度增加,而且由于 P(x) 会引来偏差,降低预测准确率。
- 优点: 生成模型可以学习到数据本身的特征,并且可以将学习到的特征,应用到其他判别问题上。如果估计的问题并不是数据所属的类别y,而是某个隐藏的特性z,生成模型就可以估计出隐藏变量z的分布,判别模型就无法做到: p(y|x)p(x)=p(x)p(z|x)p(y|z)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值