机器学习-回归学习

        提及回归学习,常常首先想起一个概念叫做线性回归。那么什么是线性回归呢?线性回归其实是一个统计学概念。在统计学中,线性回归(Linear Regression)是利用称为线性回归方程的最小平方函数对一个或多个自变量和因变量之间关系进行建模的一种回归分析。这种函数是一个或多个被称为回归系数的模型参数的线性组合。只有一个自变量的情况称为简单线性回归,大于一个自变量情况的叫做多元线性回归。线性回归预测结果的目标函数是线性取值。后面我们还将详细阐述的一个概念叫做分类,那么分类问题和线性回归的区别我们有必要先点一下,分类预测结果的目标函数是离散取值。

一.线性回归模型及训练算法

        给定由n个属性值描述的样本X,线性回归试图学到一个通过属性值的线性组合来进行预测的函数。具体的函数形式如多元一次线性方程所示:

                (通常取常数)

也就是我们常见到的:

                

其中以及是要估计的参数。

上述模型还可以写成如下向量的形式:

                

下面我们来讨论一下它的训练过程,给定一个已知的训练数据集:  

         

 其中和   ,为特征向量。

        下面我们来讨论它的训练算法,这里我们使用最小二乘法对以及这个参数进行估计。我们以一元线性回归为例来详细说明上述参数的最小二乘估计法求解过程。最小二乘法是基于预测值和真实值的均方差最小化的方法来估计上述参数的。均方误差对应了欧氏距离,基于均方误差最小化来进行模型求解的方法称为“最小二乘法”。在线性回归中,最小二乘法就是试图寻找一条直线,是所有的样本到直线上的欧氏距离最小。

需要优化的具体方程如下:

则:

分别对和求偏导有下面方程组:

           

           

然后分别令上面两式为0:

           

