ntu-hsuantienlin-ml-merge-0
台湾大学林轩田机器学习笔记(一)
机器学习基石
9 -- Linear Regression
上节课,我们主要介绍了在有noise的情况下,VC Bound理论仍然是成立的。同时,介绍了不同的error measure方法。本节课介绍机器学习最常见的一种算法:Linear Regression.
一、线性回归问题
在之前的Linear Classification课程中,讲了信用卡发放的例子,利用机器学习来决定是否给用户发放信用卡。本节课仍然引入信用卡的例子,来解决给用户发放信用卡额度的问题,这就是一个线性回归(Linear Regression)问题。

令用户特征集为d维的
,加上常数项,维度为
,与权重
的线性组合即为Hypothesis,记为
。线性回归的预测函数取值在整个实数空间,这跟线性分类不同。

根据上图,在一维或者多维空间里,线性回归的目标是找到一条直线(对应一维)、一个平面(对应二维)或者更高维的超平面,使样本集中的点更接近它,也就是残留误差Residuals最小化。
一般最常用的错误测量方式是基于最小二乘法,其目标是计算误差的最小平方和对应的权重w,即上节课介绍的squared error:

这里提一点,最小二乘法可以解决线性问题和非线性问题。线性最小二乘法的解是closed-form,即
,而非线性最小二乘法没有closed-form,通常用迭代法求解。本节课的解就是closed-form的。关于最小二乘法的一些介绍,请参见我的另一篇博文:
二、线性回归算法
样本数据误差
是权重
的函数,因为
和
都是已知的。我们的目标就是找出合适的
,使
能够最小。那么如何计算呢?
首先,运用矩阵转换的思想,将
计算转换为矩阵的形式。

然后,对于此类线性回归问题,
一般是个凸函数。凸函数的话,我们只要找到一阶导数等于零的位置,就找到了最优解。那么,我们将
对每个
求偏导,偏导为零的
,即为最优化的权重值分布。

根据梯度的思想,对
进行矩阵话求偏导处理:

令偏导为零,最终可以计算出权重向量
为:

最终,我们推导得到了权重向量
,这是上文提到的closed-form解。其中,
又称为伪逆矩阵pseudo-inverse,记为
,维度是(d+1)xN。
但是,我们注意到,伪逆矩阵中有逆矩阵的计算,逆矩阵
是否一定存在?一般情况下,只要满足样本数量N远大于样本特征维度d+1,就能保证矩阵的逆是存在的,称之为非奇异矩阵。但是如果是奇异矩阵,不可逆怎么办呢?其实,大部分的计算逆矩阵的软件程序,都可以处理这个问题,也会计算出一个逆矩阵。所以,一般伪逆矩阵是可解的。
三、泛化问题
现在,可能有这样一个疑问,就是这种求解权重向量的方法是机器学习吗?或者说这种方法满足我们之前推导VC Bound,即是否泛化能力强
?

有两种观点:1、这不属于机器学习范畴。因为这种closed-form解的形式跟一般的机器学习算法不一样,而且在计算最小化误差的过程中没有用到迭代。2、这属于机器学习范畴。因为从结果上看,
和
都实现了最小化,而且实际上在计算逆矩阵的过程中,也用到了迭代。
其实,只从结果来看,这种方法的确实现了机器学习的目的。下面通过介绍一种更简单的方法,证明linear regression问题是可以通过线下最小二乘法方法计算得到好的
和
的。

首先,我们根据平均误差的思想,把
写成如图的形式,经过变换得到:
我们称
为帽子矩阵,用H表示。
下面从几何图形的角度来介绍帽子矩阵H的物理意义。

图中,y是N维空间的一个向量,粉色区域表示输入矩阵X乘以不同权值向量w所构成的空间,根据所有w的取值,预测输出都被限定在粉色的空间中。向量
就是粉色空间中的一个向量,代表预测的一种。y是实际样本数据输出值。
机器学习的目的是在粉色空间中找到一个
,使它最接近真实的y,那么我们只要将y在粉色空间上作垂直投影即可,投影得到的
即为在粉色空间内最接近y的向量。这样即使平均误差
最小。
从图中可以看出,
是y的投影,已知
,那么H表示的就是将y投影到
的一种操作。图中绿色的箭头
是向量y与
相减,
垂直于粉色区域。已知
那么I-H表示的就是将y投影到
即垂直于粉色区域的一种操作。这样的话,我们就赋予了H和I-H不同但又有联系的物理意义。
这里trace(I-H)称为I-H的迹,值为N-(d+1)。这条性质很重要,一个矩阵的 trace等于该矩阵的所有特征值(Eigenvalues)之和。下面给出简单证明:




介绍下该I-H这种转换的物理意义:原来有一个有N个自由度的向量y,投影到一个有d+1维的空间x(代表一列的自由度,即单一输入样本的参数,如图中粉色区域),而余数剩余的自由度最大只有N-(d+1)种。
在存在noise的情况下,上图变为:

图中,粉色空间的红色箭头是目标函数f(x),虚线箭头是noise,可见,真实样本输出y由f(x)和noise相加得到。由上面推导,已知向量y经过I-H转换为
,而noise与y是线性变换关系,那么根据线性函数知识,我们推导出noise经过I-H也能转换为
。则对于样本平均误差,有下列推导成立:
即
同样,对
有如下结论:
这个证明有点复杂,但是我们可以这样理解:
与
形式上只差了
项,从哲学上来说,
是我们看得到的样本的平均误差,如果有noise,我们把预测往noise那边偏一点,让
好看一点点,所以减去
项。那么同时,新的样本
是我们看不到的,如果noise在反方向,那么
就应该加上
项。
我们把
与
画出来,得到学习曲线:

当N足够大时,
与
逐渐接近,满足
,且数值保持在noise level。这就类似VC理论,证明了当N足够大的时候,这种线性最小二乘法是可以进行机器学习的,算法有效!
四、Linear Regression方法解决Linear Classification问题
之前介绍的Linear Classification问题使用的Error Measure方法用的是0/1 error,那么Linear Regression的squared error是否能够应用到Linear Classification问题?

下图展示了两种错误的关系,一般情况下,squared error曲线在0/1 error曲线之上。即
.

根据之前的VC理论,
的上界满足:

从图中可以看出,用
代替
,
仍然有上界,只不过是上界变得宽松了。也就是说用线性回归方法仍然可以解决线性分类问题,效果不会太差。二元分类问题得到了一个更宽松的上界,但是也是一种更有效率的求解方式。
五、总结
本节课,我们主要介绍了Linear Regression。首先,我们从问题出发,想要找到一条直线拟合实际数据值;然后,我们利用最小二乘法,用解析形式推导了权重w的closed-form解;接着,用图形的形式得到
,证明了linear regression是可以进行机器学习的,;最后,我们证明linear regressin这种方法可以用在binary classification上,虽然上界变宽松了,但是仍然能得到不错的学习方法。
注明:
文章中所有的图片均来自台湾大学林轩田《机器学习基石》课程
10 -- Logistic Regression
上一节课,我们介绍了Linear Regression线性回归,以及用平方错误来寻找最佳的权重向量w,获得最好的线性预测。本节课将介绍Logistic Regression逻辑回归问题。
一、Logistic Regression Problem
一个心脏病预测的问题:根据患者的年龄、血压、体重等信息,来预测患者是否会有心脏病。很明显这是一个二分类问题,其输出y只有{-1,1}两种情况。
二元分类,一般情况下,理想的目标函数f(x)>0.5,则判断为正类1;若f(x)<0.5,则判断为负类-1。

但是,如果我们想知道的不是患者有没有心脏病,而是到底患者有多大的几率是心脏病。这表示,我们更关心的是目标函数的值(分布在0,1之间),表示是正类的概率(正类表示是心脏病)。这跟我们原来讨论的二分类问题不太一样,我们把这个问题称为软性二分类问题(’soft’ binary classification)。这个值越接近1,表示正类的可能性越大;越接近0,表示负类的可能性越大。

对于软性二分类问题,理想的数据是分布在[0,1]之间的具体值,但是实际中的数据只可能是0或者1,我们可以把实际中的数据看成是理想数据加上了噪声的影响。

如果目标函数是
的话,我们如何找到一个好的Hypothesis跟这个目标函数很接近呢?
首先,根据我们之前的做法,对所有的特征值进行加权处理。计算的结果s,我们称之为’risk score’:

但是特征加权和
,如何将s值限定在[0,1]之间呢?一个方法是使用sigmoid Function,记为
。那么我们的目标就是找到一个hypothesis:
。

Sigmoid Function函数记为
,满足
,
,
。这个函数是平滑的、单调的S型函数。则对于逻辑回归问题,hypothesis就是这样的形式:
那我们的目标就是求出这个预测函数h(x),使它接近目标函数f(x)。
二、Logistic Regression Error
现在我们将Logistic Regression与之前讲的Linear Classification、Linear Regression做个比较:

这三个线性模型都会用到线性scoring function
。linear classification的误差使用的是0/1 err;linear regression的误差使用的是squared err。那么logistic regression的误差该如何定义呢?
先介绍一下“似然性”的概念。目标函数
,如果我们找到了hypothesis很接近target function。也就是说,在所有的Hypothesis集合中找到一个hypothesis与target function最接近,能产生同样的数据集D,包含y输出label,则称这个hypothesis是最大似然likelihood。

logistic function:
满足一个性质:
。那么,似然性h:
因为
对所有的h来说,都是一样的,所以我们可以忽略它。那么我们可以得到logistic h正比于所有的
乘积。我们的目标就是让乘积值最大化。

如果将w代入的话:

为了把连乘问题简化计算,我们可以引入ln操作,让连乘转化为连加:

接着,我们将maximize问题转化为minimize问题,添加一个负号就行,并引入平均数操作
:

将logistic function的表达式带入,那么minimize问题就会转化为如下形式:

至此,我们得到了logistic regression的err function,称之为cross-entropy error交叉熵误差:

三、Gradient of Logistic Regression Error
我们已经推导了
的表达式,那接下来的问题就是如何找到合适的向量w,让
最小。

Logistic Regression的
是连续、可微、二次可微的凸曲线(开口向上),根据之前Linear Regression的思路,我们只要计算
的梯度为零时的w,即为最优解。

对
计算梯度,学过微积分的都应该很容易计算出来:

最终得到的梯度表达式为:

为了计算
最小值,我们就要找到让
等于0的位置。

上式可以看成
是
的线性加权。要求
与
的线性加权和为0,那么一种情况是线性可分,如果所有的权重
为0,那就能保证
为0。
是sigmoid function,根据其特性,只要让
,即
。
表示对于所有的点,
与
都是同号的,这表示数据集D必须是全部线性可分的才能成立。
然而,保证所有的权重
为0是不太现实的,总有不等于0的时候,那么另一种常见的情况是非线性可分,只能通过使加权和为零,来求解w。这种情况没有closed-form解,与Linear Regression不同,只能用迭代方法求解。

之前所说的Linear Regression有closed-form解,可以说是“一步登天”的;但是PLA算法是一步一步修正迭代进行的,每次对错误点进行修正,不断更新w值。PLA的迭代优化过程表示如下:

w每次更新包含两个内容:一个是每次更新的方向
,用
表示,另一个是每次更新的步长
。参数
和终止条件决定了我们的迭代优化算法。

四、Gradient Descent
根据上一小节PLA的思想,迭代优化让每次w都有更新:

我们把
曲线看做是一个山谷的话,要求
最小,即可比作下山的过程。整个下山过程由两个因素影响:一个是下山的单位方向
;另外一个是下山的步长
。

利用微分思想和线性近似,假设每次下山我们只前进一小步,即
很小,那么根据泰勒Taylor一阶展开,可以得到:
关于Taylor展开的介绍,可参考我另一篇博客:
迭代的目的是让
越来越小,即让
。
是标量,因为如果两个向量方向相反的话,那么他们的内积最小(为负),也就是说如果方向
与梯度
反向的话,那么就能保证每次迭代
都成立。则,我们令下降方向
为:
是单位向量,
每次都是沿着梯度的反方向走,这种方法称为梯度下降(gradient descent)算法。那么每次迭代公式就可以写成:
下面讨论一下
的大小对迭代优化的影响:
如果太小的话,那么下降的速度就会很慢;
如果太大的话,那么之前利用Taylor展开的方法就不准了,造成下降很不稳定,甚至会上升。因此,
应该选择合适的值,一种方法是在梯度较小的时候,选择小的
,梯度较大的时候,选择大的
,即
正比于
。这样保证了能够快速、稳定地得到最小值
。

对学习速率
做个更修正,梯度下降算法的迭代公式可以写成:
其中:
总结一下基于梯度下降的Logistic Regression算法步骤如下:
-
初始化
![]()
-
计算梯度
![]()
-
迭代跟新
![]()
-
满足
或者达到迭代次数,迭代结束
五、总结
我们今天介绍了Logistic Regression。首先,从逻辑回归的问题出发,将
作为目标函数,将
作为hypothesis。接着,我们定义了logistic regression的err function,称之为cross-entropy error交叉熵误差。然后,我们计算logistic regression error的梯度,最后,通过梯度下降算法,计算
时对应的
值。
注明:
文章中所有的图片均来自台湾大学林轩田《机器学习基石》课程
11 -- Linear Models for Classification
上一节课,我们介绍了Logistic Regression问题,建立cross-entropy error,并提出使用梯度下降算法gradient descnt来获得最好的logistic hypothesis。本节课继续介绍使用线性模型来解决分类问题。
一、Linear Models for Binary Classification
之前介绍几种线性模型都有一个共同点,就是都有样本特征x的加权运算,我们引入一个线性得分函数s:
三种线性模型,第一种是linear classification。线性分类模型的hypothesis为
,取值范围为{-1,+1}两个值,它的err是0/1的,所以对应的
是离散的,并不好解,这是个NP-hard问题。第二种是linear regression。线性回归模型的hypothesis为
,取值范围为整个实数空间,它的err是squared的,所以对应的
是开口向上的二次曲线,其解是closed-form的,直接用线性最小二乘法求解即可。第三种是logistic regression。逻辑回归模型的hypothesis为
,取值范围为(-1,1)之间,它的err是cross-entropy的,所有对应的
是平滑的凸函数,可以使用梯度下降算法求最小值。

从上图中,我们发现,linear regression和logistic regression的error function都有最小解。那么可不可以用这两种方法来求解linear classification问题呢?下面,我们来对这三种模型的error function进行分析,看看它们之间有什么联系。
对于linear classification,它的error function可以写成:
对于linear regression,它的error function可以写成:
对于logistic regression,它的error function可以写成:
上述三种模型的error function都引入了ys变量,那么ys的物理意义是什么?ys就是指分类的正确率得分,其值越大越好,得分越高。

下面,我们用图形化的方式来解释三种模型的error function到底有什么关系:

从上图中可以看出,ys是横坐标轴,
是呈阶梯状的,在ys>0时,
恒取最小值0。
呈抛物线形式,在ys=1时,取得最小值,且在ys=1左右很小区域内,
和
近似。
是呈指数下降的单调函数,ys越大,其值越小。同样在ys=1左右很小区域内,
和
近似。但是我们发现
并不是始终在
之上,所以为了计算讨论方便,我们把
做幅值上的调整,引入
,这样能保证
始终在
上面,如下图所示:

由上图可以看出:
那么由VC理论可以知道:
从0/1出发:
从CE出发:

通过上面的分析,我们看到err 0/1是被限定在一个上界中。这个上界是由logistic regression模型的error function决定的。而linear regression其实也是linear classification的一个upper bound,只是随着sy偏离1的位置越来越远,linear regression的error function偏差越来越大。综上所述,linear regression和logistic regression都可以用来解决linear classification的问题。
下图列举了PLA、linear regression、logistic regression模型用来解linear classification问题的优点和缺点。通常,我们使用linear regression来获得初始化的
,再用logistic regression模型进行最优化解。

二、Stochastic Gradient Descent
之前介绍的PLA算法和logistic regression算法,都是用到了迭代操作。PLA每次迭代只会更新一个点,它每次迭代的时间复杂度是O(1);而logistic regression每次迭代要对所有N个点都进行计算,它的每时间复杂度是O(N)。为了提高logistic regression中gradient descent算法的速度,可以使用另一种算法:随机梯度下降算法(Stochastic Gradient Descent)。
随机梯度下降算法每次迭代只找到一个点,计算该点的梯度,作为我们下一步更新w的依据。这样就保证了每次迭代的计算量大大减小,我们可以把整体的梯度看成这个随机过程的一个期望值。

随机梯度下降可以看成是真实的梯度加上均值为零的随机噪声方向。单次迭代看,好像会对每一步找到正确梯度方向有影响,但是整体期望值上看,与真实梯度的方向没有差太多,同样能找到最小值位置。随机梯度下降的优点是减少计算量,提高运算速度,而且便于online学习;缺点是不够稳定,每次迭代并不能保证按照正确的方向前进,而且达到最小值需要迭代的次数比梯度下降算法一般要多。

对于logistic regression的SGD,它的表达式为:
我们发现,SGD与PLA的迭代公式有类似的地方,如下图所示:

我们把SGD logistic regression称之为’soft’ PLA,因为PLA只对分类错误的点进行修正,而SGD logistic regression每次迭代都会进行或多或少的修正。另外,当
,且
足够大的时候,PLA近似等于SGD。

除此之外,还有两点需要说明:1、SGD的终止迭代条件。没有统一的终止条件,一般让迭代次数足够多;2、学习速率
。
的取值是根据实际情况来定的,一般取值0.1就可以了。
三、Multiclass via Logistic Regression
之前我们一直讲的都是二分类问题,本节主要介绍多分类问题,通过linear classification来解决。假设平面上有四个类,分别是正方形、菱形、三角形和星形,如何进行分类模型的训练呢?
首先我们可以想到这样一个办法,就是先把正方形作为正类,其他三种形状都是负类,即把它当成一个二分类问题,通过linear classification模型进行训练,得出平面上某个图形是不是正方形,且只有{-1,+1}两种情况。然后再分别以菱形、三角形、星形为正类,进行二元分类。这样进行四次二分类之后,就完成了这个多分类问题。

但是,这样的二分类会带来一些问题,因为我们只用{-1,+1}两个值来标记,那么平面上某些可能某些区域都被上述四次二分类模型判断为负类,即不属于四类中的任何一类;也可能会出现某些区域同时被两个类甚至多个类同时判断为正类,比如某个区域又判定为正方形又判定为菱形。那么对于这种情况,我们就无法进行多类别的准确判断,所以对于多类别,简单的binary classification不能解决问题。
针对这种问题,我们可以使用另外一种方法来解决:soft软性分类,即不用{-1,+1}这种binary classification,而是使用logistic regression,计算某点属于某类的概率、可能性,去概率最大的值为那一类就好。
soft classification的处理过程和之前类似,同样是分别令某类为正,其他三类为负,不同的是得到的是概率值,而不是{-1,+1}。最后得到某点分别属于四类的概率,取最大概率对应的哪一个类别就好。效果如下图所示:

