机器学习数学原理(3)——生成型学习算法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/z_x_1996/article/details/70860949

机器学习数学原理(3)——生成型学习算法

在上一篇博文中我们通过广义线性模型导出了针对二分类的Sigmoid回归模型以及针对多项分类的Softmax回归模型,需要说明的是,这两种算法模型都属于判别学习算法,而这篇博文主要分析了与之区别的生成型学习算法生成型学习算法判别学习算法虽然在结论上有很多相同的地方(从后面的分析中我们甚至可以发现生成学习算法也可以导出Sigmoid回归模型!),但是他们两者之间依然存在着本质的不同。

1 生成型学习算法介绍

1.1 贝叶斯公式

在介绍生成型学习算法之前笔者首先介绍一下贝叶斯公式:

贝叶斯公式

这个公式不难理解,我们可以使用下面的图片来理解:

贝叶斯公式图示

从上图我们可以发现其实在整个概率空间求p(x)与p(y)的交集概率可以得到如下公式:

p(x|y)p(y)=p(y|x)p(x)

将p(x)除过去便成为了贝叶斯公式。

1.2 生成学习算法

生成型学习算法(Generative Learning Algorithm)是对同一类的数据进行特征的概率分布建模,即假如现在有A(y=1)B(y=0)两类数据,特征向量用X来表示,生成学习算法则是通过训练获得AB两类的分布概率p(y)(在这个二类问题中即为伯努利分布),还有A类的特征向量分布p(X|y=1)以及B类的特征向量分布p(X|y=0),这样当需要对一个未知的特征向量Xc进行预测时,先将其与A类的特征比较,发现其为A的概率为p(Xc|y=1)p(y=1),然后再将其与B类的特征比较,发现其为B的概率为p(Xc|y=0)p(y=0),然后比较两类概率大小取得分类结果。

我们现在再回过来看判别学习算法,这两个类别算法之间的区别便很显而易见了:

生成学习算法对p(x|y)以及p(y)进行建模然后通过贝叶斯公式获得p(y|x),然后计算求出使得p(y|x)最大的y,即为最后预测的分类。

生成y

判别学习算法直接对p(y|x)建模,然后计算求出使得p(y|x)最大的y,即为最后预测的分类。

判别y

2 生成型学习算法实例-高斯判别分析

这里笔者介绍生成学习算法中一个非常基本且常见的算法——高斯判别分析(Gaussian Discriminant Analysis)作为实例。高斯判别分析是建立在一个基本的假设上的:

同一类别的数据样本的特征向量满足多维高斯概率分布,不同类别之间只是多维高斯概率分布的参数不一样。

事实上这是一个强假设,但是事实证明大部分情况下十分的有效。

2.1 多维高斯概率分布

多维高斯分布(The Multivariate Normal Distribution),是正态分布的维度扩展。公式如下:

  • x:输入特征向量
  • μ:平均向量(mean vector)
  • Σ:协方差矩阵(covariance matrix)

这里主要说明一下协方差矩阵Σ,这里的Σ是一个对称的半正定矩阵。如果X~N(μ,Σ),那么

其中E[ ]为平均函数。

2.2 高斯判别分析

现在我们来考虑一个二分类问题,其特征均为连续型随机变量。现在我们假设这些特征满足多维高斯分布,则有:

y ~ Bernoulli (φ)

x|y=0 ~ N (μ0,Σ)

x|y=1 ~ N (μ1,Σ)

即两类的特征服从的高斯分布形状一样,但是中心位置不一样。写成表达式则有:

现在我们获得了一个含有m个样本的样本空间,那么其对数似然函数(如果有疑问请看机器学习数学原理(1)——极大似然估计法)为:

然后利用个极大似然估计法(求极值时可使用梯度下降算法,牛顿下降算法等等)可以求出极大似然时的参数值,不令人意外的,各个参数值为:

这里的judge函数为判断函数,条件为真输出1,为伪输出0。

这几个参数确定下来以后模型便确定了下来,p(x|y)与p(y)便确定了下来,然后就可以用前面的讨论来分类了。

2.3 Sigmoid回归模型与高斯判别分析

正如前面所说,Sigmoid回归模型与高斯判别分析有着本质上的不同,但是其实高斯判别分析可以导出Sigmoid回归模型,我们通过由高斯判别定型的p(x|y)与p(y),然后通过贝叶斯公式来计算给定x,y=1的概率,即求p(y=1|x)。

其中

计算后我们发现得到的是一个Sigmoid函数!

然而需要我们知道的是,反过来并不成立,即通过Sigmoid函数并不能导出高斯判别分析,即高斯判别分析条件强于Sigmoid回归。

稍作思索便十分明了了,高斯判别分布使用了数据满足高斯分布这个强条件,而Sigmoid回归却不需要这样的条件。

值得一提的是,指数族分布的样本都可以像高斯判别分析一样导出Sigmoid函数。所以我们比较一下Sigmoid回归模型与高斯判别分析可以得出选择算法的信息:

  1. 当数据样本不属于高斯分布时,使用Sigmoid函数往往能够取得更好的分类效果。
  2. 如果数据样本属于高斯分布,高斯判别分析则能更加有效的分类。
  3. Sigmoid回归模型具有更高的容错率。
  4. 最后需要说明的是,有时就算数据不满足高斯分布,高斯判别分析依然能够取得较好的分类效果。

猜你喜欢

转载自blog.csdn.net/z_x_1996/article/details/70860949