就可以解得和的最优解的闭解式:

            \left\{\begin{matrix}\theta = \frac{\sum_{i=1}^{n} y_{i}\left ( x_{i} - \bar{x}\right ) }{\sum_{i=1}^{n}x_{i}^{2}-\frac{1}{n}\left ( \sum_{i=1}^{n}x_{i} \right )^{2}}\\ \theta _{0} = \frac{1}{n}\sum_{i=1}^{n}\left (y _{i} - \theta x_{i}\right )\end{matrix}\right.

其中:            

只要学得了 和 模型就可以确定,然后对于任意的测试样例,只要输入他的属性值,皆可以输出他的预测值。

        线性回归假定输入空间到输出空间的函数映射成线性关系,但现实应用中很多的问题都是非线性的。为拓展其应用场景,我们可以将线性回归的预测值再做一个非线性的函数变换,去逼近其真实值。这样得到的模型,统称为广义线性回归。具体的函数方程如下:

            

其中函数被称为联系函数,理论上可以是任意函数,比如当它被指定为对数函数的时候,得到的回归模型被称作对数线性回归,具体的函数方程如下,之所以叫对数线性回归,是因为他将真实值的对数作为线性回归逼近的目标,具体的函数方程如下。

二.逻辑斯蒂回归模型

        前面的内容都是在论述如何利用线性模型进行回归学习,但如果我们要做的是分类任务,该怎么办呢?

        为了简化,我们首先来考虑二分类任务。其输出标记只有0和1两个值,即:,但线性模型产生的预测值是连续实数值。因此,我们需要将线性回归的预测值转化成0和1的输出。要达到这个目的,最容易想到的联系函数,当然是单位阶跃函数。具体的函数方程如下:

            

根据单位阶跃函数的函数方程:如果预测值大于0就判断为正例,取值为1;如果预测值小于0就判断为反例,取值为0;如果预测值等于临界值0就可以任意判别。

        因为单位阶跃函数在临界点不连续,一次不能直接用作联系函数。于是我们希望找到能在一定程度上近似单位阶跃函数的替代函数,并希望他在临界点连续且单调可微,逻辑斯蒂函数正是这样一个常用的替代函数。具体的函数方程和函数图像如下:

                   即:

图0

逻辑斯蒂函数形似S,是Sigmoid函数的典型代表,它将线性回归函数的预测值转化为一个接近0或接近1的值,并且其输出值在等于0附近变化很陡峭,其对应的模型称为逻辑斯蒂回归,也有地方叫做逻辑斯特回归。

        这里需要特别说明的是,虽然它的名字是“回归”,但实际上却是一种分类的学习方法。逻辑斯蒂回归有很多的优点,比如:将逻辑斯蒂回归函数的输出视为样本属于正例的概率,那么逻辑斯蒂回归就可以直接对分类的概率进行预测;逻辑斯蒂回归无需事先假设数据的分布,这样就可以避免假设分布不准确所带来的问题;逻辑斯蒂回归是任意阶的可导凸函数,可直接应用现有的数值优化算法求取最优解。

        如果将逻辑斯蒂回归的输出视为样本属于正例的概率,根据逻辑斯蒂函数很容易得到样本属于正例的概率和属于反例的概率具体的计算公式如下:

           

 给定已知的训练数据集,我们就可以通过“极大似然估计法”来估计和。也就是说最大化样本属于其真实标记的概率的对数(即最大化对数似然)。

        显然线性学习适合解决连续属性值问题,对于离散属性值的问题需要将其连续化,这一步也称为数值化编码。若属性值之间存在序关系,可通过连续化将其转化为连续值。若属性值之间不存在序关系,通常将k个属性值转化为k维向量。

三.多分类任务

        前面提到的都是二分类学习任务,而现实应用中常常会遇到多分类学习任务,也就是多类分类任务。多分类任务学习的方法主要有两种途径,一种是将二分类任务直接推广到多类,第二种是利用二分类学习器完成多分类学习任务。下面我们主要讨论,利用二分类学习器来完成二分类学习任务。

        可问题来了,我们怎么利用二分类学习器来完成多分类学习任务呢?基本的策略是对多分类任务进行拆分,为拆分出来的每一个二分类任务训练一个分类器,然后对每一个分类器的预测结果进行集成,以获取最终的多分类预测结果。具体的拆分方法主要包括一对一、一对其余以及多对多的方法。

        首先我们来看看一对一的拆分方法。一对一拆分方法在训练阶段将原始的个类别两两配对,学习 个二类分类器。在测试阶段,首先将待测样本提交给所有二类分类器预测,得到个分类结果,然后利用投票的方法产生最终的分类结果,即对预测做多的类标记作为最终的分类结果。

        下面我们再来看看一对其余的拆分方法。一对其余拆分方法在训练阶段分别将个类别中的某一类作为正例,其余类作为反例,学习个二分类分类器。在测试阶段,首先将待测样本提交给所有分类器预测,得到个分类结果。如果仅有一个分类器预测的结果为正例,则对应的预测结果为最终的分类结果。但如果有多个分类器预测的结果同时为正例。则选择置信度最大的类别作为最终的分类结果。

        接下来我们通过一个例子来详细地加以说明,来使大家对一对一、一对其余方法的拆分过程有一个和最终的分类结果有一个明确的认识。假设原来的分类问题是一个四分类问题,数据集中包含四个类别,如果采用一对一拆分方法,在训练阶段将原始的4个类别两两配对,就可学习得到如下图1所示:

图1

如果采用一对其余拆分法,在训练阶段分别将原始的4个类别中的某一个类作为正例,其余的类作为反例,就可得到四个二类分类器,在测试阶段首先将待测样本提交给这4个二类分类器,分别得到4个分类结果,因为只有一个分类器的预测结果为正例,所以其对应的类别为最终的分类结果,如下图2所示。

图2

相比较而言一对一拆分方法要训练个分类器,存储开销和测试时间较大,但是训练每一个分类器只需要用到两个类的样本,训练时间较短;一对其余拆分方法只训练个分类器,存储开销和测试时间较小,但训练每一个分类器要用到全部类的训练样例,训练时间较长。预测的性能取决于具体的数据分布,大多数情况下两钟拆分方法预测性能差不多。

        最后我们来看看多对多拆分,多对多拆分方法每次随机将其中若干个类作为正例,其余类作为反例。我们这里讨论一种最常用的多对多拆分方法——纠错随机码。纠错随机码首先在编码阶段将原始的个类别做M次随机划分,每次划分将一部分类别划为正例,其余类别为反例,这样就可以得到每个类别长度为的编码,然后分别构建个二类分类器。在解码阶段将测试样本分别提交给这个分类器进行预测,同样可以得到长度为的预测编码,然后用某种距离度量,计算预测的编码与每个类标记的编码之间的距离,把距离最小的类别作为最终的分类结果。

        纠错随机码主要有二元码和三元码。二元码在每一次划分中将每个类别随机指定为正例或反例,分别记作+1或-1来表示。三元码除了正例和反例之外还可指定“停用类”,因此在编码的过程当中除了+1和-1之外还可以有0,0表示停用类。比如给定的四分类问题我们可以采用图3所示的二元码,也可以采用图4所示的三元码。

        下面我们以二元码为例来详细讨论多对多拆分方法的过程和最终分类的结果。对于刚才那个四分类问题,在编码阶段将原始的四个类别做五次随机划分,对类别来说在第一次和第3次随机划分中被划分成了反例,而在第2次、第4次、第5次随机划分中被划分成了正例。因此所对应的编码为,同样地所对应的编码为,所对应的编码为,所对应的编码为,然后分别构建5个二类分类器。在解码阶段将测试样本分别提交给这5个二类分类器进行预测,同样可得到长度为5的预测编码即,然后用海明距离或欧氏距离来计算预测编码和每个类别的编码之间的距离。我们发现不管是用海明距离或者欧氏距离,测试样本的预测编码都跟所对应的编码的距离最小,所以就是最终的分类结果。相比较而言,纠错输出码对单个分类器预测错误有一定的容忍和修正能力,编码越长,纠错能力越强。对同等长度的编码,理论上来说任意两个类别之间的编码距离越远,则纠错能力越强。

图3
图4

你可能感兴趣的:(机器学习-回归学习)