这种多分类的处理方式,我们称之为One-Versus-All(OVA) Decomposition。这种方法的优点是简单高效,可以使用logistic regression模型来解决;缺点是如果数据类别很多时,那么每次二分类问题中,正类和负类的数量差别就很大,数据不平衡unbalanced,这样会影响分类效果。但是,OVA还是非常常用的一种多分类算法。

四、Multiclass via Binary Classification
上一节,我们介绍了多分类算法OVA,但是这种方法存在一个问题,就是当类别k很多的时候,造成正负类数据unbalanced,会影响分类效果,表现不好。现在,我们介绍另一种方法来解决当k很大时,OVA带来的问题。
这种方法呢,每次只取两类进行binary classification,取值为{-1,+1}。假如k=4,那么总共需要进行
次binary classification。那么,六次分类之后,如果平面有个点,有三个分类器判断它是正方形,一个分类器判断是菱形,另外两个判断是三角形,那么取最多的那个,即判断它属于正方形,我们的分类就完成了。这种形式就如同k个足球对进行单循环的比赛,每场比赛都有一个队赢,一个队输,赢了得1分,输了得0分。那么总共进行了
次的比赛,最终取得分最高的那个队就可以了。

这种区别于OVA的多分类方法叫做One-Versus-One(OVO)。这种方法的优点是更加高效,因为虽然需要进行的分类次数增加了,但是每次只需要进行两个类别的比较,也就是说单次分类的数量减少了。而且一般不会出现数据unbalanced的情况。缺点是需要分类的次数多,时间复杂度和空间复杂度可能都比较高。

五、总结
本节课主要介绍了分类问题的三种线性模型:linear classification、linear regression和logistic regression。首先介绍了这三种linear models都可以来做binary classification。然后介绍了比梯度下降算法更加高效的SGD算法来进行logistic regression分析。最后讲解了两种多分类方法,一种是OVA,另一种是OVO。这两种方法各有优缺点,当类别数量k不多的时候,建议选择OVA,以减少分类次数。
注明:
文章中所有的图片均来自台湾大学林轩田《机器学习基石》课程
12 -- Nonlinear Transformation
上一节课,我们介绍了分类问题的三种线性模型,可以用来解决binary classification和multiclass classification问题。本节课主要介绍非线性的模型来解决分类问题。
一、Quadratic Hypothesis
之前介绍的线性模型,在2D平面上是一条直线,在3D空间中是一个平面。数学上,我们用线性得分函数s来表示:
。其中,x为特征值向量,w为权重,s是线性的。

线性模型的优点就是,它的VC Dimension比较小,保证了
。但是缺点也很明显,对某些非线性问题,可能会造成
很大,虽然
,但是也造成
很大,分类效果不佳。

为了解决线性模型的缺点,我们可以使用非线性模型来进行分类。例如数据集D不是线性可分的,而是圆形可分的,圆形内部是正类,外面是负类。假设它的hypotheses可以写成:
基于这种非线性思想,我们之前讨论的PLA、Regression问题都可以有非线性的形式进行求解。

下面介绍如何设计这些非线性模型的演算法。还是上面介绍的平面圆形分类例子,它的h(x)的权重w0=0.6,w1=-1,w2=-1,但是h(x)的特征不是线性模型的
,而是
。我们令
,
,
,那么,h(x)变成:
这种
的转换可以看成是x空间的点映射到z空间中去,而在z域中,可以用一条直线进行分类,也就是从x空间的圆形可分映射到z空间的线性可分。z域中的直线对应于x域中的圆形。因此,我们把
这个过程称之为特征转换(Feature Transform)。通过这种特征转换,可以将非线性模型转换为另一个域中的线性模型。

已知x域中圆形可分在z域中是线性可分的,那么反过来,如果在z域中线性可分,是否在x域中一定是圆形可分的呢?答案是否定的。由于权重向量w取值不同,x域中的hypothesis可能是圆形、椭圆、双曲线等等多种情况。

目前讨论的x域中的圆形都是圆心过原点的,对于圆心不过原点的一般情况,
映射公式包含的所有项为:
也就是说,对于二次hypothesis,它包含二次项、一次项和常数项1,z域中每一条线对应x域中的某二次曲线的分类方式,也许是圆,也许是椭圆,也许是双曲线等等。那么z域中的hypothesis可以写成:

二、Nonlinear Transform
上一部分我们定义了什么了二次hypothesis,那么这部分将介绍如何设计一个好的二次hypothesis来达到良好的分类效果。那么目标就是在z域中设计一个最佳的分类线。

其实,做法很简单,利用映射变换的思想,通过映射关系,把x域中的最高阶二次的多项式转换为z域中的一次向量,也就是从quardratic hypothesis转换成了perceptrons问题。用z值代替x多项式,其中向量z的个数与x域中x多项式的个数一致(包含常数项)。这样就可以在z域中利用线性分类模型进行分类训练。训练好的线性模型之后,再将z替换为x的多项式就可以了。具体过程如下:

整个过程就是通过映射关系,换个空间去做线性分类,重点包括两个:
-
特征转换
-
训练线性模型
其实,我们以前处理机器学习问题的时候,已经做过类似的特征变换了。比如数字识别问题,我们从原始的像素值特征转换为一些实际的concrete特征,比如密度、对称性等等,这也用到了feature transform的思想。

三、Price of Nonlinear Transform
若x特征维度是d维的,也就是包含d个特征,那么二次多项式个数,即z域特征维度是:
如果x特征维度是2维的,即
,那么它的二次多项式为
,有6个。
现在,如果阶数更高,假设阶数为Q,那么对于x特征维度是d维的,它的z域特征维度为:
由上式可以看出,计算z域特征维度个数的时间复杂度是Q的d次方,随着Q和d的增大,计算量会变得很大。同时,空间复杂度也大。也就是说,这种特征变换的一个代价是计算的时间、空间复杂度都比较大。

另一方面,z域中特征个数随着Q和d增加变得很大,同时权重w也会增大,即自由度增加,VC Dimension增大。令z域中的特征维度是
,则在在域中,任何
的输入都不能被shattered;同样,在x域中,任何
的输入也不能被shattered。
是VC Dimension的上界,如果
很大的时候,相应的VC Dimension就会很大。根据之前章节课程的讨论,VC Dimension过大,模型的泛化能力会比较差。

下面通过一个例子来解释为什么VC Dimension过大,会造成不好的分类效果:

上图中,左边是用直线进行线性分类,有部分点分类错误;右边是用四次曲线进行非线性分类,所有点都分类正确,那么哪一个分类效果好呢?单从平面上这些训练数据来看,四次曲线的分类效果更好,但是四次曲线模型很容易带来过拟合的问题,虽然它的
比较小,从泛化能力上来说,还是左边的分类器更好一些。也就是说VC Dimension过大会带来过拟合问题,
不能太大了。
那么如何选择合适的Q,来保证不会出现过拟合问题,使模型的泛化能力强呢?一般情况下,为了尽量减少特征自由度,我们会根据训练样本的分布情况,人为地减少、省略一些项。但是,这种人为地删减特征会带来一些“自我分析”代价,虽然对训练样本分类效果好,但是对训练样本外的样本,不一定效果好。所以,一般情况下,还是要保存所有的多项式特征,避免对训练样本的人为选择。

四、Structured Hypothesis Sets
下面,我们讨论一下从x域到z域的多项式变换。首先,如果特征维度只有1维的话,那么变换多项式只有常数项:
如果特征维度是两维的,变换多项式包含了一维的
:
如果特征维度是三维的,变换多项式包含了二维的
:
以此类推,如果特征维度是Q次,那么它的变换多项式为:
那么对于不同阶次构成的hypothesis有如下关系:
我们把这种结构叫做Structured Hypothesis Sets:

那么对于这种Structured Hypothesis Sets,它们的VC Dimension满足下列关系:
它的
满足下列关系:

从上图中也可以看到,随着变换多项式的阶数增大,虽然
逐渐减小,但是model complexity会逐渐增大,造成
很大,所以阶数不能太高。
那么,如果选择的阶数很大,确实能使
接近于0,但是泛化能力通常很差,我们把这种情况叫做tempting sin。所以,一般最合适的做法是先从低阶开始,如先选择一阶hypothesis,看看
是否很小,如果
足够小的话就选择一阶,如果
大的话,再逐渐增加阶数,直到满足要求为止。也就是说,尽量选择低阶的hypothes,这样才能得到较强的泛化能力。

五、总结
这节课主要介绍了非线性分类模型,通过非线性变换,将非线性模型映射到另一个空间,转换为线性模型,再来进行线性分类。本节课完整介绍了非线性变换的整体流程,以及非线性变换可能会带来的一些问题:时间复杂度和空间复杂度的增加。最后介绍了在要付出代价的情况下,使用非线性变换的最安全的做法,尽可能使用简单的模型,而不是模型越复杂越好。
注明:
文章中所有的图片均来自台湾大学林轩田《机器学习基石》课程
13 -- Hazard of Overfitting
上节课我们主要介绍了非线性分类模型,通过非线性变换,将非线性模型映射到另一个空间,转换为线性模型,再来进行分类,分析了非线性变换可能会使计算复杂度增加。本节课介绍这种模型复杂度增加带来机器学习中一个很重要的问题:过拟合(overfitting)。
一、What is Overfitting?
首先,我们通过一个例子来介绍什么bad generalization。假设平面上有5个点,目标函数f(x)是2阶多项式,如果hypothesis是二阶多项式加上一些小的noise的话,那么这5个点很靠近这个hypothesis,
很小。如果hypothesis是4阶多项式,那么这5点会完全落在hypothesis上,
。虽然4阶hypothesis的
比2阶hypothesis的要好很多,但是它的
很大。因为根据VC Bound理论,阶数越大,即VC Dimension越大,就会让模型复杂度更高,
更大。我们把这种
很小,
很大的情况称之为bad generation,即泛化能力差。

我们回过头来看一下VC曲线:

hypothesis的阶数越高,表示VC Dimension越大。随着VC Dimension增大,
是一直减小的,而
先减小后增大。在
位置,
取得最小值。在
右侧,随着VC Dimension越来越大,
越来越小,接近于0,
越来越大。即当VC Dimension很大的时候,这种对训练样本拟合过分好的情况称之为过拟合(overfitting)。另一方面,在
左侧,随着VC Dimension越来越小,
和
都越来越大,这种情况称之为欠拟合(underfitting),即模型对训练样本的拟合度太差,VC Dimension太小了。

bad generation和overfitting的关系可以理解为:overfitting是VC Dimension过大的一个过程,bad generation是overfitting的结果。

一个好的fit,
和
都比较小,尽管
没有足够接近零;而对overfitting来说,
,但是
很大。那么,overfitting的原因有哪些呢?
我们举个开车的例子,把发生车祸比作成overfitting,那么造成车祸的原因包括:
-
车速太快(VC Dimension太大);
-
道路崎岖(noise);
-
对路况的了解程度(训练样本数量N不够);
也就是说,VC Dimension、noise、N这三个因素是影响过拟合现象的关键。

二、The Role of Noise and Data Size
为了尽可能详细地解释overfitting,我们进行这样一个实验,试验中的数据集不是很大。首先,在二维平面上,一个模型的分布由目标函数f(x)(x的10阶多项式)加上一些noise构成,下图中,离散的圆圈是数据集,目标函数是蓝色的曲线。数据没有完全落在曲线上,是因为加入了noise。

然后,同样在二维平面上,另一个模型的分布由目标函数f(x)(x的50阶多项式)构成,没有加入noise。下图中,离散的圆圈是数据集,目标函数是蓝色的曲线。可以看出由于没有noise,数据集完全落在曲线上。

现在,有两个学习模型,一个是2阶多项式,另一个是10阶多项式,分别对上面两个问题进行建模。首先,对于第一个目标函数是10阶多项式包含noise的问题,这两个学习模型的效果如下图所示:

由上图可知,2阶多项式的学习模型
,
;10阶多项式的学习模型
,
。虽然10阶模型的
比2阶的小,但是其
要比2阶的大得多,而2阶的
和
相差不大,很明显用10阶的模型发生了过拟合。
然后,对于第二个目标函数是50阶多项式没有noise的问题,这两个学习模型的效果如下图所示:

由上图可知,2阶多项式的学习模型
,
;10阶多项式的学习模型
,
。虽然10阶模型的
比2阶的小,但是其
要比2阶的大得多的多,而2阶的
和
相差不大,很明显用10阶的模型仍然发生了明显的过拟合。
上面两个问题中,10阶模型都发生了过拟合,反而2阶的模型却表现得相对不错。这好像违背了我们的第一感觉,比如对于目标函数是10阶多项式,加上noise的模型,按道理来说应该是10阶的模型更能接近于目标函数,因为它们阶数相同。但是,事实却是2阶模型泛化能力更强。这种现象产生的原因,从哲学上来说,就是“以退为进”。有时候,简单的学习模型反而能表现的更好。
下面从learning curve来分析一下具体的原因,learning curve描述的是
和
随着数据量N的变化趋势。下图中左边是2阶学习模型的learning curve,右边是10阶学习模型的learning curve。

我们的第9次课的笔记 NTU林轩田机器学习基石课程学习笔记9 – Linear Regression已经介绍过了learning curve。在learning curve中,横轴是样本数量N,纵轴是Error。
和
可表示为:
其中d为模型阶次,左图中d=2,右图中d=10。
本节的实验问题中,数据量N不大,即对应于上图中的灰色区域。左图的灰色区域中,因为d=2,
和
相对来说比较接近;右图中的灰色区域中,d=10,根据
和
的表达式,
很小,而
很大。这就解释了之前2阶多项式模型的
更接近
,泛化能力更好。
值得一提的是,如果数据量N很大的时候,上面两图中
和
都比较接近,但是对于高阶模型,z域中的特征很多的时候,需要的样本数量N很大,且容易发生维度灾难。关于维度灾难的详细生动解释,请参考我另一篇博文:
另一个例子中,目标函数是50阶多项式,且没有加入noise。这种情况下,我们发现仍然是2阶的模型拟合的效果更好一些,明明没有noise,为什么是这样的结果呢?
实际上,我们忽略了一个问题:这种情况真的没有noise吗?其实,当模型很复杂的时候,即50阶多项式的目标函数,无论是2阶模型还是10阶模型,都不能学习的很好,这种复杂度本身就会引入一种‘noise’。所以,这种高阶无noise的问题,也可以类似于10阶多项式的目标函数加上noise的情况,只是二者的noise有些许不同,下面一部分将会详细解释。
三、Deterministic Noise
下面我们介绍一个更细节的实验来说明 什么时候小心overfit会发生。假设我们产生的数据分布由两部分组成:第一部分是目标函数f(x),
阶多项式;第二部分是噪声
,服从Gaussian分布。接下来我们分析的是noise强度不同对overfitting有什么样的影响。总共的数据量是N。

那么下面我们分析不同的
和
对overfit的影响。overfit可以量化为
。结果如下:

上图中,红色越深,代表overfit程度越高,蓝色越深,代表overfit程度越低。先看左边的图,左图中阶数
固定为20,横坐标代表样本数量N,纵坐标代表噪声水平
。红色区域集中在N很小或者
很大的时候,也就是说N越大,
越小,越不容易发生overfit。右边图中
,横坐标代表样本数量N,纵坐标代表目标函数阶数
。红色区域集中在N很小或者
很大的时候,也就是说N越大,
越小,越不容易发生overfit。上面两图基本相似。
从上面的分析,我们发现
对overfit是有很大的影响的,我们把这种noise称之为stochastic noise。同样地,
即模型复杂度也对overfit有很大影响,而且二者影响是相似的,所以我们把这种称之为deterministic noise。之所以把它称为noise,是因为模型高复杂度带来的影响。
总结一下,有四个因素会导致发生overfitting:
-
data size N
![]()
-
stochastic noise
![]()
-
deterministic noise
![]()
-
excessive power
![]()
我们刚才解释了如果目标函数f(x)的复杂度很高的时候,那么跟有noise也没有什么两样。因为目标函数很复杂,那么再好的hypothesis都会跟它有一些差距,我们把这种差距称之为deterministic noise。deterministic noise与stochastic noise不同,但是效果一样。其实deterministic noise类似于一个伪随机数发生器,它不会产生真正的随机数,而只产生伪随机数。它的值与hypothesis有关,且固定点x的deterministic noise值是固定的。
四、Dealing with Overfitting
现在我们知道了什么是overfitting,和overfitting产生的原因,那么如何避免overfitting呢?避免overfitting的方法主要包括:
-
start from simple model
-
data cleaning/pruning
-
data hinting
-
regularization
-
validataion
这几种方法类比于之前举的开车的例子,对应如下:

regularization和validation我们之后的课程再介绍,本节课主要介绍简单的data cleaning/pruning和data hinting两种方法。
data cleaning/pruning就是对训练数据集里label明显错误的样本进行修正(data cleaning),或者对错误的样本看成是noise,进行剔除(data pruning)。data cleaning/pruning关键在于如何准确寻找label错误的点或者是noise的点,而且如果这些点相比训练样本N很小的话,这种处理效果不太明显。
data hinting是针对N不够大的情况,如果没有办法获得更多的训练集,那么data hinting就可以对已知的样本进行简单的处理、变换,从而获得更多的样本。举个例子,数字分类问题,可以对已知的数字图片进行轻微的平移或者旋转,从而让N丰富起来,达到扩大训练集的目的。这种额外获得的例子称之为virtual examples。但是要注意一点的就是,新获取的virtual examples可能不再是iid某个distribution。所以新构建的virtual examples要尽量合理,且是独立同分布的。
五、总结
本节课主要介绍了overfitting的概念,即当
很小,
很大的时候,会出现overfitting。详细介绍了overfitting发生的四个常见原因data size N、stochastic noise、deterministic noise和excessive power。解决overfitting的方法有很多,本节课主要介绍了data cleaning/pruning和data hinting两种简单的方法,之后的课程将会详细介绍regularization和validataion两种更重要的方法。
注明:
文章中所有的图片均来自台湾大学林轩田《机器学习基石》课程
14 -- Regularization
上节课我们介绍了过拟合发生的原因:excessive power, stochastic/deterministic noise 和limited data。并介绍了解决overfitting的简单方法。本节课,我们将介绍解决overfitting的另一种非常重要的方法:Regularization规则化。
一、Regularized Hypothesis Set
先来看一个典型的overfitting的例子:

如图所示,在数据量不够大的情况下,如果我们使用一个高阶多项式(图中红色曲线所示),例如10阶,对目标函数(蓝色曲线)进行拟合。拟合曲线波动很大,虽然
很小,但是
很大,也就造成了过拟合现象。
那么如何对过拟合现象进行修正,使hypothesis更接近于target function呢?一种方法就是regularized fit。

这种方法得到的红色fit曲线,要比overfit的红色曲线平滑很多,更接近与目标函数,它的阶数要更低一些。那么问题就变成了我们要把高阶(10阶)的hypothesis sets转换为低阶(2阶)的hypothesis sets。通过下图我们发现,不同阶数的hypothesis存在如下包含关系:

