Part IV 生成学习算法
至今,我们已经大体讨论了这样的学习算法模型:p(y|x; θ),给定x时,y的条件概率分布。例如,逻辑回归模型:p(y|x; θ) ,其中:
这里函数g是一个sigmoid函数。在本文中,我们将讨论另一种类型的学习算法。
考虑这样的一个分类问题:我们需要根据动物的特征来,区分大象(y = 1)和狗(y = 0),对于给定训练集合,逻辑回归或者感知算法,需要尝试找到一条直线,用来作为区分大象和狗
的决策边界。然后,当分类一个新的动物无论是作为大象或狗,分类器检它的特征落在决策边界的那一边,并做出相应的判断。
这里提出一种不同的思路。首先,根据大象和狗的特征,建立2个不同的模型。然后,为了对一个动物进行分类,我们分别用2个模型对齐进行匹配,并在训练集的先验知识条件下,判断
该动物更像大象,还是更像狗。
如果一个算法直接对p(y | x) 进行学习(如逻辑回归),或者直接把输入X 映射到输出标签{0,1}。那么我们把这类算法称为:判别学习算法(discriminativelearning algorithm)。
这里,我们将讨论一种新的算法,它是对p{x | y}、p{y}进行建模,这类算法称为:生成学习算法(generative learning algorithm)。例如,假如y代表动物的类别,且狗
(y=0),大象(y=1)。那么p{x|y=0}模型表示狗的特征分布。p{x|y=1}模型表示大象的特征分布。
当建模完p{y} (先验概率)和 p{x|y}(条件概率),就可以使用贝叶斯公式推导y在给定x的后验分布:
上式,分母p(x) = p(x|y = 1)p(y = 1) + p(x|y =0)p(y = 0),而p(x|y) 和p(y)也可以从样本集的学习获得。事实上,通过计算p(y|x)获得一个预测,根本不需要知道分母,因为:
1、高斯判别分析
第一个生成学习算法,我们来看看是高斯判别分析(GDA)。在这个模型中,我们假设p(x | y)是根据多元正态分布。
在我们开始介绍GDA模型本身之前,简单了解下多元正态分布的性质。
1.1、多元正态分布
多元高斯分布也称为多变量高斯分布,其参数是:均值向量µ和协方差矩阵Σ(正定矩阵)。通常写作“N (µ, Σ)“:
对于服从多变量正态分布的随机变量 x ,均值由下面公式得到:
上图的协方差矩阵:
最后一个例子,我们让协方差矩阵固定为单位矩阵,然后修改均值u,得到的概率密度函数的图形如下:
上图对应的均值向量为:
1.2 高斯判别分析模型
当我们有这么一个分类问题,它的输入特征是连续随机变量。那么我们就可以应用高斯判别分析(GDA):使用多元高斯分布对 p(x|y)进行建模,具体模型如下:
写出的分布是这样的:
这里,我们的模型的参数是φ,Σ,μ0和μ1(注意,有2个不同的均值向量,但只有一个协方差矩阵)。其对数似然函数如下:
求出最大似然估计为:
得出参数后,我们的模型可以形象的展示如下:
上图是训练样本,及2个多元高斯分布的等高线。由2个高斯分布可以得出一个分类边界(p(y= 1|x) = 0.5)。
1.3 讨论:GDA和逻辑回归
略........
2、朴素贝叶斯
在GDA模型中,特征向量是连续实数变量。现在我们将讨论另一种算法,它的特性向量是离散值。
考虑使用机器学习建立一个垃圾邮件分类系统。该系统能够自动过滤垃圾邮件,或者把垃圾信息归纳到单独的邮件组。事实上,邮件分类是文本分类的一个例子。
假如,现在我们有一个训练集(该集合中的邮件,被标记为垃圾或非垃圾邮件)。
首先,我们使用一个特征向量来代表一份邮件。该特征向量的长度等于字典的词汇个数,如果一份邮件包含了字典的 i 个词汇,则特征向量的xi = 1,否则 xi = 0。
例如,下面这个特征向量,代表邮件包含"a"和"buy" ,但不包含"aardvark"、"aardwolf"、"zygmurgy"。
邮件被编码成一个词汇表向量,该向量的维度等于字典的词汇个数。然后我们对 p(x|y) 进行建模。假如一个词汇表有50000个词语,那么x是一个5000维向量。如果采用多项式建模的方
式,有2^50000 - 1个参数,这明显行不通。因此,为了对 p(x|y) 建模,我们作出一个强假设:假设对于给定的y,xi 之间是条件独立的。
这个假设称为朴素贝叶斯假设,所得算法称为朴素贝叶斯分类器。
根据假设,那么有:
上面第一行等号是概率的基本性质,第二行等号应用了朴素贝叶斯假设。我们注意到,即使朴素贝叶斯假设是一个非常强的假设,由此产生的算法行对诸多问题仍然十分有效。
我们模型的参数为:φi|y=1=p(xi= 1|y= 1), φi|y=0=p(xi=1|y= 0), and φy=p(y= 1)。通常,对于给定的训练集,{x(i),y(i)};i={1,...,m}。
可以写出联合似然估计:
根据似然估计,求出参数值:
上式中,"^" 符号表示逻辑与,上式有一个非常自然的解释。例如 φj | y=1 代表垃圾邮件中第j个词汇出现的比例。
有了上述参数。预测一个新的样本特征x,就可以简单的计算:
然后,挑选出哪个类别有最高的后验概率,则新样本属于该类别。
最后,虽然上面讨论的朴素贝叶斯算法,主要的应用情景是样本特性x 服从伯努利分布。但特征是可以推广到多项分布。另外,事实上,即使一些原始输入特征(例如,房屋的居住面
积,在我们前面的例子)是连续变量。通过离散化后也可以应用朴素贝叶斯算法的。
当原始的连续值不能被一个多元正态分布很好的建模,离散后,再使用朴素贝叶斯(代替GDA)通常会导致更好的分类器。
2.1Laplace smoothing
略.....