补充知识支持向量机和核函数

Posted ViviranZ

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了补充知识支持向量机和核函数相关的知识,希望对你有一定的参考价值。

1)Zhang, Kun, et al. “Domain adaptation under target and conditional shift.” International Conference on Machine Learning. 2013.

这篇里讲到要用核函数的方法避免计算协变量,就从周志华老师的西瓜书上找了章节来看,做个笔记备用。

目录

支持向量机(Support Vector Machine)

1. 基本型(支持向量+间隔)

2. 转化为对偶问题求解

3. 核函数(核函数,核矩阵+RKHS)

支持向量机(Support Vector Machine)

1. 基本型(支持向量+间隔)

以二分类问题为例。

假设:训练样本是线性可分的!

给定训练样本集,,分类任务就是想要把这些点集用一个超平面分开。但是,把集合分开的任务可能有很多超平面能完成,我们想要找到“最好的”超平面。直觉上,下图以二维特征为例,五条超平面都能分割,但是我们希望找到加粗的这条。

在样本空间里,划分超平面可通过以下方程完成:

其中表示该平面的法向量,则空间中任意点到超平面的距离为

我们想解决的问题就是,在超平面成功分割集合的前提下使得所有点到超平面的距离之和最远

 

 分别对应

众所周知,这个问题非常不好求,所以我们需要进一步的假设:

(1.1)

不用单纯>0或者<0,而是给出限制,限制到+-1

我们知道,如果在 (1.1)的条件下,距离超平面最近的异类两个点使得(1.1)成立,它们被称为“支撑向量(Support Vector)”,且异类两点到超平面的具体之和为(不一定真的有)

(公式中w本应该加粗表示向量,但是Markdown分母加粗糊了就没加。)

这个值被称为间隔(Margin)。

 于是我们把问题转化为“求使得两类中分别离超平面最近的点的距离之和最大的超平面”(有点绕但是结合公式理解)

进一步,可以转化为

       (1.2)

 这就是支持向量机(Support Vector Machine)的基本型

2. 转化为对偶问题求解

(1.2)转化为对偶问题为:

(1.3)

上式对分别求偏导为0可得

 

代入(1.3),与(1.2)相比对得对偶的公式:

 

解出之后,求出即可得到模型

 

可以发现,得到的是拉格朗日乘子,恰对应着训练样本,因为(1.2)里有不等式约束,因此满足KKT条件(Karuash-Kuhn-Tucker)条件,即要求

 

因此对于任意训练样本,总有或者,前者不会出现在求和公式里面,也不会对有任何影响。若,则必有对应点在最大间隔边界上,是一个支持向量。

这显示出支持向量机的一个重要性质:训练完成后,大部分的训练样本都不许保留,最后模型只与支持向量有关。

具体求解算法截图原文信息如下:

 

3. 核函数(核函数,核矩阵+RKHS)

现实中,不一定训练集是线性可分的。比如:

对这样的问题,我们考虑将样本从原始空间映射到一个更高维度的特征空间,使得样本在这个特征空间内是线性可分,(例如上图所示)那么问题转化为了怎样求这个映射。幸运的是,只要原始空间是有限维的,即属性数有限,那么一定存在一个高维特征空间使得样本可分。

设这个映射为

那么在特征空间里划分超平面对应的模型可表示为

类似(1.2)有

 得到对偶问题为:

 求解(6.21)涉及计算,这是特征向量映射到特征空间之后的内积。由于特征空间维数可能很高甚至无穷维,因此计算这个不容易,为了避开,可以设想一个函数

有了函数就不需要计算内积,于是(6.21)可写成

 求解后可以得到

 这里的函数就是“核函数”(Kernel Function)。

(6.24)显示,我们把求变换和对应的超平面的优化过程,求模型的最优解可通过训练样本的核函数展开,这一展式亦称为“支持向量展式”(Support Vector Expansion) 。

问题:我们都不知道,怎么求核函数?我们有下述定理

定理6.1表示,只要一个对称函数生成核矩阵半正定,就可以做为核函数使用。事实上,对于一个半正定核矩阵,总有一个对应映射。 换言之,对于任何一个核函数都隐式定义一个称为“再生核希尔伯特空间”(Reproducing Kernel Hilbert Space,简称为RKHS)的特征空间。