我们发现10阶多项式hypothesis sets里包含了2阶多项式hypothesis sets的所有项,那么在
中加入一些限定条件,使它近似为
即可。这种函数近似曾被称之为不适定问题(ill-posed problem)。
如何从10阶转换为2阶呢?首先,
可表示为:
而
可表示为:
所以,如果限定条件是
,那么就有
。也就是说,对于高阶的hypothesis,为了防止过拟合,我们可以将其高阶部分的权重w限制为0,这样,就相当于从高阶的形式转换为低阶,fit波形更加平滑,不容易发生过拟合。

那有一个问题,令
高阶权重w为0,为什么不直接使用
呢?这样做的目的是拓展我们的视野,为即将讨论的问题做准备。刚刚我们讨论的限制是
高阶部分的权重w限制为0,这是比较苛刻的一种限制。下面,我们把这个限制条件变得更宽松一点,即令任意8个权重w为0,并不非要限定
,这个Looser Constraint可以写成:
也就只是限定了w不为0的个数,并不限定必须是高阶的w。这种hypothesis记为
,称为sparse hypothesis set,它与
和
的关系为:

Looser Constraint对应的hypothesis应该更好解一些,但事实是sparse hypothesis set
被证明也是NP-hard,求解非常困难。所以,还要转换为另一种易于求解的限定条件。
那么,我们寻找一种更容易求解的宽松的限定条件Softer Constraint,即:
其中,C是常数,也就是说,所有的权重w的平方和的大小不超过C,我们把这种hypothesis sets记为
。
与
的关系是,它们之间有重叠,有交集的部分,但是没有完全包含的关系,也不一定相等。对应
,C值越大,限定的范围越大,即越宽松:
当C无限大的时候,即限定条件非常宽松,相当于没有加上任何限制,就与
没有什么两样。
称为regularized hypothesis set,这种形式的限定条件是可以进行求解的,我们把求解的满足限定条件的权重w记为
。接下来就要探讨如何求解
。
二、Weight Decay Regularization
现在,针对H(c),即加上限定条件,我们的问题变成:

我们的目的是计算
的最小值,限定条件是
。这个限定条件从几何角度上的意思是,权重w被限定在半径为
的圆内,而球外的w都不符合要求,即便它是靠近
梯度为零的w。

下面用一张图来解释在限定条件下,最小化
的过程:

如上图所示,假设在空间中的一点w,根据梯度下降算法,w会朝着
的方向移动(图中蓝色箭头指示的方向),在没有限定条件的情况下,w最终会取得最小值
,即“谷底”的位置。现在,加上限定条件,即w被限定在半径为
的圆内,w距离原点的距离不能超过圆的半径,球如图中红色圆圈所示
。那么,这种情况下,w不能到达
的位置,最大只能位于圆上,沿着圆的切线方向移动(图中绿色箭头指示的方向)。与绿色向量垂直的向量(图中红色箭头指示的方向)是圆切线的法向量,即w的方向,w不能靠近红色箭头方向移动。那么随着迭代优化过程,只要
与w点切线方向不垂直,那么根据向量知识,
一定在w点切线方向上有不为零的分量,即w点会继续移动。只有当
与绿色切线垂直,即与红色法向量平行的时候,
在切线方向上没有不为零的分量了,也就表示这时w达到了最优解的位置。
有了这个平行的概念,我们就得到了获得最优解需要满足的性质:
上面公式中的
称为Lagrange multiplier,是用来解有条件的最佳化问题常用的数学工具,
是方便后面公式推导。那么我们的目标就变成了求解满足上面公式的
。
之前我们推导过,线性回归的
的表达式为:
计算
梯度,并代入到平行条件中,得到:
这是一个线性方程式,直接得到
为:
上式中包含了求逆矩阵的过程,因为
是半正定矩阵,如果
大于零,那么
一定是正定矩阵,即一定可逆。另外提一下,统计学上把这叫做ridge regression,可以看成是linear regression的进阶版。
如果对于更一般的情况,例如逻辑回归问题中,
不是线性的,那么将其代入平行条件中得到的就不是一个线性方程式,
不易求解。下面我们从另一个角度来看一下平行等式:
已知
是
对
的导数,而
也可以看成是
的导数。那么平行等式左边可以看成一个函数的导数,导数为零,即求该函数的最小值。也就是说,问题转换为最小化该函数:
该函数中第二项就是限定条件regularizer,也称为weight-decay regularization。我们把这个函数称为Augmented Error,即
。
如果
不为零,对应于加上了限定条件,若
等于零,则对应于没有任何限定条件,问题转换成之前的最小化
。
下面给出一个曲线拟合的例子,
取不同的值时,得到的曲线也不相同:

从图中可以看出,当
时,发生了过拟合;当
时,拟合的效果很好;当
和
时,发生了欠拟合。我们可以把
看成是一种penality,即对hypothesis复杂度的惩罚,
越大,w就越小,对应于C值越小,即这种惩罚越大,拟合曲线就会越平滑,高阶项就会削弱,容易发生欠拟合。
一般取比较小的值就能达到良好的拟合效果,过大过小都有问题,但究竟取什么值,要根据具体训练数据和模型进行分析与调试。

事实上,这种regularization不仅可以用在多项式的hypothesis中,还可以应用在logistic regression等其他hypothesis中,都可以达到防止过拟合的效果。
我们目前讨论的多项式是形如
的形式,若x的范围限定在[-1,1]之间,那么可能导致
相对于低阶的值要小得多,则其对于的w非常大,相当于要给高阶项设置很大的惩罚。为了避免出现这种数据大小差别很大的情况,可以使用Legendre Polynomials代替
这种形式,Legendre Polynomials各项之间是正交的,用它进行多项式拟合的效果更好。关于Legendre Polynomials的概念这里不详细介绍,有兴趣的童鞋可以看一下维基百科。
三、Regularization and VC Theory
下面我们研究一下Regularization与VC理论之间的关系。Augmented Error表达式如下:
VC Bound表示为:
其中
表示的是单个hypothesis的复杂度,记为
;而
表示整个hypothesis set的复杂度。根据Augmented Error和VC Bound的表达式,
包含于
之内,所以,
比
更接近于
,即更好地代表
,
与
之间的误差更小。

根据VC Dimension理论,整个hypothesis set的
,这是因为所有的w都考虑了,没有任何限制条件。而引入限定条件的
,即有效的VC dimension。也就是说,
比较大,因为它代表了整个hypothesis set,但是
比较小,因为由于regularized的影响,限定了w只取一小部分。其中A表示regularized算法。当
时,有:
这些与实际情况是相符的,比如对多项式拟合模型,当
时,所有的w都给予考虑,相应的
很大,容易发生过拟合。当
且越来越大时,很多w将被舍弃,
减小,拟合曲线越来越平滑,容易发生欠拟合。
四、General Regularizers
那么通用的Regularizers,即
,应该选择什么样的形式呢?一般地,我们会朝着目标函数的方向进行选取。有三种方式:
-
target-dependent
-
plausible
-
friendly

其实这三种方法跟之前error measure类似,其也有三种方法:
-
user-dependent
-
plausible
-
friendly
regularizer与error measure是机器学习模型设计中的重要步骤。

接下来,介绍两种Regularizer:L2和L1。L2 Regularizer一般比较通用,其形式如下:
这种形式的regularizer计算的是w的平方和,是凸函数,比较平滑,易于微分,容易进行最优化计算。
L1 Regularizer的表达式如下:
L1计算的不是w的平方和,而是绝对值和,即长度和,也是凸函数。已知
围成的是圆形,而
围成的是正方形,那么在正方形的四个顶点处,是不可微分的(不像圆形,处处可微分)。根据之前介绍的平行等式推导过程,对应这种正方形,它的解大都位于四个顶点处(不太理解,欢迎补充赐教),因为正方形边界处的w绝对值都不为零,若
不与其平行,那么w就会向顶点处移动,顶点处的许多w分量为零,所以,L1 Regularizer的解是稀疏的,称为sparsity。优点是计算速度快。

下面来看一下
如何取值,首先,若stochastic noise不同,那么一般情况下,
取值有如下特点:

从图中可以看出,stochastic noise越大,
越大。
另一种情况,不同的deterministic noise,
取值有如下特点:

从图中可以看出,deterministic noise越大,
越大。
以上两种noise的情况下,都是noise越大,相应的
也就越大。这也很好理解,如果在开车的情况下,路况也不好,即noise越多,那么就越会踩刹车,这里踩刹车指的就是regularization。但是大多数情况下,noise是不可知的,这种情况下如何选择
?这部分内容,我们下节课将会讨论。
五、总结
本节课主要介绍了Regularization。首先,原来的hypothesis set加上一些限制条件,就成了Regularized Hypothesis Set。加上限制条件之后,我们就可以把问题转化为
最小化问题,即把w的平方加进去。这种过程,实际上回降低VC Dimension。最后,介绍regularization是通用的机器学习工具,设计方法通常包括target-dependent,plausible,friendly等等。下节课将介绍如何选取合适的
来建立最佳拟合模型。
注明:
文章中所有的图片均来自台湾大学林轩田《机器学习基石》课程
15 -- Validation
上节课我们主要讲了为了避免overfitting,可以使用regularization方法来解决。在之前的
上加上一个regularizer,生成
,将其最小化,这样可以有效减少模型的复杂度,避免过拟合现象的发生。那么,机器学习领域还有许多选择,如何保证训练的模型具有良好的泛化能力?本节课将介绍一些概念和方法来解决这个选择性的问题。
一、Model Selection Problem
机器学习模型建立的过程中有许多选择,例如对于简单的二元分类问题,首先是算法A的选择,有PLA,pocket,linear regression,logistic regression等等;其次是迭代次数T的选择,有100,1000,10000等等;之后是学习速率
的选择,有1,0.01,0.0001等等;接着是模型特征转换
的选择,有linear,quadratic,poly-10,Legendre-poly-10等等;然后是正则化regularizer的选择,有L2,L1等等;最后是正则化系数
的选择,有0,0.01,1等等。不同的选择搭配,有不同的机器学习效果。我们的目标就是找到最合适的选择搭配,得到一个好的矩g,构建最佳的机器学习模型。

假设有M个模型,对应有
,即有M个hypothesis set,演算法为
,共M个。我们的目标是从这M个hypothesis set中选择一个模型
,通过演算法
对样本集D的训练,得到一个最好的矩
,使其
最小。所以,问题的关键就是机器学习中如何选择到最好的矩
。
考虑有这样一种方法,对M个模型分别计算使
最小的矩g,再横向比较,取其中能使
最小的模型的矩
:

但是
足够小并不能表示模型好,反而可能表示训练的矩
发生了过拟合,泛化能力很差。而且这种“模型选择+学习训练”的过程,它的VC Dimension是
,模型复杂度增加。总的来说,泛化能力差,用
来选择模型是不好的。
另外一种方法,如果有这样一个独立于训练样本的测试集,将M个模型在测试集上进行测试,看一下
的大小,则选取
最小的模型作为最佳模型:

这种测试集验证的方法,根据finite-bin Hoffding不等式,可以得到:
由上式可以看出,模型个数M越少,测试集数目越大,那么
越小,即
越接近于
。
下面比较一下之前讲的两种方法,第一种方法使用
作为判断基准,使用的数据集就是训练集D本身;第二种方法使用
作为判断基准,使用的是独立于训练集D之外的测试集。前者不仅使用D来训练不同的
,而且又使用D来选择最好的
,那么
对未知数据并不一定泛化能力好。举个例子,这相当于老师用学生做过的练习题再来对学生进行考试,那么即使学生得到高分,也不能说明他的学习能力强。所以最小化
的方法并不科学。而后者使用的是独立于D的测试集,相当于新的考试题能更好地反映学生的真实水平,所以最小化
更加理想。

但是,我们拿到的一都是训练集D,测试集是拿不到的。所以,寻找一种折中的办法,我们可以使用已有的训练集D来创造一个验证集validation set,即从D中划出一部分
作为验证集。D另外的部分作为训练模型使用,
独立开来,用来测试各个模型的好坏,最小化
,从而选择最佳的
。

二、Validation
从训练集D中抽出一部分K个数据作为验证集
,
对应的error记为
。这样做的一个前提是保证
独立同分布(iid)于P(x,y),也就是说
的选择是从D中平均随机抽样得到的,这样能够把
与
联系起来。D中去除
后的数据就是供模型选择的训练数据
,其大小为N-k。从
中选择最好的矩,记为
。

假如D共有1000个样本,那么可以选择其中900个
,剩下的100个作为
。使用
训练模型,得到最佳的
,使用
对
进行验证,得到如下Hoffding不等式:
假设有M种模型hypothesis set,
的数量为K,那么从每种模型m中得到一个在
上表现最好的矩,再横向比较,从M个矩中选择一个最好的
作为我们最终得到的模型。

现在由于数量为N的总样本D的一部分K作为验证集,那么只有N-k个样本可供训练。从
中得到最好的
,而总样本D对应的最好的矩为
。根据之前的leraning curve很容易知道,训练样本越多,得到的模型越准确,其hypothesis越接近target function,即D的
比
的
要小:

所以,我们通常的做法是通过
来选择最好的矩
对应的模型
,再对整体样本集D使用该模型进行训练,最终得到最好的矩
。
总结一下,使用验证集进行模型选择的整个过程为:先将D分成两个部分,一个是训练样本
,一个是验证集
。若有M个模型,那么分别对每个模型在
上进行训练,得到矩
,再用
对每个
进行验证,选择表现最好的矩
,则该矩对应的模型被选择。最后使用该模型对整个D进行训练,得到最终的
。下图展示了整个模型选择的过程:

不等式关系满足:
下面我们举个例子来解释这种模型选择的方法的优越性,假设有两个模型:一个是5阶多项式
,一个是10阶多项式
。通过不使用验证集和使用验证集两种方法对模型选择结果进行比较,分析结果如下:

图中,横坐标表示验证集数量K,纵坐标表示
大小。黑色水平线表示没有验证集,完全使用
进行判断基准,那么
更好一些,但是这种方法的
比较大,而且与K无关。黑色虚线表示测试集非常接近实际数据,这是一种理想的情况,其
很小,同样也与K无关,实际中很难得到这条虚线。红色曲线表示使用验证集,但是最终选取的矩是
,其趋势是随着K的增加,它对应的
先减小再增大,当K大于一定值的时候,甚至会超过黑色水平线。蓝色曲线表示也使用验证集,最终选取的矩是
,其趋势是随着K的增加,它对应的
先缓慢减小再缓慢增大,且一直位于红色曲线和黑色直线之下。从此可见,蓝色曲线对应的方法最好,符合我们之前讨论的使用验证集进行模型选择效果最好。
这里提一点,当K大于一定的值时,红色曲线会超过黑色直线。这是因为随着K的增大,
增大,但可供模型训练的
在减小,那得到的
不具有很好的泛化能力,即对应的
会增大,甚至当K增大到一定值时,比
模型更差。
那么,如何设置验证集K值的大小呢?根据之前的分析:

当K值很大时,
,但是
与
相差很大;当K值很小是,
,但是
与
可能相差很大。所以有个折中的办法,通常设置
。值得一提的是,划分验证集,通常并不会增加整体时间复杂度,反而会减少,因为
减少了。
三、Leave-One-Out Cross Validation
假如考虑一个极端的例子,k=1,也就是说验证集大小为1,即每次只用一组数据对
进行验证。这样做的优点是
,但是
与
可能相差很大。为了避免
与
相差很大,每次从D中取一组作为验证集,直到所有样本都作过验证集,共计算N次,最后对验证误差求平均,得到
,这种方法称之为留一法交叉验证,表达式为:
这样求平均的目的是为了让
尽可能地接近
。
下面用一个例子图解留一法的过程:

如上图所示,要对二维平面上的三个点做拟合,上面三个图表示的是线性模型,下面三个图表示的是常数模型。对于两种模型,分别使用留一交叉验证法来计算
,计算过程都是每次将一个点作为验证集,其他两个点作为训练集,最终将得到的验证误差求平均值,就得到了
和
,比较两个值的大小,取值小对应的模型即为最佳模型。

接下来,我们从理论上分析Leave-One-Out方法的可行性,即
是否能保证
的矩足够好?假设有不同的数据集D,它的期望分布记为
,则其
可以通过推导,等于
的平均值。由于N-1近似为N,
的平均值也近似等于
的平均值。具体推导过程如下:

最终我们得到的结论是
的期望值和
的期望值是相近的,这代表得到了比较理想的
,Leave-One-Out方法是可行的。
举一个例子,使用两个特征:Average Intensity和Symmetry加上这两个特征的非线性变换(例如高阶项)来进行手写数字识别。平面特征分布如下图所示:

Error与特征数量的关系如下图所示:

从图中我们看出,随着特征数量的增加,
不断减小,
先减小再增大,虽然
是不断减小的,但是它与
的差距越来越大,发生了过拟合,泛化能力太差。而
与
的分布基本一致,能较好地反映
的变化。所以,我们只要使用Leave-One-Out方法得到使
最小的模型,就能保证其
足够小。下图是分别使用
和
进行训练得到的分类曲线:

很明显可以看出,使用
发生了过拟合,而
分类效果更好,泛化能力强。
四、V-Fold Cross Validation
接下来我们看看Leave-One-Out可能的问题是什么。首先,第一个问题是计算量,假设N=1000,那么就需要计算1000次的
,再计算其平均值。当N很大的时候,计算量是巨大的,很耗费时间。第二个问题是稳定性,例如对于二分类问题,取值只有0和1两种,预测本身存在不稳定的因素,那么对所有的
计算平均值可能会带来很大的数值跳动,稳定性不好。所以,这两个因素决定了Leave-One-Out方法在实际中并不常用。
针对Leave-One-Out的缺点,我们对其作出了改进。Leave-One-Out是将N个数据分成N分,那么改进措施是将N个数据分成V份(例如V=10),计算过程与Leave-One-Out相似。这样可以减少总的计算量,又能进行交叉验证,得到最好的矩,这种方法称为V-折交叉验证。其实Leave-One-Out就是V-折交叉验证的一个极端例子。
所以呢,一般的Validation使用V-折交叉验证来选择最佳的模型。值得一提的是Validation的数据来源也是样本集中的,所以并不能保证交叉验证的效果好,它的模型一定好。只有样本数据越多,越广泛,那么Validation的结果越可信,其选择的模型泛化能力越强。
五、总结
本节课主要介绍了Validation验证。先从如何选择一个好的模型开始切入,例如使用
、
都是不太好的,最终使用
来进行模型选择。然后详细介绍了Validation的过程。最后,介绍了Leave-One-Out和V-Fold Cross两种验证方法,比较它们各自的优点和缺点,实际情况下,V-Fold Cross更加常用。
注明:
文章中所有的图片均来自台湾大学林轩田《机器学习基石》课程
16 -- Three Learning Principles
上节课我们讲了一个机器学习很重要的工具——Validation。我们将整个训练集分成两部分:
和
,一部分作为机器学习模型建立的训练数据,另一部分作为验证模型好坏的数据,从而选择到更好的模型,实现更好的泛化能力。这节课,我们主要介绍机器学习中非常实用的三个“锦囊妙计”。
一、Occam’s Razor
奥卡姆剃刀定律(Occam’s Razor),是由14世纪逻辑学家、圣方济各会修士奥卡姆的威廉(William of Occam,约1285年至1349年)提出。奥卡姆(Ockham)在英格兰的萨里郡,那是他出生的地方。他在《箴言书注》2卷15题说“切勿浪费较多东西去做用较少的东西同样可以做好的事情。” 这个原理称为“如无必要,勿增实体”(Entities must not be multiplied unnecessarily),就像剃刀一样,将不必要的部分去除掉。
Occam’s Razor反映到机器学习领域中,指的是在所有可能选择的模型中,我们应该选择能够很好地解释已知数据并且十分简单的模型。

