共计 1249 个字符,预计需要花费 4 分钟才能阅读完成。
引言
之前介绍过分类方法使用最小二乘法或者Logistic回归实现分类,通过直接给定相应的预测函数实现数据的划分,例如预测函数在二分类中的实现就是一条直线之类。接下来对于给定的测试样本特征X,直接判定其是在直线的左边还是右边,从而实现对样本的分类。
上面的描述的都是属于判别学习分析,区别于判别学习分析,今天需要介绍的是生成学习算法,生成学习算法是先对给定的训练样本(正样本与负样本)建立相应的模型,然后对于给定的测试样本匹配相应的模型,假设与正样本模型匹配度较高的话就可以得到当前的测试样本是属于正样本。
从数学层面来看判别学习算法都是直接对P(y|x)进行建模,然后直接求出相应的测试样本的分类结果。生成学习算法却不是直接对P(y|x)直接建模,它是先对P(x|y)和P(y)进行建模,然后使用贝叶斯后验概率估计得到相应的P(y|x)。
举例说明:假设我们现在要区分样本是属于大象还是小狗,对于大象设定的标签是1,对于小狗设定的标签是0,按照生成学习算法的计算过程就是先要对每一类进行建模,因此我们需要先计算出P(x|y=1)(这个是对大象正样本模型的建模)和P(x|y=0)(这个是对小狗负样本模型的建模)。在对正负样本进行建立模型之后我们建立P(y)先验概率模型,接下来就是使用贝叶斯后验概率规则得到P(y|x)。
使得后验概率值最大的y就是当前测试样本的分类:
由于我们是要求解出使得P(y|x)最大时y的值大小,因此可以忽略P(x)的值,因此上式中的第二步就是化简之后的计算方程。
备注:argmax是计算使得函数值最大时变量的大小,上面的函数就是后验概率,变量是y。
高斯判别分析
乍一看高斯判别分析就误以为是判别分类算法,其实不是,高斯判别分析是生成学习算法之一。
多变量正态分布
均值向量μ∈Rn,协方差矩阵Σ∈Rn*n,相应的概率分布如下所示:
下面给出部分多变量高斯模型的Matlab示意图:
上面图像中最左边是标准正态分布,协方差矩阵单位矩阵,中间的那幅图的协方差矩阵是0.6倍单位矩阵,最右边的图像的协方差矩阵是2倍单位矩阵。
其实更该不同的协方差会得到不一样的高斯分布模型,同理更该均值向量也会得到的不同的模型。
GDA高斯判别模型
当我们的特征向量是连续的随机变量时就可以使用高斯判别模型去求解相应的分类问题。
模型的建立如下:
相应的分布函数:
上面的式子中通常情况下协方差是大小是一样的,均值一般是不一样的,从等高线图像中可以表示成正负样本模型的大小是一样的,但是所处的位置不一样,然而位置的决定权就在于均值大小。
极大似然估计函数如下:
通过求取极大似然估计函数的最大值,得到如下四个参数的值:
下面给出一个实验例子说明GDA分类效果:
上面的两幅图中可以看出高斯分布的协方差矩阵一致,当然均值不一样,否则两个分类的等高线图形会重合到一起,根据建立的GDA模型求出最后的分类拟合曲线。
结论
GDA对于二分类有较好的分类效果,其实GDA模型与之前介绍的Logistic线性回归有着相关的联系,可以业余时间研究下。