关于机器学习中的生成学习算法(Generative Learning Algorithm)

我们之前可能接触到一些线性回归的案例,以至于广义线性模型GLM等等之类的,这些模型呢,都是在给定训练集合,而且这些训练集有着确定的输入和输出,我们通过利用这些训练集来构建预测函数,从而实现预测,判断之类的功能。

举个简单的例子,我们需要将大象和狗分类,以往的做法是,利用特征来画出分界线,那么下一次我们只需要输入特征就可以利用这条分界线来判断这只动物是大象还是狗了。那么还有另一种方法,如果我们先观察大象,然后建立出大象的模型,然后观察狗,建立狗的模型,然后一旦我们想区分狗和大象,只需要看这只动物和两个模型中的哪一个更加匹配。这就逐渐引出了生成学习算法。

判别学习算法在于试着去直接学习f(y|x)(即以x的条件的y的概率密度,我们就可以计算出y的期望,通过x来预测y)或者直接去学习从给定的一组输入X到{0,1}的映射

而现在,我们讨论的生成学习算法则是试着对f(x|y)(以及f(y))建模,通过y这一结果来对所需要判断之物的特征进行建模。在我们对f(y)(先验概率分布)和f(x|y)进行建模后,我们的算法就可以利用贝叶斯定理来计算出f(y|x)的概率分布

for4

说到这里你可能会问了,那么这个f(x)怎么求呀?

很简单,利用全概率公式就可以了

如果是因变量是离散的,举个例子,伯努利分布的因变量

for5

如果因变量是连续的for6

通过上图可以知道连续型全概率公式,通过对边缘概率分布函数积分可以得到。

接下来我们举一个生成学习算法的例子--------高斯判别分析(GDA)

在高斯判别分析中,首先我们假定f(x|y)的概率分布是多维高斯分布,或者说是多维正态分布,接着给出两个参数,一个是多维协方差Σ(n×n矩阵),一个是均值向量μ(n维)

好的,现在我们把维度都设为n维,那么对于多维正态分布来说,有

for7

接着我们需要建立起来高斯判别分析模型来解决分类问题,前提是x是连续的随机变量

这个模型如图所示:

for8

通过上面的概率分布我们可以写出概率密度函数

for9

现在看一下我们模型的参数,有for10

可以写出关于这四个参数的对数似然函数

for10

在这里补充一点,我们现在是在进行极大似然估计,当我们知道样本变量的分布之后却不知道他们的参数,那就可以用极大似然估计来估计他们的参数。

很显然这里有多个变量,现在需要计算似然函数的极值,可以通过求偏导数来获得参数的极大似然估计

对第一个参数求偏导

for11

令偏导等于0,得for12

对第二个参数求偏导

for13

令偏导数=0,可以得到

for13

这里我再给出另外得两个参数得极大似然估计

for14

其中1{true}=1,1{false}=0

至此我们通过极大似然估计能够得到四个参数,再利用我们之前的结论就可以求出f(y|x),通过求出期望便可以求出预测值。至此,你应该对生成学习算法,以及高斯判别分析模型有一定的了解了。

发布了45 篇原创文章 · 获赞 12 · 访问量 4万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章