上图就是一个模型选择的例子,左边的模型很简单,可能有分错的情况;而右边的模型非常复杂,所有的训练样本都分类正确。但是,我们会选择左边的模型,它更简单,符合人类直觉的解释方式。这样的结果带来两个问题:一个是什么模型称得上是简单的?另一个是为什么简单模型比复杂模型要好?
简单的模型一方面指的是简单的hypothesis h,简单的hypothesis就是指模型使用的特征比较少,例如多项式阶数比较少。简单模型另一方面指的是模型H包含的hypothesis数目有限,不会太多,这也是简单模型包含的内容。

其实,simple hypothesis h和simple model H是紧密联系的。如果hypothesis的特征个数是l,那么H中包含的hypothesis个数就是
,也就是说,hypothesis特征数目越少,H中hypothesis数目也就越少。
所以,为了让模型简单化,我们可以一开始就选择简单的model,或者用regularization,让hypothesis中参数个数减少,都能降低模型复杂度。
那为什么简单的模型更好呢?下面从哲学的角度简单解释一下。机器学习的目的是“找规律”,即分析数据的特征,总结出规律性的东西出来。假设现在有一堆没有规律的杂乱的数据需要分类,要找到一个模型,让它的
,是很难的,大部分时候都无法正确分类,但是如果是很复杂的模型,也有可能将其分开。反过来说,如果有另一组数据,如果可以比较容易找到一个模型能完美地把数据分开,那表明数据本身应该是有某种规律性。也就是说杂乱的数据应该不可以分开,能够分开的数据应该不是杂乱的。如果使用某种简单的模型就可以将数据分开,那表明数据本身应该符合某种规律性。相反地,如果用很复杂的模型将数据分开,并不能保证数据本身有规律性存在,也有可能是杂乱的数据,因为无论是有规律数据还是杂乱数据,复杂模型都能分开。这就不是机器学习模型解决的内容了。所以,模型选择中,我们应该尽量先选择简单模型,例如最简单的线性模型。
二、Sampling Bias
首先引入一个有趣的例子:1948年美国总统大选的两位热门候选人是Truman和Dewey。一家报纸通过电话采访,统计人们把选票投给了Truman还是Dewey。经过大量的电话统计显示,投给Dewey的票数要比投个Truman的票数多,所以这家报纸就在选举结果还没公布之前,信心满满地发表了“Dewey Defeats Truman”的报纸头版,认为Dewey肯定赢了。但是大选结果公布后,让这家报纸大跌眼镜,最终Truman赢的了大选的胜利。
为什么会出现跟电话统计完全相反的结果呢?是因为电话统计数据出错还是投票运气不好?都不是。其实是因为当时电话比较贵,有电话的家庭比较少,而正好是有电话的美国人支持Dewey的比较多,而没有电话的支持Truman比较多。也就是说样本选择偏向于有钱人那边,可能不具有广泛的代表性,才造成Dewey支持率更多的假象。
这个例子表明,抽样的样本会影响到结果,用一句话表示“If the data is sampled in a biased way, learning will produce a similarly biased outcome.”意思是,如果抽样有偏差的话,那么学习的结果也产生了偏差,这种情形称之为抽样偏差Sampling Bias。
从技术上来说,就是训练数据和验证数据要服从同一个分布,最好都是独立同分布的,这样训练得到的模型才能更好地具有代表性。
三、Data Snooping
之前的课程,我们介绍过在模型选择时应该尽量避免偷窥数据,因为这样会使我们人为地倾向于某种模型,而不是根据数据进行随机选择。所以,
应该自由选取,最好不要偷窥到原始数据,这会影响我们的判断。
事实上,数据偷窥发生的情况有很多,不仅仅指我们看到了原始数据。什么意思呢?其实,当你在使用这些数据的任何过程,都是间接地偷看到了数据本身,然后你会进行一些模型的选择或者决策,这就增加了许多的model complexity,也就是引入了污染。
下面举个例子来说明。假如我们有8年的货比交易数据,我们希望从这些数据中找出规律,来预测货比的走势。如果选择前6年数据作为训练数据,后2年数据作为测试数据的话,来训练模型。现在我们有前20天的数据,根据之前训练的模型,来预测第21天的货比交易走势。

现在有两种训练模型的方法,如图所示,一种是使用前6年数据进行模型训练,后2年数据作为测试,图中蓝色曲线表示后2年的预测收益;另一种是直接使用8年数据进行模型训练,图中红色曲线表示后2年的预测收益情况。图中,很明显,使用8年数据进行训练的模型对后2年的预测的收益更大,似乎效果更好。但是这是一种自欺欺人的做法,因为训练的时候已经拿到了后2年的数据,用这样的模型再来预测后2年的走势是不科学的。这种做法也属于间接偷窥数据的行为。直接偷窥和间接偷窥数据的行为都是不科学的做法,并不能表示训练的模型有多好。

还有一个偷窥数据的例子,比如对于某个基准数据集D,某人对它建立了一个模型H1,并发表了论文。第二个人看到这篇论文后,又会对D,建立一个新的好的模型H2。这样,不断地有人看过前人的论文后,建立新的模型。其实,后面人选择模型时,已经被前人影响了,这也是偷窥数据的一种情况。也许你能对D训练很好的模型,但是可能你仅仅只根据前人的模型,成功避开了一些错误,甚至可能发生了overfitting或者bad generalization。所以,机器学习领域有这样一句有意思的话“If you torture the data long enough, it will confess.”所以,我们不能太“折磨”我们的数据了,否则它只能“妥协”了~哈哈。
在机器学习过程中,避免“偷窥数据”非常重要,但实际上,完全避免也很困难。实际操作中,有一些方法可以帮助我们尽量避免偷窥数据。第一个方法是“看不见”数据。就是说当我们在选择模型的时候,尽量用我们的经验和知识来做判断选择,而不是通过数据来选择。先选模型,再看数据。第二个方法是保持怀疑。就是说时刻保持对别人的论文或者研究成果保持警惕与怀疑,要通过自己的研究与测试来进行模型选择,这样才能得到比较正确的结论。

四、Power of Three
本小节,我们对16节课做个简单的总结,用“三的威力”进行概括。因为课程中我们介绍的很多东西都与三有关。
首先,我们介绍了跟机器学习相关的三个领域:
-
Data Mining
-
Artificial Intelligence
-
Statistics

我们还介绍了三个理论保证:
-
Hoeffding
-
Multi-Bin Hoeffding
-
VC

然后,我们又介绍了三种线性模型:
-
PLA/pocket
-
linear regression
-
logistic regression

同时,我们介绍了三种重要的工具:
-
Feature Transform
-
Regularization
-
Validation

还有我们本节课介绍的三个锦囊妙计:
-
Occam’s Razer
-
Sampling Bias
-
Data Snooping

最后,我们未来机器学习的方向也分为三种:
-
More Transform
-
More Regularization
-
Less Label

五、总结
本节课主要介绍了机器学习三个重要的锦囊妙计:Occam’s Razor, Sampling Bias, Data Snooping。并对《机器学习基石》课程中介绍的所有知识和方法进行“三的威力”这种形式的概括与总结,“三的威力”也就构成了坚固的机器学习基石。
整个机器学习基石的课程笔记总结完毕!后续将会推出机器学习技法的学习笔记,谢谢!
注明:
文章中所有的图片均来自台湾大学林轩田《机器学习基石》课程
机器学习技法
1 -- Linear Support Vector Machine
关于台湾大学林轩田老师的《机器学习基石》课程,我们已经总结了16节课的笔记。这里附上基石第一节课的博客地址:
台湾大学林轩田机器学习基石课程学习笔记1 – The Learning Problem
本系列同样分成16节课,将会介绍《机器学习基石》的进阶版《机器学习技法》,更深入地探讨机器学习一些高级算法和技巧。
Large-Margin Separating Hyperplane
回顾一下我们之前介绍了linear classification,对于线性可分的情况,我们可以使用PLA/pocket算法在平面或者超平面上把正负类分开。

例如对平面2D这种情况,我们可以找到一条直线,能将正类和负类完全分开。但是,这样的直线通常不止一条,如下图所示。那么,下图中的三条分类线都能将数据分开,但是哪条线更好呢?

这三条直线都是由PLA/pocket算法不断修正错误点而最终产生的,整个确定直线形状的过程是随机的。单从分类效果上看,这三条直线都满足要求,而且都满足VC bound要求,模型复杂度
是一样的,即具有一定的泛化能力。但是,如果要选择的话,凭第一感觉,我们还是会选择第三条直线,感觉它的分类效果更好一些。那这又是为什么呢?
先给个简单解释,一般情况下,训练样本外的测量数据应该分布在训练样本附近,但与训练样本的位置有一些偏差。若要保证对未知的测量数据也能进行正确分类,最好让分类直线距离正类负类的点都有一定的距离。这样能让每个样本点附近的圆形区域是“安全”的。圆形区域越大,表示分类直线对测量数据误差的容忍性越高,越“安全”。

如上图所示,左边的点距离分类直线的最小距离很小,它的圆形区域很小。那么,这种情况下,分类线对测量数据误差的容忍性就很差,测量数据与样本数据稍有偏差,很有可能就被误分。而右边的点距离分类直线的最小距离更大一些,其圆形区域也比较大。这种情况下,分类线对测量数据误差的容忍性就相对来说大很多,不容易误分。也就是说,左边分类线和右边分类线的最大区别是对这类测量误差的容忍度不同。
那么,如果每一笔训练资料距离分类线越远的话,就表示分类型可以忍受更多的测量误差(noise)。我们之前在《机器学习基石》中介绍过,noise是造成overfitting的主要原因,而测量误差也是一种noise。所以,如果分类线对测量误差的容忍性越好的话,表示这是一条不错的分类线。那么,我们的目标就是找到这样一条最“健壮”的线,即距离数据点越远越好。

上面我们用圆形区域表示分类线能够容忍多少误差,也就相当于计算点到直线的距离。距离越大,表示直线越“胖”,越能容忍误差;距离越小,表示直线越“瘦”,越不能容忍误差。越胖越好(像杨贵妃那样的哦~)。

如何定义分类线有多胖,就是看距离分类线最近的点与分类线的距离,我们把它用margin表示。分类线由权重w决定,目的就是找到使margin最大时对应的w值。整体来说,我们的目标就是找到这样的分类线并满足下列条件:
-
分类正确,即
![]()
-
margin最大化

Standard Large-Margin Problem
要让margin最大,即让离分类线最近的点到分类线距离最大,我们先来看一下如何计算点到分类线的距离。
首先,我们将权重
中的
拿出来,用b表示。同时省去
项。这样,hypothesis就变成了
。

下面,利用图解的方式,详细推导如何计算点到分类平面的距离:

如上图所示,平面上有两个点:x’和x”。因为这两个点都在分类平面上,所以它们都满足:


同时可以得到:
,
,则有:

(x”-x’)是平面上的任一向量,(x”-x’)与w内积为0,表示(x”-x’)垂直于w,那么w就是平面的法向量。
现在,若要计算平面外一点x到该平面的距离,做法是只要将向量(x-x’)投影到垂直于该平面的方向(即w方向)上就可以了。那么,令(x”-x’)与w的夹角为
,距离就可以表示为:

代入
,可得:

点到分类面(Separating Hyperplane)的距离已经算出来了。基于这个分类面,所有的点均满足:
,表示所有点都分类正确,则distance公式就可以变换成:

那么,我们的目标形式就转换为:

对上面的式子还不容易求解,我们继续对它进行简化。我们知道分类面
和
其实是一样的。也就是说,对w和b进行同样的缩放还会得到同一分类面。所以,为了简化计算,我们令距离分类满最近的点满足
。那我们所要求的margin就变成了:

这样,目标形式就简化为:

这里可以省略条件:
,因为满足条件
必然满足大于零的条件。我们的目标就是根据这个条件,计算
的最大值。
刚刚我们讲的距离分类满最近的点满足
,也就是说对所有的点满足
。另外,因为最小化问题我们最熟悉也最好解,所以可以把目标
最大化转化为计算
的最小化问题。

如上图所示,最终的条件就是
,而我们的目标就是最小化
值。
Support Vector Machine
现在,条件和目标变成:

现在,举个例子,假如平面上有四个点,两个正类,两个负类:

不同点的坐标加上条件
,可以得到:

最终,我们得到的条件是:


而我们的目标是:

目标最小值为1,即
,那么这个例子就得到了最佳分类面的解,如图所示,且
。分类面的表达式为:

最终我们得到的矩的表达式为:

Support Vector Machine(SVM)这个名字从何而来?为什么把这种分类面解法称为支持向量机呢?这是因为分类面仅仅由分类面的两边距离它最近的几个点决定的,其它点对分类面没有影响。决定分类面的几个点称之为支持向量(Support Vector),好比这些点“支撑”着分类面。而利用Support Vector得到最佳分类面的方法,称之为支持向量机(Support Vector Machine)。
下面介绍SVM的一般求解方法。先写下我们的条件和目标:

这是一个典型的二次规划问题,即Quadratic Programming(QP)。因为SVM的目标是关于w的二次函数,条件是关于w和b的一次函数,所以,它的求解过程还是比较容易的,可以使用一些软件(例如Matlab)自带的二次规划的库函数来求解。下图给出SVM与标准二次规划问题的参数对应关系:

那么,线性SVM算法可以总结为三步:
-
计算对应的二次规划参数Q,p,A,c
-
根据二次规划库函数,计算b,w
-
将b和w代入
,得到最佳分类面

这种方法称为Linear Hard-Margin SVM Algorithm。如果是非线性的,例如包含x的高阶项,那么可以使用我们之前在《机器学习基石》课程中介绍的特征转换的方法,先作
的特征变换,从非线性的x域映射到线性的z域空间,再利用Linear Hard-Margin SVM Algorithm求解即可。
Reasons behind Large-Margin Hyperplane
从视觉和直觉的角度,我们认为Large-Margin Hyperplane的分类效果更好。SVM的这种思想其实与我们之前介绍的机器学习非常重要的正则化regularization思想很类似。regularization的目标是将
最小化,条件是
;SVM的目标是
最小化,条件是
,即保证了
。有趣的是,regularization与SVM的目标和限制条件分别对调了。其实,考虑的内容是类似的,效果也是相近的。SVM也可以说是一种weight-decay regularization,限制条件是
。

从另一方面来看,Large-Margin会限制Dichotomies的个数。这从视觉上也很好理解,假如一条分类面越“胖”,即对应Large-Margin,那么它可能shtter的点的个数就可能越少:

之前的《机器学习基石》课程中介绍过,Dichotomies与VC Dimension是紧密联系的。也就是说如果Dichotomies越少,那么复杂度就越低,即有效的VC Dimension就越小,得到
,泛化能力强。
下面我们从概念的角度推导一下为什么dichotomies越少,VC Dimension就越少。首先我们考虑一下Large-Margin演算法的VC Dimension,记为
。
与数据有关,而我们之前介绍的
与数据无关。
假如平面上有3个点分布在单位圆上,如果Margin为0,即
,这条细细的直线可以很容易将圆上任意三点分开(shatter),就能得到它的
。如果
,这条粗粗的线无论如何都不能将圆上的任一三点全完分开(no shatter),因为圆上必然至少存在两个点的距离小于
,那么其对应d的
。

那么,一般地,在d维空间,当数据点分布在半径为R的超球体内时,得到的
满足下列不等式:

之前介绍的Perceptrons的VC Dimension为d+1,这里得到的结果是Large-Margin演算法的
。所以,由于Large-Margin,得到的dichotomies个数减少,从而VC Dimension也减少了。VC Dimension减少降低了模型复杂度,提高了泛化能力。
总结
本节课主要介绍了线性支持向量机(Linear Support Vector Machine)。我们先从视觉角度出发,希望得到一个比较“胖”的分类面,即满足所有的点距离分类面都尽可能远。然后,我们通过一步步推导和简化,最终把这个问题转换为标准的二次规划(QP)问题。二次规划问题可以使用Matlab等软件来进行求解,得到我们要求的w和b,确定分类面。这种方法背后的原理其实就是减少了dichotomies的种类,减少了有效的VC Dimension数量,从而让机器学习的模型具有更好的泛化能力。
注明:
文章中所有的图片均来自台湾大学林轩田《机器学习技法》课程
1 -- The Learning Problem
最近在看NTU林轩田的《机器学习基石》课程,个人感觉讲的非常好。整个基石课程分成四个部分:
-
When Can Machine Learn?
-
Why Can Machine Learn?
-
How Can Machine Learn?
-
How Can Machine Learn Better?
每个部分由四节课组成,总共有16节课。那么,从这篇开始,我们将连续对这门课做课程笔记,共16篇,希望能对正在看这们课的童鞋有所帮助。下面开始第一节课的笔记:The Learning Problem。
一、What is Machine Learning
什么是“学习”?学习就是人类通过观察、积累经验,掌握某项技能或能力。就好像我们从小学习识别字母、认识汉字,就是学习的过程。而机器学习(Machine Learning),顾名思义,就是让机器(计算机)也能向人类一样,通过观察大量的数据和训练,发现事物规律,获得某种分析问题、解决问题的能力。

机器学习可以被定义为:Improving some performance measure with experence computed from data. 也就是机器从数据中总结经验,从数据中找出某种规律或者模型,并用它来解决实际问题。

什么情况下会使用机器学习来解决问题呢?其实,目前机器学习的应用非常广泛,基本上任何场合都能够看到它的身影。其应用场合大致可归纳为三个条件:
-
事物本身存在某种潜在规律
-
某些问题难以使用普通编程解决
-
有大量的数据样本可供使用