注:

 常用核函数:

 核函数性质:

 4. 软间隔与正则化

假设是线性可分的也未必可行,很难确定合适的核函数,即使找到了,也不知道是不是过拟合

缓解这种糟糕的情况出现的方法是允许SVM在一些样本出错,为此,要引入软间隔(soft margin)的概念,如图: 

 用一句比较俗的话,是盼计算机学得好(以防欠拟合)、又怕它学得太好(以防过拟合),所以要留一点余地。

 

 这个0/1损失函数性质不好(非凸、非连续,数学性质不好),因此通常用其他的代替,称为“替代函数”(surrogate loss)。如:

以hinge损失为例:

 

类似地,带入(6.36)可得 与前面的(6.23)相比,目标函数是一样的,只有约束多了上界,因此支持向量展式也相同。

类似地,得到KKT条件要求:

 有类似的分析,对于有影响的,一定满足,这样本是支持向量。

 其它替代损失函数?

 5. 支持向量回归

现在我们来考虑回归问题. 给定训练样本,希望学得一个形如式(6.7)的回归模型,使得 尽可能接近,是待确定的模型参数。

对样本,传统回归模型通常直接基于模型输出与真实输出之间的差别来计算损失,当且仅当 完全相同时,损失才为零。与此不同,支持向量回归(Support Vector Regression, 简称 SVR)假设我们能容忍 之间最多有的偏差,即仅当 之间的差别绝对值大于时才计算损失. 如图6.6所示,这相当于以为中心,构建了一个宽度为的间隔带,若训练样本落入此间隔带,则被认为是预测正确的。

于是,SVR问题可形式化为

松弛变量的引入常常是为了便于在更大的可行域内求解。若为0,则收敛到原有状态,若大于零,则约束松弛。

对线性规划问题的研究是基于标准型进行的。因此对于给定的非标准型线性规划问题的数学模型,则需要将其化为标准型。一般地,对于不同形式的线性规划模型,可以采用一些方法将其化为标准型。其中,

当约束条件为“≤”(“≥”)类型的线性规划问题,可在不等式左边加上(或者减去)一个非负的新变量,即可化为等式。这个新增的非负变量称为松弛变量(或剩余变量),也可统称为松弛变量。在目标变量中一般认为新增的松弛变量的系数为零。

 

 

 (6.47)代入(6.7)知道,解为

能使得不为零的样本就是支持向量,且落在间隔带之外,同样,我们只关注SVR中的支持向量,是训练样本中的一部分,解有稀疏性。

 

 如果考虑特征映射,那么式子将形如

 SVR可表示为

6. 核方法

 回顾 式(6.24)和(6.56)可 发现,给定训练样本了,若不考虑偏移项,则无论SVM 还是SVR, 学得的模型总能表示成核函数的线性组合.不仅如此,事实上我们有下面这个称为 “表示定理” (representer theorem)的更一般的结论:

 表示定理对损失西数没有限制,对正则化项仅要求单调递增,甚至不要求是凸函数,意味着对于一般的损失函数和正则化项,优化问题(6.57)的最优解h*(x)都可表示为核函数的线性组合;这显示出核函数的巨大威力。

人们发展出一系列基于核函数的学习方法,统称为 “核方法” (kernel methods)。最常见的,是通过“核化”(即引入核函数)来将线性学习器拓展为非线性学习器。

下面我们以线性判别分析为例来演示如何通过核化来对其进行非线性拓展,从而得到“核线性判别分析” (Iernelized Linear Diseriminant Analysis, 简称 KLDA)。(略过)

【结论】

核方法,通过证明找到一个核函数,能把原本无法通过超平面分割的点集映射到可分的高维,并且数学上证明了其存在性条件。但是实际上在使用中,我们大多数情况下并不会真的去找到这样一个核函数,而是用常用的核函数直接用(经验公式大概率可以用)。

 

 

 

 

 

 

以上是关于补充知识支持向量机和核函数的主要内容,如果未能解决你的问题,请参考以下文章

python实现支持向量机之非线性支持向量机和核函数(理论五)

浅谈支持向量机(Support Vector Machine)

SVM的类型和核函数选择

-SVM支持向量机

支持向量机(第一章)

线性代数矩阵知识