3.2.1 分类问题
在机器学习中,最常见的问题就是分类问题了。所谓分类问题,就是对输入数据,进行分类。通常,将能够完成分类任务的算法,称为分类器(Classifier)。即找到一个函数判断输入数据所属的类别,可以是二分类问题(是或不是),也可以是多分类问题(在多个类别中判断输入数据具体属于哪一个类别)。分类问题的输出值是离散的,其输出结果是用来指定其属于哪个类别。
分类问题的求解过程可以分为以下3个步骤:
1)确定一个模型f(x),输入样本数据,最后输出其类别;
2)定义损失函数L(f);
3)找出使损失函数最小的那个最优函数。
通过这种方法,可以直接计算出寻找到的最优函数p(c|x),即样本x属于每个类别c的概率,这种方法被称为判别式(Discrimination)方法,因为其可以直接对样本所属类别进行判断,相应的模型也可以称为判别式模型。如果借助概率论的知识,分析每一类的特征,这样就可以将二分类问题应用到多分类问题中。以最简单的二分类为例,建模p(c|x),使用条件概率,进行如下转换:
基于贝叶斯定理,p(c|x)被写为:
对于给定的样本数据x,p(x)与类别无关,因此只需要考虑p(c|x)和p(c),这两个分布正好是每一类样本的特征,因此只对这两个分布进行研究。
p(c)是类先验概率,即在未知其他条件下对事件发生概率的表示,这个值是通过以往经验和分析(历史数据)得到的结果。根据大数定律,当训练样本中包含充足的独立同分布样本时,p(c)可以通过各类样本的出现频率进行估计;与类先验概率相对应的是类后验(Posterior)概率p(c|x),即需要建模的目标,表示在已知条件下事件发生的概率。
p(x|x)是类条件(class-conditional)概率,即在某个特定类别下,样本x的发生概率。它是涉及关于样本x所有特征的联合概率,如果x有d个特征且取值均为二值,那么样本空间大小将是2d,现实中训练样本的大小往往远小于这个值,因此通过频率估算p(x|c)显然是不可行的,因为“未被观测到”不等于“出现概率为0”。那么p(x|c)就需要应用其他方法进行求解了,如高斯分布、极大似然估计、朴素贝叶斯分类等。
1.高斯分布
通常,假定类条件概率p(x|c)符合某种确定的概率分布,训练样本都是从这个分布中随机采样得到的,“未被采样到的点”也对应一个发生概率。某种确定的概率分布通常被假设为高斯分布(Gaussian Distribution),现在就需要根据训练样本确定高斯分布的参数。多元高斯分布的概率密度函数如下:
其中k是x的维数,μ是均值向量,∑是协方差矩阵,μ决定了分布的最高点,∑决定了分布的形状。
2.极大似然估计
任何一个高斯分布都可以采样出训练样本,但是分布的不同,采样出训练样本的可能性是不一样的,对给定μ和∑采样出训练样本的可能性可以写作:
Dc表示训练样本中属于类别c的样本数目。最大化上面的似然函数,找出的μ和∑就是最佳参数。
该方法被称为最大似然估计(Maximum Likelihood Estimation,MLE),参数μ和∑的最大似然估计为:
也就是说,最佳μ*是样本均值,协方差矩阵是(x-μ*)(x-μ*)T的均值。现在已经计算出每个类别的p(c)和p(x|c),这样就可以选择p(x|c)p(c)较大的那个类别作为x的类别。
3.朴素贝叶斯分类
如果假设样本的所有特征值都是相互独立的,那么p(x|c)可以写成:
其中,n是特征数目,xi是第i个属性。同样可以假设每一维特征上的概率分布仍然服从高斯分布,此时的高斯分布是一个一维高斯分布,∑对应一个实值,组成协方差矩阵也只在对角线位置有值,进一步减少了参数数目,得到了更简单的模型。这样的模型被称作朴素贝叶斯分类器(Naive Bayes classifier,NB)。最后,对于样本分布不一定要选择高斯分布,例如如果是二值分布,可以假设符合伯努利分布,具体应用中要根据样本特点具体而定。