二、Applications of Machine Learning
机器学习在我们的衣、食、住、行、教育、娱乐等各个方面都有着广泛的应用,我们的生活处处都离不开机器学习。比如,打开购物网站,网站就会给我们自动推荐我们可能会喜欢的商品;电影频道会根据用户的浏览记录和观影记录,向不同用户推荐他们可能喜欢的电影等等,到处都有机器学习的影子。
三、Components of Machine Learning
本系列的课程对机器学习问题有一些基本的术语需要注意一下:
-
输入x
-
输出y
-
目标函数f,即最接近实际样本分布的规律
-
训练样本data
-
假设hypothesis,一个机器学习模型对应了很多不同的hypothesis,通过演算法A,选择一个最佳的hypothesis对应的函数称为矩g,g能最好地表示事物的内在规律,也是我们最终想要得到的模型表达式。

实际中,机器学习的流程图可以表示为:

对于理想的目标函数f,我们是不知道的,我们手上拿到的是一些训练样本D,假设是监督式学习,其中有输入x,也有输出y。机器学习的过程,就是根据先验知识选择模型,该模型对应的hypothesis set(用H表示),H中包含了许多不同的hypothesis,通过演算法A,在训练样本D上进行训练,选择出一个最好的hypothes,对应的函数表达式g就是我们最终要求的。一般情况下,g能最接近目标函数f,这样,机器学习的整个流程就完成了。
四、Machine Learning and Other Fields
与机器学习相关的领域有:
-
数据挖掘(Data Mining)
-
人工智能(Artificial Intelligence)
-
统计(Statistics)
其实,机器学习与这三个领域是相通的,基本类似,但也不完全一样。机器学习是这三个领域中的有力工具,而同时,这三个领域也是机器学习可以广泛应用的领域,总得来说,他们之间没有十分明确的界线。
五、总结
本节课主要介绍了什么是机器学习,什么样的场合下可以使用机器学习解决问题,然后用流程图的形式展示了机器学习的整个过程,最后把机器学习和数据挖掘、人工智能、统计这三个领域做个比较。本节课的内容主要是概述性的东西,比较简单,所以笔记也相对比较简略。
这里附上林轩田(Hsuan-Tien Lin)关于这门课的主页:
http://www.csie.ntu.edu.tw/~htlin/
注明:
文章中所有的图片均来自台湾大学林轩田《机器学习基石》课程。
2 -- Dual Support Vector Machine
上节课我们主要介绍了线性支持向量机(Linear Support Vector Machine)。Linear SVM的目标是找出最“胖”的分割线进行正负类的分离,方法是使用二次规划来求出分类线。本节课将从另一个方面入手,研究对偶支持向量机(Dual Support Vector Machine),尝试从新的角度计算得出分类线,推广SVM的应用范围。
Motivation of Dual SVM
首先,我们回顾一下,对于非线性SVM,我们通常可以使用非线性变换将变量从x域转换到z域中。然后,在z域中,根据上一节课的内容,使用线性SVM解决问题即可。上一节课我们说过,使用SVM得到large-margin,减少了有效的VC Dimension,限制了模型复杂度;另一方面,使用特征转换,目的是让模型更复杂,减小
。所以说,非线性SVM是把这两者目的结合起来,平衡这两者的关系。那么,特征转换下,求解QP问题在z域中的维度设为
,如果模型越复杂,则
越大,相应求解这个QP问题也变得很困难。当
无限大的时候,问题将会变得难以求解,那么有没有什么办法可以解决这个问题呢?一种方法就是使SVM的求解过程不依赖
,这就是我们本节课所要讨论的主要内容。

比较一下,我们上一节课所讲的Original SVM二次规划问题的变量个数是
,有N个限制条件;而本节课,我们把问题转化为对偶问题(’Equivalent’ SVM),同样是二次规划,只不过变量个数变成N个,有N+1个限制条件。这种对偶SVM的好处就是问题只跟N有关,与
无关,这样就不存在上文提到的当
无限大时难以求解的情况。

如何把问题转化为对偶问题(’Equivalent’ SVM),其中的数学推导非常复杂,本文不做详细数学论证,但是会从概念和原理上进行简单的推导。
还记得我们在《机器学习基石》课程中介绍的Regularization中,在最小化
的过程中,也添加了限制条件:
。我们的求解方法是引入拉格朗日因子
,将有条件的最小化问题转换为无条件的最小化问题:
,最终得到的w的最优化解为:

所以,在regularization问题中,
是已知常量,求解过程变得容易。那么,对于dual SVM问题,同样可以引入
,将条件问题转换为非条件问题,只不过
是未知参数,且个数是N,需要对其进行求解。

如何将条件问题转换为非条件问题?上一节课我们介绍的SVM中,目标是:
,条件是:
。首先,我们令拉格朗日因子为
(区别于regularization),构造一个函数:

这个函数右边第一项是SVM的目标,第二项是SVM的条件和拉格朗日因子
的乘积。我们把这个函数称为拉格朗日函数,其中包含三个参数:b,w,
。

下面,我们利用拉格朗日函数,把SVM构造成一个非条件问题:

该最小化问题中包含了最大化问题,怎么解释呢?首先我们规定拉格朗日因子
,根据SVM的限定条件可得:
,如果没有达到最优解,即有不满足
的情况,因为
,那么必然有
。对于这种大于零的情况,其最大值是无解的。如果对于所有的点,均满足
,那么必然有
,则当
时,其有最大值,最大值就是我们SVM的目标:
。因此,这种转化为非条件的SVM构造函数的形式是可行的。
Lagrange Dual SVM
现在,我们已经将SVM问题转化为与拉格朗日因子
有关的最大最小值形式。已知
,那么对于任何固定的
,且
,一定有如下不等式成立:

对上述不等式右边取最大值,不等式同样成立:

上述不等式表明,我们对SVM的min和max做了对调,满足这样的关系,这叫做Lagrange dual problem。不等式右边是SVM问题的下界,我们接下来的目的就是求出这个下界。
已知
是一种弱对偶关系,在二次规划QP问题中,如果满足以下三个条件:
-
函数是凸的(convex primal)
-
函数有解(feasible primal)
-
条件是线性的(linear constraints)
那么,上述不等式关系就变成强对偶关系,
变成=,即一定存在满足条件的解
,使等式左边和右边都成立,SVM的解就转化为右边的形式。
经过推导,SVM对偶问题的解已经转化为无条件形式:

其中,上式括号里面的是对拉格朗日函数
计算最小值。那么根据梯度下降算法思想:最小值位置满足梯度为零。首先,令
对参数b的梯度为零:

也就是说,最优解一定满足
。那么,我们把这个条件代入计算max条件中(与
同为条件),并进行化简:

这样,SVM表达式消去了b,问题化简了一些。然后,再根据最小值思想,令
对参数w的梯度为零:

即得到:

也就是说,最优解一定满足
。那么,同样我们把这个条件代入并进行化简:

这样,SVM表达式消去了w,问题更加简化了。这时候的条件有3个:
-
all
![]()
-
![]()
-
![]()
SVM简化为只有
的最佳化问题,即计算满足上述三个条件下,函数
最小值时对应的
是多少。
总结一下,SVM最佳化形式转化为只与
有关:

其中,满足最佳化的条件称之为Karush-Kuhn-Tucker(KKT):

在下一部分中,我们将利用KKT条件来计算最优化问题中的
,进而得到b和w。
Solving Dual SVM
上面我们已经得到了dual SVM的简化版了,接下来,我们继续对它进行一些优化。首先,将max问题转化为min问题,再做一些条件整理和推导,得到:

显然,这是一个convex的QP问题,且有N个变量
,限制条件有N+1个。则根据上一节课讲的QP解法,找到Q,p,A,c对应的值,用软件工具包进行求解即可。

求解过程很清晰,但是值得注意的是,
,大部分值是非零的,称为dense。当N很大的时候,例如N=30000,那么对应的
的计算量将会很大,存储空间也很大。所以一般情况下,对dual SVM问题的矩阵
,需要使用一些特殊的方法,这部分内容就不再赘述了。

得到
之后,再根据之前的KKT条件,就可以计算出w和b了。首先利用条件
得到w,然后利用条件
,取任一
即
>0的点,得到
,进而求得
。

值得注意的是,计算b值,
>0时,有
成立。
正好表示的是该点在SVM分类线上,即fat boundary。也就是说,满足
>0的点一定落在fat boundary上,这些点就是Support Vector。这是一个非常有趣的特性。
Messages behind Dual SVM
回忆一下,上一节课中,我们把位于分类线边界上的点称为support vector(candidates)。本节课前面介绍了
>0的点一定落在分类线边界上,这些点称之为support vector(注意没有candidates)。也就是说分类线上的点不一定都是支持向量,但是满足
>0的点,一定是支持向量。

SV只由
>0的点决定,根据上一部分推导的w和b的计算公式,我们发现,w和b仅由SV即
>0的点决定,简化了计算量。这跟我们上一节课介绍的分类线只由“胖”边界上的点所决定是一个道理。也就是说,样本点可以分成两类:一类是support vectors,通过support vectors可以求得fattest hyperplane;另一类不是support vectors,对我们求得fattest hyperplane没有影响。

回过头来,我们来比较一下SVM和PLA的w公式:

我们发现,二者在形式上是相似的。
由fattest hyperplane边界上所有的SV决定,
由所有当前分类错误的点决定。
和
都是原始数据点
的线性组合形式,是原始数据的代表。

总结一下,本节课和上节课主要介绍了两种形式的SVM,一种是Primal Hard-Margin SVM,另一种是Dual Hard_Margin SVM。Primal Hard-Margin SVM有
个参数,有N个限制条件。当
很大时,求解困难。而Dual Hard_Margin SVM有N个参数,有N+1个限制条件。当数据量N很大时,也同样会增大计算难度。两种形式都能得到w和b,求得fattest hyperplane。通常情况下,如果N不是很大,一般使用Dual SVM来解决问题。

这节课提出的Dual SVM的目的是为了避免计算过程中对
的依赖,而只与N有关。但是,Dual SVM是否真的消除了对
的依赖呢?其实并没有。因为在计算
的过程中,由z向量引入了
,实际上复杂度已经隐藏在计算过程中了。所以,我们的目标并没有实现。下一节课我们将继续研究探讨如何消除对
的依赖。

总结
本节课主要介绍了SVM的另一种形式:Dual SVM。我们这样做的出发点是为了移除计算过程对
的依赖。Dual SVM的推导过程是通过引入拉格朗日因子
,将SVM转化为新的非条件形式。然后,利用QP,得到最佳解的拉格朗日因子
。再通过KKT条件,计算得到对应的w和b。最终求得fattest hyperplane。下一节课,我们将解决Dual SVM计算过程中对
的依赖问题。
注明:
文章中所有的图片均来自台湾大学林轩田《机器学习技法》课程
3 -- Kernel Support Vector Machine
上节课我们主要介绍了SVM的对偶形式,即dual SVM。Dual SVM也是一个二次规划问题,可以用QP来进行求解。之所以要推导SVM的对偶形式是因为:首先,它展示了SVM的几何意义;然后,从计算上,求解过程“好像”与所在维度
无关,规避了
很大时难以求解的情况。但是,上节课的最后,我们也提到dual SVM的计算过程其实跟
还是有关系的。那么,能不能完全摆脱对
的依赖,从而减少SVM计算量呢?这就是我们本节课所要讲的主要内容。
Kernel Trick
我们上节课推导的dual SVM是如下形式:

其中
是拉格朗日因子,共N个,这是我们要求解的,而条件共有N+1个。我们来看向量
中的
,看似这个计算与
无关,但是
的内积中不得不引入
。也就是说,如果
很大,计算
的复杂度也会很高,同样会影响QP问题的计算效率。可以说,
这一步是计算的瓶颈所在。
其实问题的关键在于
内积求解上。我们知道,z是由x经过特征转换而来:

如果从x空间来看的话,
分为两个步骤:1. 进行特征转换
和
;2. 计算
与
的内积。这种先转换再计算内积的方式,必然会引入
参数,从而在
很大的时候影响计算速度。那么,若把这两个步骤联合起来,是否可以有效地减小计算量,提高计算速度呢?
我们先来看一个简单的例子,对于二阶多项式转换,各种排列组合为:

这里提一下,为了简单起见,我们把
包含进来,同时将二次项
和
也包含进来。转换之后再做内积并进行推导,得到:

其中
是x空间中特征向量的内积。所以,
与
的内积的复杂度由原来的
变成
,只与x空间的维度d有关,而与z空间的维度
无关,这正是我们想要的!
至此,我们发现如果把特征转换和z空间计算内积这两个步骤合并起来,有可能会简化计算。因为我们只是推导了二阶多项式会提高运算速度,这个特例并不具有一般推论性。但是,我们还是看到了希望。
我们把合并特征转换和计算内积这两个步骤的操作叫做Kernel Function,用大写字母K表示。例如刚刚讲的二阶多项式例子,它的kernel function为:


有了kernel function之后,我们来看看它在SVM里面如何使用。在dual SVM中,二次项系数
中有z的内积计算,就可以用kernel function替换:

所以,直接计算出
,再代入上式,就能得到
的值。
值计算之后,就能通过QP得到拉格朗日因子
。然后,下一步就是计算b(取
>0的点,即SV),b的表达式中包含z,可以作如下推导:

这样得到的b就可以用kernel function表示,而与z空间无关。
最终我们要求的矩
可以作如下推导:

至此,dual SVM中我们所有需要求解的参数都已经得到了,而且整个计算过程中都没有在z空间作内积,即与z无关。我们把这个过程称为kernel trick,也就是把特征转换和计算内积两个步骤结合起来,用kernel function来避免计算过程中受
的影响,从而提高运算速度。

那么总结一下,引入kernel funtion后,SVM算法变成:

分析每个步骤的时间复杂度为:

我们把这种引入kernel function的SVM称为kernel SVM,它是基于dual SVM推导而来的。kernel SVM同样只用SV(
>0)就能得到最佳分类面,而且整个计算过程中摆脱了
的影响,大大提高了计算速度。
Polynomial Kernel
我们刚刚通过一个特殊的二次多项式导出了相对应的kernel,其实二次多项式的kernel形式是多种的。例如,相应系数的放缩构成完全平方公式等。下面列举了几种常用的二次多项式kernel形式:

比较一下,第一种
(蓝色标记)和第三种
(绿色标记)从某种角度来说是一样的,因为都是二次转换,对应到同一个z空间。但是,它们系数不同,内积就会有差异,那么就代表有不同的距离,最终可能会得到不同的SVM margin。所以,系数不同,可能会得到不同的SVM分界线。通常情况下,第三种
(绿色标记)简单一些,更加常用。

不同的转换,对应到不同的几何距离,得到不同的距离,这是什么意思呢?举个例子,对于我们之前介绍的一般的二次多项式kernel,它的SVM margin和对应的SV如下图(中)所示。对于上面介绍的完全平方公式形式,自由度
,它的SVM margin和对应的SV如下图(左)所示。比较发现,这种SVM margin比较简单一些。对于自由度
,它的SVM margin和对应的SV如下图(右)所示。与前两种比较,margin和SV都有所不同。

通过改变不同的系数,得到不同的SVM margin和SV,如何选择正确的kernel,非常重要。
归纳一下,引入
和
,对于Q次多项式一般的kernel形式可表示为:

所以,使用高阶的多项式kernel有两个优点:
-
得到最大SVM margin,SV数量不会太多,分类面不会太复杂,防止过拟合,减少复杂度
-
计算过程避免了对
的依赖,大大简化了计算量。

顺便提一下,当多项式阶数Q=1时,那么对应的kernel就是线性的,即本系列课程第一节课所介绍的内容。对于linear kernel,计算方法是简单的,而且也是我们解决SVM问题的首选。还记得机器学习基石课程中介绍的奥卡姆剃刀定律(Occam’s Razor)吗?
Gaussian Kernel
刚刚我们介绍的Q阶多项式kernel的阶数是有限的,即特征转换的
是有限的。但是,如果是无限多维的转换
,是否还能通过kernel的思想,来简化SVM的计算呢?答案是肯定的。
先举个例子,简单起见,假设原空间是一维的,只有一个特征x,我们构造一个kernel function为高斯函数:

构造的过程正好与二次多项式kernel的相反,利用反推法,先将上式分解并做泰勒展开:

将构造的K(x,x’)推导展开为两个
和
的乘积,其中:

通过反推,我们得到了
,
是无限多维的,它就可以当成特征转换的函数,且
是无限的。这种
得到的核函数即为Gaussian kernel。
更一般地,对于原空间不止一维的情况(d>1),引入缩放因子
,它对应的Gaussian kernel表达式为:

那么引入了高斯核函数,将有限维度的特征转换拓展到无限的特征转换中。根据本节课上一小节的内容,由K,计算得到
和b,进而得到矩
。将其中的核函数K用高斯核函数代替,得到:

通过上式可以看出,
有n个高斯函数线性组合而成,其中n是SV的个数。而且,每个高斯函数的中心都是对应的SV。通常我们也把高斯核函数称为径向基函数(Radial Basis Function, RBF)。

总结一下,kernel SVM可以获得large-margin的hyperplanes,并且可以通过高阶的特征转换使
尽可能地小。kernel的引入大大简化了dual SVM的计算量。而且,Gaussian kernel能将特征转换扩展到无限维,并使用有限个SV数量的高斯函数构造出矩
。

值得注意的是,缩放因子
取值不同,会得到不同的高斯核函数,hyperplanes不同,分类效果也有很大的差异。举个例子,
分别取1, 10, 100时对应的分类效果如下:

从图中可以看出,当
比较小的时候,分类线比较光滑,当
越来越大的时候,分类线变得越来越复杂和扭曲,直到最后,分类线变成一个个独立的小区域,像小岛一样将每个样本单独包起来了。为什么会出现这种区别呢?这是因为
越大,其对应的高斯核函数越尖瘦,那么有限个高斯核函数的线性组合就比较离散,分类效果并不好。所以,SVM也会出现过拟合现象,
的正确选择尤为重要,不能太大。
Comparison of Kernels
目前为止,我们已经介绍了几种kernel,下面来对几种kernel进行比较。
首先,Linear Kernel是最简单最基本的核,平面上对应一条直线,三维空间里对应一个平面。Linear Kernel可以使用上一节课介绍的Dual SVM中的QP直接计算得到。

Linear Kernel的优点是计算简单、快速,可以直接使用QP快速得到参数值,而且从视觉上分类效果非常直观,便于理解;缺点是如果数据不是线性可分的情况,Linear Kernel就不能使用了。

然后,Polynomial Kernel的hyperplanes是由多项式曲线构成。

Polynomial Kernel的优点是阶数Q可以灵活设置,相比linear kernel限制更少,更贴近实际样本分布;缺点是当Q很大时,K的数值范围波动很大,而且参数个数较多,难以选择合适的值。

对于Gaussian Kernel,表示为高斯函数形式。

Gaussian Kernel的优点是边界更加复杂多样,能最准确地区分数据样本,数值计算K值波动较小,而且只有一个参数,容易选择;缺点是由于特征转换到无限维度中,w没有求解出来,计算速度要低于linear kernel,而且可能会发生过拟合。

除了这三种kernel之外,我们还可以使用其它形式的kernel。首先,我们考虑kernel是什么?实际上kernel代表的是两笔资料x和x’,特征变换后的相似性即内积。但是不能说任何计算相似性的函数都可以是kernel。有效的kernel还需满足几个条件:
-
K是对称的
-
K是半正定的
这两个条件不仅是必要条件,同时也是充分条件。所以,只要我们构造的K同时满足这两个条件,那它就是一个有效的kernel。这被称为Mercer 定理。事实上,构造一个有效的kernel是比较困难的。

总结
本节课主要介绍了Kernel Support Vector Machine。首先,我们将特征转换和计算内积的操作合并到一起,消除了
的影响,提高了计算速度。然后,分别推导了Polynomial Kernel和Gaussian Kernel,并列举了各自的优缺点并做了比较。对于不同的问题,应该选择合适的核函数进行求解,以达到最佳的分类效果。
注明:
文章中所有的图片均来自台湾大学林轩田《机器学习技法》课程
4 -- Soft-Margin Support Vector Machine
上节课我们主要介绍了Kernel SVM。先将特征转换和计算内积这两个步骤合并起来,简化计算、提高计算速度,再用Dual SVM的求解方法来解决。Kernel SVM不仅能解决简单的线性分类问题,也可以求解非常复杂甚至是无限多维的分类问题,关键在于核函数的选择,例如线性核函数、多项式核函数和高斯核函数等等。但是,我们之前讲的这些方法都是Hard-Margin SVM,即必须将所有的样本都分类正确才行。这往往需要更多更复杂的特征转换,甚至造成过拟合。本节课将介绍一种Soft-Margin SVM,目的是让分类错误的点越少越好,而不是必须将所有点分类正确,也就是允许有noise存在。这种做法很大程度上不会使模型过于复杂,不会造成过拟合,而且分类效果是令人满意的。
Motivation and Primal Problem
上节课我们说明了一点,就是SVM同样可能会造成overfit。原因有两个,一个是由于我们的SVM模型(即kernel)过于复杂,转换的维度太多,过于powerful了;另外一个是由于我们坚持要将所有的样本都分类正确,即不允许错误存在,造成模型过于复杂。如下图所示,左边的图
是线性的,虽然有几个点分类错误,但是大部分都能完全分开。右边的图
是四次多项式,所有点都分类正确了,但是模型比较复杂,可能造成过拟合。直观上来说,左边的图是更合理的模型。

如何避免过拟合?方法是允许有分类错误的点,即把某些点当作是noise,放弃这些noise点,但是尽量让这些noise个数越少越好。回顾一下我们在机器学习基石笔记中介绍的pocket算法,pocket的思想不是将所有点完全分开,而是找到一条分类线能让分类错误的点最少。而Hard-Margin SVM的目标是将所有点都完全分开,不允许有错误点存在。为了防止过拟合,我们可以借鉴pocket的思想,即允许有犯错误的点,目标是让这些点越少越好。

为了引入允许犯错误的点,我们将Hard-Margin SVM的目标和条件做一些结合和修正,转换为如下形式:

修正后的条件中,对于分类正确的点,仍需满足
,而对于noise点,满足
,即没有限制。修正后的目标除了
项,还添加了
,即noise点的个数。参数C的引入是为了权衡目标第一项和第二项的关系,即权衡large margin和noise tolerance的关系。
我们再对上述的条件做修正,将两个条件合并,得到:

这个式子存在两个不足的地方。首先,最小化目标中第二项是非线性的,不满足QP的条件,所以无法使用dual或者kernel SVM来计算。然后,对于犯错误的点,有的离边界很近,即error小,而有的离边界很远,error很大,上式的条件和目标没有区分small error和large error。这种分类效果是不完美的。

为了改正这些不足,我们继续做如下修正:

修正后的表达式中,我们引入了新的参数
来表示每个点犯错误的程度值,
。通过使用error值的大小代替是否有error,让问题变得易于求解,满足QP形式要求。这种方法类似于我们在机器学习基石笔记中介绍的0/1 error和squared error。这种soft-margin SVM引入新的参数
。
至此,最终的Soft-Margin SVM的目标为:

条件是:


其中,
表示每个点犯错误的程度,
,表示没有错误,
越大,表示错误越大,即点距离边界(负的)越大。参数C表示尽可能选择宽边界和尽可能不要犯错两者之间的权衡,因为边界宽了,往往犯错误的点会增加。large C表示希望得到更少的分类错误,即不惜选择窄边界也要尽可能把更多点正确分类;small C表示希望得到更宽的边界,即不惜增加错误点个数也要选择更宽的分类边界。
与之对应的QP问题中,由于新的参数
的引入,总共参数个数为
,限制条件添加了
,则总条件个数为2N。

Dual Problem
接下来,我们将推导Soft-Margin SVM的对偶dual形式,从而让QP计算更加简单,并便于引入kernel算法。首先,我们把Soft-Margin SVM的原始形式写出来:

然后,跟我们在第二节课中介绍的Hard-Margin SVM做法一样,构造一个拉格朗日函数。因为引入了
,原始问题有两类条件,所以包含了两个拉格朗日因子
和
。拉格朗日函数可表示为如下形式:

接下来,我们跟第二节课中的做法一样,利用Lagrange dual problem,将Soft-Margin SVM问题转换为如下形式:

根据之前介绍的KKT条件,我们对上式进行简化。上式括号里面的是对拉格朗日函数
计算最小值。那么根据梯度下降算法思想:最小值位置满足梯度为零。
我们先对
做偏微分:

根据上式,得到
,因为有
,所以限制
。将
代入到dual形式中并化简,我们发现
和
都被消去了:

这个形式跟Hard-Margin SVM中的dual形式是基本一致的,只是条件不同。那么,我们分别令拉个朗日函数L对b和w的偏导数为零,分别得到:


经过化简和推导,最终标准的Soft-Margin SVM的Dual形式如下图所示:

Soft-Margin SVM Dual与Hard-Margin SVM Dual基本一致,只有一些条件不同。Hard-Margin SVM Dual中
,而Soft-Margin SVM Dual中
,且新的拉格朗日因子
。在QP问题中,Soft-Margin SVM Dual的参数
同样是N个,但是,条件由Hard-Margin SVM Dual中的N+1个变成2N+1个,这是因为多了N个
的上界条件。
对于Soft-Margin SVM Dual这部分推导不太清楚的同学,可以看下第二节课的笔记:2 – Dual Support Vector Machine
Messages behind Soft-Margin SVM
推导完Soft-Margin SVM Dual的简化形式后,就可以利用QP,找到Q,p,A,c对应的值,用软件工具包得到
的值。或者利用核函数的方式,同样可以简化计算,优化分类效果。Soft-Margin SVM Dual计算
的方法过程与Hard-Margin SVM Dual的过程是相同的。

但是如何根据
的值计算b呢?在Hard-Margin SVM Dual中,有complementary slackness条件:
,找到SV,即
的点,计算得到
。
那么,在Soft-Margin SVM Dual中,相应的complementary slackness条件有两个(因为两个拉格朗日因子
和
):


找到SV,即
的点,由于参数
的存在,还不能完全计算出b的值。根据第二个complementary slackness条件,如果令
,即
,则一定有
,代入到第一个complementary slackness条件,即可计算得到
。我们把
的点称为free SV。引入核函数后,b的表达式为:

上面求解b提到的一个假设是
,这个假设是否一定满足呢?如果没有free SV,所有
大于零的点都满足
怎么办?一般情况下,至少存在一组SV使
的概率是很大的。如果出现没有free SV的情况,那么b通常会由许多不等式条件限制取值范围,值是不确定的,只要能找到其中满足KKT条件的任意一个b值就可以了。这部分细节比较复杂,不再赘述。

接下来,我们看看C取不同的值对margin的影响。例如,对于Soft-Margin Gaussian SVM,C分别取1,10,100时,相应的margin如下图所示:

从上图可以看出,C=1时,margin比较粗,但是分类错误的点也比较多,当C越来越大的时候,margin越来越细,分类错误的点也在减少。正如前面介绍的,C值反映了margin和分类正确的一个权衡。C越小,越倾向于得到粗的margin,宁可增加分类错误的点;C越大,越倾向于得到高的分类正确率,宁可margin很细。我们发现,当C值很大的时候,虽然分类正确率提高,但很可能把noise也进行了处理,从而可能造成过拟合。也就是说Soft-Margin Gaussian SVM同样可能会出现过拟合现象,所以参数
的选择非常重要。
我们再来看看
取不同值是对应的物理意义。已知
满足两个complementary slackness条件:


若
,得
。
表示该点没有犯错,
表示该点不是SV。所以对应的点在margin之外(或者在margin上),且均分类正确。
若
,得
,且
。
表示该点没有犯错,
表示该点在margin上。这些点即free SV,确定了b的值。
若
,不能确定
是否为零,且得到
,这个式表示该点偏离margin的程度,
越大,偏离margin的程度越大。只有当
时,该点落在margin上。所以这种情况对应的点在margin之内负方向(或者在margin上),有分类正确也有分类错误的。这些点称为bounded SV。
所以,在Soft-Margin SVM Dual中,根据
的取值,就可以推断数据点在空间的分布情况。

Model Selection
在Soft-Margin SVM Dual中,kernel的选择、C等参数的选择都非常重要,直接影响分类效果。例如,对于Gaussian SVM,不同的参数
,会得到不同的margin,如下图所示。

其中横坐标是C逐渐增大的情况,纵坐标是
逐渐增大的情况。不同的
组合,margin的差别很大。那么如何选择最好的
等参数呢?最简单最好用的工具就是validation。
validation我们在机器学习基石课程中已经介绍过,只需要将由不同
等参数得到的模型在验证集上进行cross validation,选取
最小的对应的模型就可以了。例如上图中各种
组合得到的
如下图所示:

因为左下角的
最小,所以就选择该
对应的模型。通常来说,
并不是
的连续函数,很难使用最优化选择(例如梯度下降)。一般做法是选取不同的离散的
值进行组合,得到最小的
,其对应的模型即为最佳模型。这种算法就是我们之前在机器学习基石中介绍过的V-Fold cross validation,在SVM中使用非常广泛。
V-Fold cross validation的一种极限就是Leave-One-Out CV,也就是验证集只有一个样本。对于SVM问题,它的验证集Error满足:

也就是说留一法验证集Error大小不超过支持向量SV占所有样本的比例。下面做简单的证明。令样本总数为N,对这N个点进行SVM分类后得到margin,假设第N个点
的
,不是SV,即远离margin(正距离)。这时候,如果我们只使用剩下的N-1个点来进行SVM分类,那么第N个点
必然是分类正确的点,所得的SVM margin跟使用N个点的到的是完全一致的。这是因为我们假设第N个点是non-SV,对SV没有贡献,不影响margin的位置和形状。所以前N-1个点和N个点得到的margin是一样的。
那么,对于non-SV的点,它的
,即对第N个点,它的Error必然为零:

另一方面,假设第N个点
,即对于SV的点,它的Error可能是0,也可能是1,必然有:

综上所述,即证明了
。这符合我们之前得到的结论,即只有SV影响margin,non-SV对margin没有任何影响,可以舍弃。
SV的数量在SVM模型选择中也是很重要的。一般来说,SV越多,表示模型可能越复杂,越有可能会造成过拟合。所以,通常选择SV数量较少的模型,然后在剩下的模型中使用cross-validation,比较选择最佳模型。
总结
本节课主要介绍了Soft-Margin SVM。我们的出发点是与Hard-Margin SVM不同,不一定要将所有的样本点都完全分开,允许有分类错误的点,而使margin比较宽。然后,我们增加了
作为分类错误的惩罚项,根据之前介绍的Dual SVM,推导出了Soft-Margin SVM的QP形式。得到的
除了要满足大于零,还有一个上界C。接着介绍了通过
值的大小,可以将数据点分为三种:non-SVs,free SVs,bounded SVs,这种更清晰的物理解释便于数据分析。最后介绍了如何选择合适的SVM模型,通常的办法是cross-validation和利用SV的数量进行筛选。
注明:
文章中所有的图片均来自台湾大学林轩田《机器学习技法》课程
5 -- Kernel Logistic Regression
上节课我们主要介绍了Soft-Margin SVM,即如果允许有分类错误的点存在,那么在原来的Hard-Margin SVM中添加新的惩罚因子C,修正原来的公式,得到新的
值。最终的到的
有个上界,上界就是C。Soft-Margin SVM权衡了large-margin和error point之前的关系,目的是在尽可能犯更少错误的前提下,得到最大分类边界。本节课将把Soft-Margin SVM和我们之前介绍的Logistic Regression联系起来,研究如何使用kernel技巧来解决更多的问题。
Soft-Margin SVM as Regularized Model
先复习一下我们已经介绍过的内容,我们最早开始讲了Hard-Margin Primal的数学表达式,然后推导了Hard-Margin Dual形式。后来,为了允许有错误点的存在(或者noise),也为了避免模型过于复杂化,造成过拟合,我们建立了Soft-Margin Primal的数学表达式,并引入了新的参数C作为权衡因子,然后也推导了其Soft-Margin Dual形式。因为Soft-Margin Dual SVM更加灵活、便于调整参数,所以在实际应用中,使用Soft-Margin Dual SVM来解决分类问题的情况更多一些。

Soft-Margin Dual SVM有两个应用非常广泛的工具包,分别是Libsvm和Liblinear。 Libsvm和Liblinear都是国立台湾大学的Chih-Jen Lin博士开发的,Chih-Jen Lin的个人网站为:Welcome to Chih-Jen Lin’s Home Page
下面我们再来回顾一下Soft-Margin SVM的主要内容。我们的出发点是用
来表示margin violation,即犯错值的大小,没有犯错对应的
。然后将有条件问题转化为对偶dual形式,使用QP来得到最佳化的解。
从另外一个角度来看,
描述的是点
距离
的边界有多远。第一种情况是violating margin,即不满足
。那么
可表示为:
。第二种情况是not violating margin,即点
在边界之外,满足
的条件,此时
。我们可以将两种情况整合到一个表达式中,对任意点:

上式表明,如果有voilating margin,则
,
;如果not violating margin,则
,
。整合之后,我们可以把Soft-Margin SVM的最小化问题写成如下形式:

经过这种转换之后,表征犯错误值大小的变量
就被消去了,转而由一个max操作代替。

为什么要将把Soft-Margin SVM转换为这种unconstrained form呢?我们再来看一下转换后的形式,其中包含两项,第一项是w的内积,第二项关于y和w,b,z的表达式,似乎有点像一种错误估计
,则类似这样的形式:

看到这样的形式我们应该很熟悉,因为之前介绍的L2 Regularization中最优化问题的表达式跟这个是类似的:


这里提一下,既然unconstrained form SVM与L2 Regularization的形式是一致的,而且L2 Regularization的解法我们之前也介绍过,那么为什么不直接利用这种方法来解决unconstrained form SVM的问题呢?有两个原因。一个是这种无条件的最优化问题无法通过QP解决,即对偶推导和kernel都无法使用;另一个是这种形式中包含的max()项可能造成函数并不是处处可导,这种情况难以用微分方法解决。
我们在第一节课中就介绍过Hard-Margin SVM与Regularization Model是有关系的。Regularization的目标是最小化
,条件是
,而Hard-Margin SVM的目标是最小化
,条件是
,即它们的最小化目标和限制条件是相互对调的。对于L2 Regularization来说,条件和最优化问题结合起来,整体形式写成:

而对于Soft-Margin SVM来说,条件和最优化问题结合起来,整体形式写成:


通过对比,我们发现L2 Regularization和Soft-Margin SVM的形式是相同的,两个式子分别包含了参数
和C。Soft-Margin SVM中的large margin对应着L2 Regularization中的short w,也就是都让hyperplanes更简单一些。我们使用特别的
来代表可以容忍犯错误的程度,即soft margin。L2 Regularization中的
和Soft-Margin SVM中的C也是相互对应的,
越大,w会越小,Regularization的程度就越大;C越小,
会越大,相应的margin就越大。所以说增大C,或者减小
,效果是一致的,Large-Margin等同于Regularization,都起到了防止过拟合的作用。

建立了Regularization和Soft-Margin SVM的关系,接下来我们将尝试看看是否能把SVM作为一个regularized的模型进行扩展,来解决其它一些问题。
SVM versus Logistic Regression
上一小节,我们已经把Soft-Margin SVM转换成无条件的形式:

上式中第二项的
倍设置为
。下面我们来看看
与之前再二元分类中介绍过的
有什么关系。
对于
,它的linear score
,当
时,
;当
时,
,呈阶梯状,如下图所示。而对于
,当
时,
;当
时,
,呈折线状,如下图所示,通常把
称为hinge error measure。比较两条error曲线,我们发现
始终在
的上面,则
可作为
的上界。所以,可以使用
来代替
,解决二元线性分类问题,而且
是一个凸函数,使它在最佳化问题中有更好的性质。

紧接着,我们再来看一下logistic regression中的error function。逻辑回归中,
,当ys=0时,
。它的err曲线如下所示。

很明显,
也是
的上界,而
与
也是比较相近的。因为当ys趋向正无穷大的时候,
和
都趋向于零;当ys趋向负无穷大的时候,
和
都趋向于正无穷大。正因为二者的这种相似性,我们可以把SVM看成是L2-regularized logistic regression。
总结一下,我们已经介绍过几种Binary Classification的Linear Models,包括PLA,Logistic Regression和Soft-Margin SVM。PLA是相对简单的一个模型,对应的是
,通过不断修正错误的点来获得最佳分类线。它的优点是简单快速,缺点是只对线性可分的情况有用,线性不可分的情况需要用到pocket算法。Logistic Regression对应的是
,通常使用GD/SGD算法求解最佳分类线。它的优点是凸函数
便于最优化求解,而且有regularization作为避免过拟合的保证;缺点是
作为
的上界,当ys很小(负值)时,上界变得更宽松,不利于最优化求解。Soft-Margin SVM对应的是
,通常使用QP求解最佳分类线。它的优点和Logistic Regression一样,凸优化问题计算简单而且分类线比较“粗壮”一些;缺点也和Logistic Regression一样,当ys很小(负值)时,上界变得过于宽松。其实,Logistic Regression和Soft-Margin SVM都是在最佳化
的上界而已。

至此,可以看出,求解regularized logistic regression的问题等同于求解soft-margin SVM的问题。反过来,如果我们求解了一个soft-margin SVM的问题,那这个解能否直接为regularized logistic regression所用?来预测结果是正类的几率是多少,就像regularized logistic regression做的一样。我们下一小节将来解答这个问题。
SVM for Soft Binary Classification
接下来,我们探讨如何将SVM的结果应用在Soft Binary Classification中,得到是正类的概率值。
第一种简单的方法是先得到SVM的解
,然后直接代入到logistic regression中,得到
。这种方法直接使用了SVM和logistic regression的相似性,一般情况下表现还不错。但是,这种形式过于简单,与logistic regression的关联不大,没有使用到logistic regression中好的性质和方法。
第二种简单的方法是同样先得到SVM的解
,然后把
作为logistic regression的初始值,再进行迭代训练修正,速度比较快,最后,将得到的b和w代入到g(x)中。这种做法有点显得多此一举,因为并没有比直接使用logistic regression快捷多少。

