前言
目前为止,之前学习的几个算法的模型P(y|x;θ),在给定x的情况下y的条件分布。比如逻辑回归算法中,基础模型P(y|x;θ)的演化为 h(x)=g(θTx),g 是sigmod函数。这类的算法都是直接的去学习p(y|x)或者学习如何将输入x映射到{0,1}这样的标签中,我们称这类算法为判别学习算法。
这篇文章要讲述的是另外一个算法,假设有一个分类问题,主要为了学习区分大象(y=1)和小狗(y=0),当然是根据给定的一些动物的featurs来判定类别。之前的回归算法可能就会通过梯度上升算法算出一条直线来区分这两个类别,然后对于新的animal只要输入这个回归算法中,就能判别是在直线的哪一边,从而判断是属于什么动物。而另外一种方法就是,在数据集中,挑选出大象的数据,以这个数据集为基础建立一个模型,描述大象应该有的features,同理对于小狗也可以建立一个模型,学习小狗的一些features。这样就有两个不一样的模型,当有新的animal输入时,我们可以分别让这个新输入和大象模型与小狗模型进行匹配,观察这个新输入的animal更像哪一个类型,从而确定类别 。
Generative Learning Algorithms
类似上面这种我们称作是生成学习算法,举个例子,假设y的值{0,1},0代表是小狗,1代表是大象,那么p(x|y=0)是对小狗的features的建模,p(x|y=1)是对大象的features的建模。可以看出生成学习算法一开始是对p(x|y)建模而不是对p(y|x)建模,这个是跟判别算法有差异的地方。对p(x|y)建模后就可以通过贝叶斯法则来求出p(y|x)
下面是求p(y|x)要用的贝叶斯的一般性公式: