生成学习算法
在线性回归和Logistic回归这种类型的学习算法中我们探讨的模型都是
p(y|x;θ)
,即给定
x
的情况探讨这里不再赘述该函数的具体表达形式,忘了的同学可以自行goole之。
在本文中我们来探讨一种与前文所讲的模型相反的学习算法。
考虑这样一类分类问题,我们想要基于动物的某些特征来分辨大象
考虑用不同的方法来解决这个问题,首先,我们观察大象,然后建立一个大象长什么样子的模型,之后,我们观察狗,同样建立一个狗长什么样子的模型,最后,为了判断一个新来的动物是狗还是大象,我们将这个动物与大象模型进行匹配,再与狗模型进行匹配,看看这个新的动物更像狗还是更像大象从而判断这个动物到底是什么。
让我们来对上述描述的两种算法做一个系统的描述,第一种算法尝试直接学习
p(y|x)
(例如logistic回归)或者说算法尝试找出输入数据空间
X
到集合
{0,1}
的映射(例如感知器算法)。这种算法叫做判别学习算法,下面,我们要探讨的算法把模型变为了
p(x|y)
,这种算法叫做生成学习算法,举个栗子,如果
y
指示的是一个样本是狗
注意,无论哪一种算法,我们寻求的都是在给定数据集上使得条件概率最大参数,即极大似然估计的原理
在拟合得到了
p(y)
和
p(x|y)
后,我们的算法可以利用贝叶斯公式推导出给定特征
x
后判定标签
p(y|x)=p(x|y)p(y)p(x)
在上面的公式中分母可以通过全概率公式进行计算
p(x)=p(x|y=1)p(y=1)+p(x|y=0)p(y=0)
利用这个公式我们用已知的量 p(x|y) 和 p(y) 来计算 p(x) ,实际上,如果我们计算 p(y|x) 只是为了做出预测,那么我们不需要计算出分母的具体数值,因为
arg maxyp(y|x)=arg maxyp(x|y)p(y)p(x)=arg maxyp(x|y)p(y)
输入特征变量是独立的 ,所以如果只是为了对比 y=0 或者 y=1 两种情况的概率大小从而进行预测没有必要计算出 p(x) 的具体数值