这两种方法都没有融合SVM和logistic regression各自的优势,下面构造一个模型,融合了二者的优势。构造的模型g(x)表达式为:

与上述第一种简单方法不同,我们额外增加了放缩因子A和平移因子B。首先利用SVM的解
来构造这个模型,放缩因子A和平移因子B是待定系数。然后再用通用的logistic regression优化算法,通过迭代优化,得到最终的A和B。一般来说,如果
较为合理的话,满足A>0且
。

那么,新的logistic regression表达式为:

这个表达式看上去很复杂,其实其中的
已经在SVM中解出来了,实际上的未知参数只有A和B两个。归纳一下,这种Probabilistic SVM的做法分为三个步骤:

这种soft binary classifier方法得到的结果跟直接使用SVM classifier得到的结果可能不一样,这是因为我们引入了系数A和B。一般来说,soft binary classifier效果更好。至于logistic regression的解法,可以选择GD、SGD等等。
Kernel Logistic Regression
上一小节我们介绍的是通过kernel SVM在z空间中求得logistic regression的近似解。如果我们希望直接在z空间中直接求解logistic regression,通过引入kernel,来解决最优化问题,又该怎么做呢?SVM中使用kernel,转化为QP问题,进行求解,但是logistic regression却不是个QP问题,看似好像没有办法利用kernel来解决。
我们先来看看之前介绍的kernel trick为什么会work,kernel trick就是把z空间的内积转换到x空间中比较容易计算的函数。如果w可以表示为z的线性组合,即
的形式,那么乘积项
,即其中包含了z的内积。也就是w可以表示为z的线性组合是kernel trick可以work的关键。
我们之前介绍过SVM、PLA包扩logistic regression都可以表示成z的线性组合,这也提供了一种可能,就是将kernel应用到这些问题中去,简化z空间的计算难度。

有这样一个理论,对于L2-regularized linear model,如果它的最小化问题形式为如下的话,那么最优解
。

下面给出简单的证明,假如最优解
。其中,
和
分别是平行z空间和垂直z空间的部分。我们需要证明的是
。利用反证法,假如
,考虑
与
的比较。第一步先比较最小化问题的第二项:
,即第二项是相等的。然后第二步比较第一项:
,即
对应的L2-regularized linear model值要比
大,这就说明
并不是最优解,从而证明
必然等于零,即
一定成立,
一定可以写成z的线性组合形式。

经过证明和分析,我们得到了结论是任何L2-regularized linear model都可以使用kernel来解决。
现在,我们来看看如何把kernel应用在L2-regularized logistic regression上。上面我们已经证明了
一定可以写成z的线性组合形式,即
。那么我们就无需一定求出
,而只要求出其中的
就行了。怎么求呢?直接将
代入到L2-regularized logistic regression最小化问题中,得到:


上式中,所有的w项都换成
来表示了,变成了没有条件限制的最优化问题。我们把这种问题称为kernel logistic regression,即引入kernel,将求w的问题转换为求
的问题。
从另外一个角度来看Kernel Logistic Regression(KLR):

上式中log项里的
可以看成是变量
和
的内积。上式第一项中的
可以看成是关于
的正则化项
。所以,KLR是
的线性组合,其中包含了kernel内积项和kernel regularizer。这与SVM是相似的形式。
但值得一提的是,KLR中的
与SVM中的
是有区别的。SVM中的
大部分为零,SV的个数通常是比较少的;而KLR中的
通常都是非零值。
总结
本节课主要介绍了Kernel Logistic Regression。首先把Soft-Margin SVM解释成Regularized Model,建立二者之间的联系,其实Soft-Margin SVM就是一个L2-regularization,对应着hinge error messure。然后利用它们之间的相似性,讨论了如何利用SVM的解来得到Soft Binary Classification。方法是先得到SVM的解,再在logistic regression中引入参数A和B,迭代训练,得到最佳解。最后介绍了Kernel Logistic Regression,证明L2-regularized logistic regression中,最佳解
一定可以写成z的线性组合形式,从而可以将kernel引入logistic regression中,使用kernel思想在z空间直接求解L2-regularized logistic regression问题。
注明:
文章中所有的图片均来自台湾大学林轩田《机器学习技法》课程
6 -- Support Vector Regression
上节课我们主要介绍了Kernel Logistic Regression,讨论如何把SVM的技巧应用在soft-binary classification上。方法是使用2-level learning,先利用SVM得到参数b和w,然后再用通用的logistic regression优化算法,通过迭代优化,对参数b和w进行微调,得到最佳解。然后,也介绍了可以通过Representer Theorem,在z空间中,引入SVM的kernel技巧,直接对logistic regression进行求解。本节课将延伸上节课的内容,讨论如何将SVM的kernel技巧应用到regression问题上。
Kernel Ridge Regression
首先回顾一下上节课介绍的Representer Theorem,对于任何包含正则项的L2-regularized linear model,它的最佳化解w都可以写成是z的线性组合形式,因此,也就能引入kernel技巧,将模型kernelized化。

那么如何将regression模型变成kernel的形式呢?我们之前介绍的linear/ridge regression最常用的错误估计是squared error,即
。这种形式对应的解是analytic solution,即可以使用线性最小二乘法,通过向量运算,直接得到最优化解。那么接下来我们就要研究如何将kernel引入到ridge regression中去,得到与之对应的analytic solution。
我们先把Kernel Ridge Regression问题写下来:

其中,最佳解
必然是z的线性组合。那么我们就把
代入到ridge regression中,将z的内积用kernel替换,把求
的问题转化成求
的问题,得到:

ridge regression可以写成矩阵的形式,其中第一项可以看成是
的正则项,而第二项可以看成是
的error function。这样,我们的目的就是求解该式最小化对应的
值,这样就解决了kernel ridge regression问题。
求解
的问题可以写成如下形式:

是关于
的二次多项式,要对
求最小化解,这种凸二次最优化问题,只需要先计算其梯度,再令梯度为零即可。
已经在上式中写出来了,令其等于零,即可得到一种可能的
的解析解为:

这里需要关心的问题是
的逆矩阵是否存在?答案是肯定的。因为我们之前介绍过,核函数K满足Mercer’s condition,它是半正定的,而且
,所以
一定是可逆的。从计算的时间复杂上来说,由于
是NxN大小的,所以时间复杂度是
。还有一点,
是由两项乘积构成的,另一项是K,会不会出现K=0的情况呢?其实,由于核函数K表征的是z空间的内积,一般而言,除非两个向量互相垂直,内积才为零,否则,一般情况下K不等于零。这个原因也决定了
是dense matrix,即
的解大部分都是非零值。这个性质,我们之后还会说明。
所以说,我们可以通过kernel来解决non-linear regression的问题。下面比较一下linear ridge regression和kernel ridge regression的关系。

如上图所示,左边是linear ridge regression,是一条直线;右边是kernel ridge regression,是一条曲线。大致比较一下,右边的曲线拟合的效果更好一些。这两种regression有什么样的优点和缺点呢?对于linear ridge regression来说,它是线性模型,只能拟合直线;其次,它的训练复杂度是
,预测的复杂度是
,如果N比d大很多时,这种模型就更有效率。而对于kernel ridge regression来说,它转换到z空间,使用kernel技巧,得到的是非线性模型,所以更加灵活;其次,它的训练复杂度是
,预测的复杂度是
,均只与N有关。当N很大的时候,计算量就很大,所以,kernel ridge regression适合N不是很大的场合。比较下来,可以说linear和kernel实际上是效率(efficiency)和灵活(flexibility)之间的权衡。

Support Vector Regression Primal
我们在机器学习基石课程中介绍过linear regression可以用来做classification,那么上一部分介绍的kernel ridge regression同样可以来做classification。我们把kernel ridge regression应用在classification上取个新的名字,叫做least-squares SVM(LSSVM)。
先来看一下对于某个问题,soft-margin Gaussian SVM和Gaussian LSSVM结果有哪些不一样的地方。

如上图所示,如果只看分类边界的话,soft-margin Gaussian SVM和Gaussian LSSVM差别不是很大,即的到的分类线是几乎相同的。但是如果看Support Vector的话(图中方框标注的点),左边soft-margin Gaussian SVM的SV不多,而右边Gaussian LSSVM中基本上每个点都是SV。这是因为soft-margin Gaussian SVM中的
大部分是等于零,
的点只占少数,所以SV少。而对于LSSVM,我们上一部分介绍了
的解大部分都是非零值,所以对应的每个点基本上都是SV。SV太多会带来一个问题,就是做预测的矩
,如果
非零值较多,那么g的计算量也比较大,降低计算速度。基于这个原因,soft-margin Gaussian SVM更有优势。

那么,针对LSSVM中dense
的缺点,我们能不能使用一些方法来的得到sparse
,使得SV不会太多,从而得到和soft-margin SVM同样的分类效果呢?下面我们将尝试解决这个问题。
方法是引入一个叫做Tube Regression的做法,即在分类线上下分别划定一个区域(中立区),如果数据点分布在这个区域内,则不算分类错误,只有误分在中立区域之外的地方才算error。

假定中立区的宽度为
,
,那么error measure就可以写成:
,对应上图中红色标注的距离。

通常把这个error叫做
-insensitive error,这种max的形式跟我们上节课中介绍的hinge error measure形式其实是类似的。所以,我们接下来要做的事情就是将L2-regularized tube regression做类似于soft-margin SVM的推导,从而得到sparse
。
首先,我们把tube regression中的error与squared error做个比较:

然后,将err(y,s)与s的关系曲线分别画出来:

上图中,红色的线表示squared error,蓝色的线表示tube error。我们发现,当|s-y|比较小即s比较接近y的时候,squared error与tube error是差不多大小的。而在|s-y|比较大的区域,squared error的增长幅度要比tube error大很多。error的增长幅度越大,表示越容易受到noise的影响,不利于最优化问题的求解。所以,从这个方面来看,tube regression的这种error function要更好一些。
现在,我们把L2-Regularized Tube Regression写下来:

这个最优化问题,由于其中包含max项,并不是处处可微分的,所以不适合用GD/SGD来求解。而且,虽然满足representer theorem,有可能通过引入kernel来求解,但是也并不能保证得到sparsity
。从另一方面考虑,我们可以把这个问题转换为带条件的QP问题,仿照dual SVM的推导方法,引入kernel,得到KKT条件,从而保证解
是sparse的。

所以,我们就可以把L2-Regularized Tube Regression写成跟SVM类似的形式:

值得一提的是,系数
和C是反比例相关的,
越大对应C越小,
越小对应C越大。而且该式也把
即b单独拿了出来,这跟我们之前推导SVM的解的方法是一致的。
现在我们已经有了Standard Support Vector Regression的初始形式,这还是不是一个标准的QP问题。我们继续对该表达式做一些转化和推导:

如上图右边所示,即为标准的QP问题,其中
和
分别表示upper tube violations和lower tube violations。这种形式叫做Support Vector Regression(SVR) primal。

SVR的标准QP形式包含几个重要的参数:C和
。C表示的是regularization和tube violation之间的权衡。large C倾向于tube violation,small C则倾向于regularization。
表征了tube的区域宽度,即对错误点的容忍程度。
越大,则表示对错误的容忍度越大。
是可设置的常数,是SVR问题中独有的,SVM中没有这个参数。另外,SVR的QP形式共有
个参数,2N+2N个条件。

Support Vector Regression Dual
现在我们已经得到了SVR的primal形式,接下来将推导SVR的Dual形式。首先,与SVM对偶形式一样,先令拉格朗日因子
和
,分别是与
和
不等式相对应。这里忽略了与
和
对应的拉格朗日因子。

然后,与SVM一样做同样的推导和化简,拉格朗日函数对相关参数偏微分为零,得到相应的KKT条件:

接下来,通过观察SVM primal与SVM dual的参数对应关系,直接从SVR primal推导出SVR dual的形式。(具体数学推导,此处忽略!)

最后,我们就要来讨论一下SVR的解是否真的是sparse的。前面已经推导了SVR dual形式下推导的解w为:

相应的complementary slackness为:

对于分布在tube中心区域内的点,满足
,此时忽略错误,
和
都等于零。则complementary slackness两个等式的第二项均不为零,必然得到
和
,即
。
所以,对于分布在tube内的点,得到的解
,是sparse的。而分布在tube之外的点,
。至此,我们就得到了SVR的sparse解。
Summary of Kernel Models
这部分将对我们介绍过的所有的kernel模型做个概括和总结。我们总共介绍过三种线性模型,分别是PLA/pocket,regularized logistic regression和linear ridge regression。这三种模型都可以使用国立台湾大学的Chih-Jen Lin博士开发的Liblinear库函数来解决。
另外,我们介绍了linear soft-margin SVM,其中的error function是
,可以通过标准的QP问题来求解。linear soft-margin SVM和PLA/pocket一样都是解决同样的问题。然后,还介绍了linear SVR问题,它与linear ridge regression一样都是解决同样的问题,从SVM的角度,使用
,转换为QP问题进行求解,这也是我们本节课的主要内容。

上图中相应的模型也可以转化为dual形式,引入kernel,整体的框图如下:

其中SVM,SVR和probabilistic SVM都可以使用国立台湾大学的Chih-Jen Lin博士开发的LLibsvm库函数来解决。通常来说,这些模型中SVR和probabilistic SVM最为常用。
总结
本节课主要介绍了SVR,我们先通过representer theorem理论,将ridge regression转化为kernel的形式,即kernel ridge regression,并推导了SVR的解。但是得到的解是dense的,大部分为非零值。所以,我们定义新的tube regression,使用SVM的推导方法,来最小化regularized tube errors,转化为对偶形式,得到了sparse的解。最后,我们对介绍过的所有kernel模型做个总结,简单概述了各自的特点。在实际应用中,我们要根据不同的问题进行合适的模型选择。
注明:
文章中所有的图片均来自台湾大学林轩田《机器学习技法》课程
7 -- Blending and Bagging
上节课我们主要介绍了Support Vector Regression,将kernel model引入到regression中。首先,通过将ridge regression和representer theorem结合起来,得到kernel ridge regression。但是其解是dense的,即不部分不为零。为了得到sparse解,我们将regularized tube error和Lagrange dual结合起来,利用SVM dual的推导方法,得到support vector regression的sparse解。本系列1-6节课主要介绍Kernel Models及其应用,从本节课开始,讲介绍Aggregation Models,即如何将不同的hypothesis和features结合起来,让模型更好。本节课将介绍其中的两个方法,一个是Blending,一个是Bagging。
Motivation of Aggregation
首先举个例子来说明为什么要使用Aggregation。假如你有T个朋友,每个朋友向你预测推荐明天某支股票会涨还是会跌,对应的建议分别是
,那么你该选择哪个朋友的建议呢?即最终选择对股票预测的
是什么样的?
第一种方法是从T个朋友中选择一个最受信任,对股票预测能力最强的人,直接听从他的建议就好。这是一种普遍的做法,对应的就是validation思想,即选择犯错误最小的模型。第二种方法,如果每个朋友在股票预测方面都是比较厉害的,都有各自的专长,那么就同时考虑T个朋友的建议,将所有结果做个投票,一人一票,最终决定出对该支股票的预测。这种方法对应的是uniformly思想。第三种方法,如果每个朋友水平不一,有的比较厉害,投票比重应该更大一些,有的比较差,投票比重应该更小一些。那么,仍然对T个朋友进行投票,只是每个人的投票权重不同。这种方法对应的是non-uniformly的思想。第四种方法与第三种方法类似,但是权重不是固定的,根据不同的条件,给予不同的权重。比如如果是传统行业的股票,那么给这方面比较厉害的朋友较高的投票权重,如果是服务行业,那么就给这方面比较厉害的朋友较高的投票权重。以上所述的这四种方法都是将不同人不同意见融合起来的方式,接下来我们就要讨论如何将这些做法对应到机器学习中去。Aggregation的思想与这个例子是类似的,即把多个hypothesis结合起来,得到更好的预测效果。

将刚刚举的例子的各种方法用数学化的语言和机器学习符号归纳表示出来,其中G(x)表示最终选择的模型。
第一种方法对应的模型:

第二种方法对应的模型:

第三种方法对应的模型:

第四种方法对应的模型:


注意这里提到的第一种方法是通过验证集来选择最佳模型,不能使用
来代替
。经过Validation,选择最小的
,保证
最小,从而将对应的模型作为最佳的选择。
但是第一种方法只是从众多可能的hypothesis中选择最好的模型,并不能发挥集体的智慧。而Aggregation的思想是博采众长,将可能的hypothesis优势集合起来,将集体智慧融合起来,使预测模型达到更好的效果。
下面先来看一个例子,通过这个例子说明为什么Aggregation能work得更好。

如上图所示,平面上分布着一些待分类的点。如果要求只能用一条水平的线或者垂直的线进行分类,那不论怎么选取直线,都达不到最佳的分类效果。这实际上就是上面介绍的第一种方法:validation。但是,如果可以使用集体智慧,比如一条水平线和两条垂直线组合而成的图中折线形式,就可以将所有的点完全分开,得到了最优化的预测模型。
这个例子表明,通过将不同的hypotheses均匀地结合起来,得到了比单一hypothesis更好的预测模型。这就是aggregation的优势所在,它提高了预测模型的power,起到了特征转换(feature transform)的效果。

我们再从另外一方面来看,同样是平面上分布着一些待分类的点,使用PLA算法,可以得到很多满足条件的分类线,如下图所示:

这无数条PLA选择出来的直线对应的hypothesis都是满足分类要求的。但是我们最想得到的分类直线是中间那条距离所有点都比较远的黑色直线,这与之前SVM目标是一致的。如果我们将所有可能的hypothesis结合起来,以投票的方式进行组合选择,最终会发现投票得到的分类线就是中间和黑色那条。这从哲学的角度来说,就是对各种效果较好的可能性进行组合,得到的结果一般是中庸的、最合适的,即对应图中那条黑色直线。所以,aggregation也起到了正则化(regularization)的效果,让预测模型更具有代表性。

基于以上的两个例子,我们得到了aggregation的两个优势:feature transform和regularization。我们之前在机器学习基石课程中就介绍过,feature transform和regularization是对立的,还把它们分别比作踩油门和踩刹车。如果进行feature transform,那么regularization的效果通常很差,反之亦然。也就是说,单一模型通常只能倾向于feature transform和regularization之一,在两者之间做个权衡。但是aggregation却能将feature transform和regularization各自的优势结合起来,好比把油门和刹车都控制得很好,从而得到不错的预测模型。
Uniform Blending
那对于我们已经选择的性能较好的一些矩
,如何将它们进行整合、合并,来得到最佳的预测模型呢?这个过程称为blending。
最常用的一种方法是uniform blending,应用于classification分类问题,做法是将每一个可能的矩赋予权重1,进行投票,得到的G(x)表示为:

这种方法对应三种情况:第一种情况是每个候选的矩
都完全一样,这跟选其中任意一个
效果相同;第二种情况是每个候选的矩
都有一些差别,这是最常遇到的,大都可以通过投票的形式使多数意见修正少数意见,从而得到很好的模型,如下图所示;第三种情况是多分类问题,选择投票数最多的那一类即可。

如果是regression回归问题,uniform blending的做法很简单,就是将所有的矩
求平均值:

uniform blending for regression对应两种情况:第一种情况是每个候选的矩
都完全一样,这跟选其中任意一个
效果相同;第二种情况是每个候选的矩
都有一些差别,有的
,有的
,此时求平均值的操作可能会消去这种大于和小于的影响,从而得到更好的回归模型。因此,从直觉上来说,求平均值的操作更加稳定,更加准确。

对于uniform blending,一般要求每个候选的矩
都有一些差别。这样,通过不同矩
的组合和集体智慧,都能得到比单一矩
更好的模型。
刚才我们提到了uniform blending for regression中,计算
的平均值可能比单一的
更稳定,更准确。下面进行简单的推导和证明。

推导过程中注意
。经过推导,我们发现
与
之间差了
项,且是大于零的。从而得到
与目标函数f的差值要比G与f的差值大。
刚才是对单一的x进行证明,如果从期望角度,对整个x分布进行上述公式的整理,得到:

从结果上来看,
,从而证明了从平均上来说,计算
的平均值G(t)要比单一的
更接近目标函数f,regression效果更好。
我们已经知道G是数目为T的
的平均值。令包含N个数据的样本D独立同分布于
,每次从新的
中学习得到新的
,在对
求平均得到G,当做无限多次,即T趋向于无穷大的时候:


当T趋于无穷大的时候,
,则有如下等式成立:

上述等式中左边表示演算法误差的期望值;右边第二项表示不同
的平均误差共识,用偏差bias表示;右边第一项表示不同
与共识的差距是多少,反映
之间的偏差,用方差variance表示。也就是说,一个演算法的平均表现可以被拆成两项,一个是所有
的共识,一个是不同
之间的差距是多少,即bias和variance。而uniform blending的操作时求平均的过程,这样就削减弱化了上式第一项variance的值,从而演算法的表现就更好了,能得到更加稳定的表现。
Linear and Any Blending
上一部分讲的是uniform blending,即每个
所占的权重都是1,求平均的思想。下面我们将介绍linear blending,每个
赋予的权重
并不相同,其中
。我们最终得到的预测结果等于所有
的线性组合。

如何确定
的值,方法是利用误差最小化的思想,找出最佳的
,使
取最小值。例如对于linear blending for regression,
可以写成下图左边形式,其中
是带求解参数,
是每个矩得到的预测值,由已知矩得到。这种形式很类似于下图右边的形式,即加上特征转换
的linear regression模型。两个式子中的
对应于
,唯一不同的就是linear blending for regression中
,而linear regression中
没有限制。

这种求解
的方法就像是使用two-level learning,类似于我们之前介绍的probabilistic SVM。这里,我们先计算
,再进行linear regression得到
值。总的来说,linear blending由三个部分组成:LinModel,hypotheses as transform,constraints。其中值得注意的一点就是,计算过程中可以把
当成feature transform,求解过程就跟之前没有什么不同,除了
的条件限制。

我们来看一下linear blending中的constraint
。这个条件是否一定要成立呢?如果
,会带来什么后果呢?其实
并不会影响分类效果,只需要将正类看成负类,负类当成正类即可。例如分类问题,判断该点是正类对应的
,则它就表示该点是负类,且对应的
。如果我们说这个样本是正类的概率是-99%,意思也就是说该样本是负类的概率是99%。
和
的效果是等同的一致的。所以,我们可以把
这个条件舍去,这样linear blending就可以使用常规方法求解。

Linear Blending中使用的
是通过模型选择而得到的,利用validation,从
中得到
。然后将
中每个数据点经过各个矩的计算得到的值,代入到相应的linear blending计算公式中,迭代优化得到对应
值。最终,再利用所有样本数据,得到新的
代替
,则G(t)就是
的线性组合而不是
,系数是
。


除了linear blending之外,还可以使用任意形式的blending。linear blending中,G(t)是g(t)的线性组合;any blending中,G(t)可以是g(t)的任何函数形式(非线性)。这种形式的blending也叫做Stacking。any blending的优点是模型复杂度提高,更容易获得更好的预测模型;缺点是复杂模型也容易带来过拟合的危险。所以,在使用any blending的过程中要时刻注意避免过拟合发生,通过采用regularization的方法,让模型具有更好的泛化能力。
Bagging(Bootstrap Aggregation)
总结一些上面讲的内容,blending的做法就是将已经得到的矩
进行aggregate的操作。具体的aggregation形式包括:uniform,non-uniforn和conditional。

现在考虑一个问题:如何得到不同的
呢?可以选取不同模型H;可以设置不同的参数,例如
、迭代次数n等;可以由算法的随机性得到,例如PLA、随机种子等;可以选择不同的数据样本等。这些方法都可能得到不同的
。

那如何利用已有的一份数据集来构造出不同的
呢?首先,我们回顾一下之前介绍的bias-variance,即一个演算法的平均表现可以被拆成两项,一个是所有
的共识(bias),一个是不同
之间的差距是多少(variance)。其中每个
都是需要新的数据集的。只有一份数据集的情况下,如何构造新的数据集?

其中,
是在矩个数T趋向于无穷大的时候,不同的
计算平均得到的值。这里我们为了得到
,做两个近似条件:
-
有限的T;
-
由已有数据集D构造出
,独立同分布
第一个条件没有问题,第二个近似条件的做法就是bootstrapping。bootstrapping是统计学的一个工具,思想就是从已有数据集D中模拟出其他类似的样本
。

bootstrapping的做法是,假设有N笔资料,先从中选出一个样本,再放回去,再选择一个样本,再放回去,共重复N次。这样我们就得到了一个新的N笔资料,这个新的
中可能包含原D里的重复样本点,也可能没有原D里的某些样本,
与D类似但又不完全相同。值得一提的是,抽取-放回的操作不一定非要是N,次数可以任意设定。例如原始样本有10000个,我们可以抽取-放回3000次,得到包含3000个样本的
也是完全可以的。利用bootstrap进行aggragation的操作就被称为bagging。

下面举个实际中Bagging Pocket算法的例子。如下图所示,先通过bootstrapping得到25个不同样本集,再使用pocket算法得到25个不同的
,每个pocket算法迭代1000次。最后,再利用blending,将所有的
融合起来,得到最终的分类线,如图中黑线所示。可以看出,虽然bootstrapping会得到差别很大的分类线(灰线),但是经过blending后,得到的分类线效果是不错的,则bagging通常能得到最佳的分类模型。

值得注意的是,只有当演算法对数据样本分布比较敏感的情况下,才有比较好的表现。
总结
本节课主要介绍了blending和bagging的方法,它们都属于aggregation,即将不同的
合并起来,利用集体的智慧得到更加优化的G(t)。Blending通常分为三种情况:Uniform Blending,Linear Blending和Any Blending。其中,uniform blending采样最简单的“一人一票”的方法,linear blending和any blending都采用标准的two-level learning方法,类似于特征转换的操作,来得到不同
的线性组合或非线性组合。最后,我们介绍了如何利用bagging(bootstrap aggregation),从已有数据集D中模拟出其他类似的样本
,而得到不同的
,再合并起来,优化预测模型。
注明:
文章中所有的图片均来自台湾大学林轩田《机器学习技法》课程
8 -- Adaptive Boosting
上节课我们主要开始介绍Aggregation Models,目的是将不同的hypothesis得到的
集合起来,利用集体智慧得到更好的预测模型G。首先我们介绍了Blending,blending是将已存在的所有
结合起来,可以是uniformly,linearly,或者non-linearly组合形式。然后,我们讨论了在没有那么多
的情况下,使用bootstrap方式,从已有数据集中得到新的类似的数据集,从而得到不同的
。这种做法称为bagging。本节课将继续从这些概念出发,介绍一种新的演算法。
Motivation of Boosting
我们先来看一个简单的识别苹果的例子,老师展示20张图片,让6岁孩子们通过观察,判断其中哪些图片的内容是苹果。从判断的过程中推导如何解决二元分类问题的方法。
显然这是一个监督式学习,20张图片包括它的标签都是已知的。首先,学生Michael回答说:所有的苹果应该是圆形的。根据Michael的判断,对应到20张图片中去,大部分苹果能被识别出来,但也有错误。其中错误包括有的苹果不是圆形,而且圆形的水果也不一定是苹果。如下图所示:

上图中蓝色区域的图片代表分类错误。显然,只用“苹果是圆形的”这一个条件不能保证分类效果很好。我们把蓝色区域(分类错误的图片)放大,分类正确的图片缩小,这样在接下来的分类中就会更加注重这些错误样本。
然后,学生Tina观察被放大的错误样本和上一轮被缩小的正确样本,回答说:苹果应该是红色的。根据Tina的判断,得到的结果如下图所示:

上图中蓝色区域的图片一样代表分类错误,即根据这个苹果是红色的条件,使得青苹果和草莓、西红柿都出现了判断错误。那么结果就是把这些分类错误的样本放大化,其它正确的样本缩小化。同样,这样在接下来的分类中就会更加注重这些错误样本。
接着,学生Joey经过观察又说:苹果也可能是绿色的。根据Joey的判断,得到的结果如下图所示:

上图中蓝色区域的图片一样代表分类错误,根据苹果是绿色的条件,使得图中蓝色区域都出现了判断错误。同样把这些分类错误的样本放大化,其它正确的样本缩小化,在下一轮判断继续对其修正。
后来,学生Jessica又发现:上面有梗的才是苹果。得到如下结果:

经过这几个同学的推论,苹果被定义为:圆的,红色的,也可能是绿色的,上面有梗。从一个一个的推导过程中,我们似乎得到一个较为准确的苹果的定义。虽然可能不是非常准确,但是要比单一的条件要好得多。也就是说把所有学生对苹果的定义融合起来,最终得到一个比较好的对苹果的总体定义。这种做法就是我们本节课将要讨论的演算法。这些学生代表的就是简单的hypotheses
,将所有
融合,得到很好的预测模型G。例如,二维平面上简单的hypotheses(水平线和垂直线),这些简单
最终组成的较复杂的分类线能够较好地将正负样本完全分开,即得到了好的预测模型。

所以,上个苹果的例子中,不同的学生代表不同的hypotheses
;最终得到的苹果总体定义就代表hypothesis G;而老师就代表演算法A,指导学生的注意力集中到关键的例子中(错误样本),从而得到更好的苹果定义。其中的数学原理,我们下一部分详细介绍。

Diversity by Re-weighting
在介绍这个演算法之前,我们先来讲一下上节课就介绍过的bagging。Bagging的核心是bootstrapping,通过对原始数据集D不断进行bootstrap的抽样动作,得到与D类似的数据集
,每组
都能得到相应的
,从而进行aggregation的操作。现在,假如包含四个样本的D经过bootstrap,得到新的
如下:

那么,对于新的
,把它交给base algorithm,找出
最小时对应的
,如下图右边所示。

由于
完全是D经过bootstrap得到的,其中样本
出现2次,
出现1次,
出现0次,
出现1次。引入一个参数
来表示原D中第i个样本在
中出现的次数,如下图左边所示。


参数u相当于是权重因子,当
中第i个样本出现的次数越多的时候,那么对应的
越大,表示在error function中对该样本的惩罚越多。所以,从另外一个角度来看bagging,它其实就是通过bootstrap的方式,来得到这些
值,作为犯错样本的权重因子,再用base algorithn最小化包含
的error function,得到不同的
。这个error function被称为bootstrap-weighted error。
这种算法叫做Weightd Base Algorithm,目的就是最小化bootstrap-weighted error。

其实,这种weightd base algorithm我们之前就介绍过类似的算法形式。例如在soft-margin SVM中,我们引入允许犯错的项,同样可以将每个点的error乘以权重因子
。加上该项前的参数C,经过QP,最终得到
,有别于之前介绍的
。这里的
相当于每个犯错的样本的惩罚因子,并会反映到
的范围限定上。
同样在logistic regression中,同样可以对每个犯错误的样本乘以相应的
,作为惩罚因子。
表示该错误点出现的次数,
越大,则对应的惩罚因子越大,则在最小化error时就应该更加重视这些点。

其实这种example-weighted learning,我们在机器学习基石课程第8次笔记中就介绍过class-weighted的思想。二者道理是相通的。
知道了u的概念后,我们知道不同的u组合经过base algorithm得到不同的
。那么如何选取u,使得到的
之间有很大的不同呢?之所以要让所有的
差别很大,是因为上节课aggregation中,我们介绍过
越不一样,其aggregation的效果越好,即每个人的意见越不相同,越能运用集体的智慧,得到好的预测模型。
为了得到不同的
,我们先来看看
和
是怎么得到的:

如上所示,
是由
得到的,
是由
得到的。如果
这个模型在使用
的时候得到的error很大,即预测效果非常不好,那就表示由
计算的
会与
有很大不同。而
与
差异性大正是我们希望看到的。
怎么做呢?方法是利用
在使用
的时候表现很差的条件,越差越好。如果在
作用下,
中的表现(即error)近似为0.5的时候,表明
对
的预测分类没有什么作用,就像抛硬币一样,是随机选择的。这样的做法就能最大限度地保证
会与
有较大的差异性。其数学表达式如下所示:

乍看上面这个式子,似乎不好求解。但是,我们对它做一些等价处理,其中分式中分子可以看成
作用下犯错误的点,而分母可以看成犯错的点和没有犯错误的点的集合,即所有样本点。其中犯错误的点和没有犯错误的点分别用橘色方块和绿色圆圈表示:

要让分式等于0.5,显然只要将犯错误的点和没有犯错误的点的数量调成一样就可以了。也就是说,在
作用下,让犯错的
数量和没有犯错的
数量一致就行(包含权重
)。一种简单的方法就是利用放大和缩小的思想(本节课开始引入识别苹果的例子中提到的放大图片和缩小图片就是这个目的),将犯错误的
和没有犯错误的
做相应的乘积操作,使得二者值变成相等。例如
of incorrect为1126,
of correct为6211,要让
中错误比例正好是0.5,可以这样做,对于incorrect
:

对于correct
:

或者利用犯错的比例来做,令weighted incorrect rate和weighted correct rate分别设为
和
。一般求解方式是令犯错率为
,在计算
的时候,
分别乘以
和
。

Adaptive Boosting Algorithm
上一部分,我们介绍了在计算
的时候,
分别乘以
和
。下面将构造一个新的尺度因子:

那么引入这个新的尺度因子之后,对于错误的
,将它乘以
;对于正确的
,将它除以
。这种操作跟之前介绍的分别乘以
和
的效果是一样的。之所以引入
是因为它告诉我们更多的物理意义。因为如果
,得到
,那么接下来错误的
与
的乘积就相当于把错误点放大了,而正确的
与
的相除就相当于把正确点缩小了。这种scale up incorrect和scale down correct的做法与本节课开始介绍的学生识别苹果的例子中放大错误的图片和缩小正确的图片是一个原理,让学生能够将注意力更多地放在犯错误的点上。通过这种scaling-up incorrect的操作,能够保证得到不同于
的
。

值得注意的是上述的结论是建立在
的基础上,如果
,那么就做相反的推论即可。关于
的情况,我们稍后会进行说明。
从这个概念出发,我们可以得到一个初步的演算法。其核心步骤是每次迭代时,利用
把
更新为
。具体迭代步骤如下:

但是,上述步骤还有两个问题没有解决,第一个问题是初始的
应为多少呢?一般来说,为了保证第一次
最小的话,设
即可。这样最开始的
就能由此推导。第二个问题,最终的G(x)应该怎么求?是将所有的g(t)合并uniform在一起吗?一般来说并不是这样直接uniform求解,因为
是通过
得来的,二者在
上的表现差别比较大。所以,一般是对所有的g(t)进行linear或者non-linear组合来得到G(t)。

接下来的内容,我们将对上面的第二个问题进行探讨,研究一种算法,将所有的g(t)进行linear组合。方法是计算
的同时,就能计算得到其线性组合系数
,即aggregate linearly on the fly。这种算法使最终求得
的时候,所有
的线性组合系数
也求得了,不用再重新计算
了。这种Linear Aggregation on the Fly算法流程为:

如何在每次迭代的时候计算
呢?我们知道
与
是相关的:
越小,对应的
应该越大,
越大,对应的
应该越小。又因为
与
是正相关的,所以,
应该是
的单调函数。我们构造
为:

这样取值是有物理意义的,例如当
时,error很大,跟掷骰子这样的随机过程没什么两样,此时对应的
,
,即此
对G没有什么贡献,权重应该设为零。而当
时,没有error,表示该
预测非常准,此时对应的
,
,即此
对G贡献非常大,权重应该设为无穷大。

这种算法被称为Adaptive Boosting。它由三部分构成:base learning algorithm A,re-weighting factor
和linear aggregation
。这三部分分别对应于我们在本节课开始介绍的例子中的Student,Teacher和Class。

综上所述,完整的adaptive boosting(AdaBoost)Algorithm流程如下:

从我们之前介绍过的VC bound角度来看,AdaBoost算法理论上满足:

上式中,
的上界由两部分组成,一项是
,另一项是模型复杂度O(*)。模型复杂度中
是
的VC Dimension,T是迭代次数,可以证明G的
服从
。
对这个VC bound中的第一项
来说,有一个很好的性质:如果满足
,则经过
次迭代之后,
能减小到等于零的程度。而当N很大的时候,其中第二项也能变得很小。因为这两项都能变得很小,那么整个
就能被限定在一个有限的上界中。
其实,这种性质也正是AdaBoost算法的精髓所在。只要每次的
,即所选择的矩g比乱猜的表现好一点点,那么经过每次迭代之后,矩g的表现都会比原来更好一些,逐渐变强,最终得到
且
很小。

Adaptive Boosting in Action
上一小节我们已经介绍了选择一个“弱弱”的算法A(
,比乱猜好就行),就能经过多次迭代得到
。我们称这种形式为decision stump模型。下面介绍一个例子,来看看AdaBoost是如何使用decision stump解决实际问题的。
如下图所示,二维平面上分布一些正负样本点,利用decision stump来做切割。

第一步:

第二步:

第三步:

第四步:

第五步:

可以看到,经过5次迭代之后,所有的正负点已经被完全分开了,则最终得到的分类线为:

另外一个例子,对于一个相对比较复杂的数据集,如下图所示。它的分界线从视觉上看应该是一个sin波的形式。如果我们再使用AdaBoost算法,通过decision stump来做切割。在迭代切割100次后,得到的分界线如下所示。

可以看出,AdaBoost-Stump这种非线性模型得到的分界线对正负样本有较好的分离效果。



或者达到迭代次数,迭代结束


,独立同分布
浙公网安备 33010602011771号