支持向量机
- 线性可分支持向量机与硬间隔最大化
- 线性支持向量机与软间隔最大化
- 非线性支持向量机与核函数
- 序列最小最优化算法
支持向量机(support vector machines,SVM)是一种二类分类模型。它的基本模型是定义在特征空间上的间隔最大的线性分类器,间隔最大使它有别于感知机;支持向量机还包括核技巧,这使它成为实质上的非线性分类器。
支持向量机的学习策略就是间隔最大化,可形式化为一个求解凸二次规划(convex quadratic programming)的问题,也等价于正则化的合页损失函数的最小化问题。
支持向量机的学习算法是求解凸二次规划的最优化算法。支持向量机学习方法包含构建由简至繁的模型:线性可分支持向量机(linear support vector machine in linearly separable case)、线性支持向量机(linear support vector machine)及非线性支持向量机(non-linear support vector machine)。
当训练数据线性可分时,通过
硬间隔最大化
(hard margin maximization),学习一个线性的分类器,即线性可分支持向量机,又称为硬间隔支持向量机;当训练数据近似线性可分时,通过软间隔最大化
(soft margin maximization),也学习一个线性的分类器,即线性支持向量机,又称为软间隔支持向量机;当训练数据线性不可分时,通过使用核技巧(kernel trick)及软间隔最大化
,学习非线性支持向量机。当输入空间为欧氏空间或离散集合、特征空间为希尔伯特空间时,
核函数(kernel function)表示将输入从输入空间映射到特征空间得到的特征向量之间的内积。
通过使用核函数可以学习非线性支持向量机,等价于
隐式地在高维的特征空间中学习线性支持向量机。
这样的方法称为核技巧
。
线性可分支持向量机与硬间隔最大化
- 假设输入空间与特征空间为两个不同的空间。输入空间为欧氏空间或离散集合,特征空间为欧氏空间或希尔伯特空间。线性可分支持向量机、线性支持向量机假设这两个空间的元素一一对应,并将输入空间中的输入映射为特征空间中的特征向量。非线性支持向量机利用一个从输入空间到特征空间的非线性映射将输入映射为特征向量。所以,
输入都由输入空间转换到特征空间,支持向量机的学习是在特征空间进行的。
- 学习的目标是在特征空间中找到一个
分离超平面
,能将实例分到不同的类。分离超平面对应于方程 ,它由法向量 和截距 决定,可用 来表示。分离超平面将特征空间划分为两部分,一部分是正类,一部分是负类。法向量指向的一侧为正类,另一侧为负类。
- 一般来说,一个点距离分离超平面的远近可以表示分类预测的确信程度。在超平面 确定的情况下, 能够相对地表示点 距离超平面的远近。而 的符号与类标记 的符号是否一致能够表示分类是否正确。所以可用量 来表示分类的正确性及确信度,这就是
函数间隔
(functional margin)的概念。
- 对于给定的训练数据集 和超平面 ,定义超平面 关于样本点 的函数间隔为
定义超平面 关于训练数据集 的函数间隔为超平面 关于 中所有样本点 的函数间隔之最小值,即
- 函数间隔可以表示分类预测的正确性及确信度。但是选择分离超平面时,
只有函数间隔还不够
。因为只要成比例地改变 和 ,例如将它们改为 和 ,超平面并没有改变,但函数间隔却成为原来的 2 倍。这一事实启示我们,可以对分离超平面的法向量 加某些约束,如规范化, ,使得间隔是确定的。这时函数间隔成为几何间隔
(geometric margin)。
- 对于给定的训练数据集 和超平面 ,定义超平面 关于样本点 的几何间隔为
定义超平面 关于训练数据集 的几何间隔为超平面 关于 中所有样本点 的几何间隔之最小值,即
- 如果 ,那么函数间隔和几何间隔相等。如果超平面参数 和 成比例地改变(超平面没有改变),函数间隔也按此比例改变,而几何间隔不变。
- 支持向量机学习的基本想法是
求解能够正确划分训练数据集并且几何间隔最大的分离超平面
。这里的间隔最大化又称为硬间隔最大化。
-
间隔最大化的直观解释是
:对训练数据集找到几何间隔最大的超平面意味着以充分大的确信度对训练数据进行分类
。也就是说,不仅将正负实例点分开,而且对最难分的实例点(离超平面最近的点)也有足够大的确信度将它们分开。这样的超平面应该对未知的新实例有很好的分类预测能力。
- 最大间隔分离超平面可以表示为下面的约束最优化问题
即我们希望最大化超平面 关于训练数据集的几何间隔·,约束条件表示的是超平面 关于每个训练样本点的几何间隔至少是 。
考虑几何间隔和函数间隔的关系,可将这个问题改写为
- 函数间隔 的取值并不影响最优化问题的解。事实上,假设将 和 按比例改变为 和 ,这时函数间隔成为 。函数间隔的这一改变对上面最优化问题的不等式约束没有影响,对目标函数的优化也没有影响,也就是说,它产生一个等价的最优化问题。这样,就可以取 。将 代入上面的最优化问题,注意到最大化 和最小化 是等价的,于是就得到下面的线性可分支持向量机学习的最优化问题
这是一个凸二次规划问题(convex quadratic programming)。求解 , ,就可以得到最大间隔分离超平面 及分类决策函数 ,即线性可分支持向量机模型。
- 线性可分训练数据集的最大间隔分离超平面是存在且唯一的。
证明:
以上可知最大间隔分离超平面可以表示为下面的约束最优化问题
1>>
存在性证明:
由于训练数据集线性可分,所以式1~式2 最优化问题一定存在可行解。又由于目标函数有下界,所以最优化问题必有解,记作 。由于训练数据集中既有正类点又有负类点,所以 不是最优化的可行解,因而最优解 必满足 。由此得知分离超平面的存在性。
2>>
唯一性证明:
首先证明 的唯一性。假设式1~式2 存在两个最优解 和 ,显然 ,其中 是一个常数。令 ,易知 是式1~式2 的可行解。从而有
上式表明,如果 小于 ,由最优化目标函数式1 可知, 才是最优解,与假设矛盾,因此考虑 等于 的情况,易知 ,由此可以把两个最优解 和 分别写成 和 。
再证 。设 和 是集合 分别对应于 和 使得问题的不等式等号成立的点, 和 是集合 分别对应于 和 使得问题的不等式等号成立的点,则由 , 得
又因为
所以 ,同理有 。
因此 。
由 和 可知,两个最优解 和 是相同的,解的唯一性得证。
- 在线性可分情况下,训练数据集的样本点中与分离超平面距离最近的样本点的实例称为
支持向量
(support vector)。 支持向量是使约束条件式等号成立的点,即 ,如下图中点 和点 就是支持向量。
- 注意到 和 平行,并且没有实例点落在它们中间。在 与 之间形成一条长带,分离超平面与它们平行且位于它们中央。长带的宽度,即 与 之间的距离称为
间隔
(margin)。间隔依赖于分离超平面的法向量 ,等于 。 和 称为间隔边界
。
- 在决定分离超平面时
只有支持向量起作用
,而其他实例点并不起作用。如果移动支持向量将改变所求的解;但是如果在间隔边界以外移动其他实例点,甚至去掉这些点,则解是不会改变的。由于支持向量在确定分离超平面中起着决定性作用,所以将这种分类模型称为支持向量机。支持向量的个数一般很少,所以支持向量机由很少的“重要的”训练样本确定。
- 为了求解线性可分支持向量机的最优化问题式1~式2,将它作为原始最优化问题,应用拉格朗日对偶性,通过求解对偶问题(dual problem)得到原始问题(primal problem)的最优解,就是线性可分支持向量机的对偶算法(dual algorithm)。这样做的优点,一是对偶问题往往更容易求解;二是自然引入核函数,进而推广到非线性分类问题。
- 构建拉格朗日函数。为此,对每一个不等式引进拉格朗日乘子 ,定义拉格朗日函数:
其中, 为拉格朗日乘子向量。
- 根据拉格朗日对偶性,原始问题的对偶问题是极大极小问题:
1>>
求
将拉格朗日函数 分别对 求偏导并令其等于 0
得
将以上公式代入拉格朗日函数中,得
即
2>>
求 对 的极大,即是对偶问题
将上式得目标函数由求极大转换成求极小,就得到下面与之等价的对偶最优化问题:
对线性可分训练数据集,假设对偶最优化问题对 的解为 ,可以由 求得原始最优化问题对 的解
- 设 是以上对偶问题的解,则存在下标 ,使得 并可按下式求得原始最优化问题的解 :
证明:
由 是原始问题和对偶问题的解,满足 KKT 条件,可得
由此得
其中至少有一个 (用反证法,假设 ,可得 ,而 不是原始最优化问题的解,产生矛盾),对此 有
将 代入此式,且 ,可得
由此定理可知,分离超平面可以写成
分类决策函数可以写成
这就是数,分类决策函数只依赖于输入 和训练样本输入的内积。 分类决策函数称为线性可分支持向量机的对偶形式。这种求得分离超平面及分类决策函数的算法,称为线性可分支持向量机的对偶学习算法,是线性可分支持向量机学习的基本算法。
- 在线性可分支持向量机中,以上推导可知, 和 只依赖于训练数据中对应于 的样本点 ,而其他样本点对 和 没有影响。我们将训练数据中对应于 的实例点 称为支持向量。
线性支持向量机与软间隔最大化
- 线性不可分意味着某些样本点 不能满足函数间隔大于等于 1 的约束条件。为了解决这个问题,可以对每个样本点 引进一个松弛变量 ,使函数间隔加上松弛变量大于等于 1。这样,约束条件变为
同时,对每一个松弛变量 ,支付一个代价 。目标函数由原来的 变成
这里, 称为惩罚参数,一般由应用问题决定, 值大时对误分类的惩罚增大, 值小时对误分类的惩罚减小。最小化目标函数包含两层含义:使 尽量小即间隔尽量大,同时使误分类点的个数尽量小, 是调和二者的系数。相应于硬间隔最大化,它称为软间隔最大化
。
- 线性不可分的线性支持向量机的学习问题变成如下凸二次规划(convex quadratic programming)问题
(原始问题)
:
原始问题是一个凸二次规划问题,因而关于 的解是存在的。可以证明 的解是唯一的,但 的解不唯一, 的解存在于一个区间。
- 对于给定的线性不可分的训练数据集,通过求解凸二次规划问题,即软间隔最大化问题,得到的分离超平面为
以及相应的分类决策函数
称为线性支持向量机
。
- 原始问题的对偶问题是
证明:
原始最优化问题的拉格朗日函数是
其中 ,。
对偶问题是拉格朗日函数的极大极小问题。首先求 对 的极小, 由
得
代入拉格朗日函数,得
再对 求 的极大,即得对偶问题:
将以上对偶最优化问题进行变换,得到需要证明的对偶问题,得证。
- 设 是对偶问题的一个解,若存在 ,,则原始问题的解 可按下式求得:
证明:
原始问题是凸二次规划问题,其解满足KKT条件。即得
可知, 成立。若存在 ,可知 ,可知 , 可知 ,再由 ,可得 ,得证。
- 对任一适合条件 的,都可求出 。可见原始问题对 的解并不唯一,所以实际计算时可以取在所有符合条件的样本点上的平均值。
- 在线性不可分的情况下,将对偶问题的解 中对应于 的样本点 的实例 称为支持向量(软间隔的支持向量)。如下图所示,分离超平面由实线表示,间隔边界由虚线表示,正例点由“○”表示,负例点由“×”表示。图中还标出了实例 到间隔边界的距离 。
软间隔的支持向量 或者在间隔边界上,或者在间隔边界与分离超平面之间,或者在分离超平面误分一侧。若 ,则 ,支持向量 恰好落在间隔边界上;若 ,,则分类正确, 在间隔边界与分离超平面之间;若 ,,则xi在分离超平面上;若 , ,则 位于分离超平面误分一侧。
- 线性支持向量机学习还有另外一种解释,就是最小化以下目标函数:
目标函数的第一项是经验损失或经验风险,函数
称为合页损失函数(hinge loss function)。下标“+”表示以下取正值的函数。
这就是说,当样本点 被正确分类且函数间隔(确信度) 大于 1 时,损失是 0,否则损失是 ,注意到在上图中的实例点 被正确分类,但损失不是 0。目标函数的第二项是系数为 的 的 L2 范数,是正则化项。
线性支持向量机原始最优化问题:
等价于最优化问题
证明:
令 ,,则 ,于是 满足约束条件。 由 可知, ,所以最优化问题可写成
取 ,则
与原始最优化问题目标函数等价。
非线性支持向量机与核函数
- 非线性问题往往不好求解,所以希望能用解线性分类问题的方法解决这个问题。所采取的方法是进行一个非线性变换,将非线性问题变换为线性问题,通过解变换后的线性问题的方法求解原来的非线性问题。
- 设原空间为 ,,新空间为 , ,定义从原空间到新空间的变换(映射):
经过变换 ,原空间 变换为新空间 ,原空间中的点相应地变换为新空间中的点。假设原空间的椭圆
变换为新空间的直线
在变换后的新空间里,直线 可以将变换后的正负实例点正确分开。这样,原空间的非线性可分问题就变成了新空间的线性可分问题。
用线性分类方法求解非线性分类问题分为两步:首先使用一个变换将原空间的数据映射到新空间;然后在新空间里用线性分类学习方法从训练数据中学习分类模型。核技巧
就属于这样的方法。
- 设 是输入空间(欧氏空间 的子集或离散集合),又设 为特征空间(希尔伯特空间),如果存在一个从 到 的映射
使得对所有 ,函数 满足条件
则称 为核函数
, 为映射函数。
- 核技巧的想法是,在学习与预测中只定义核函数 ,而不显式地定义映射函数 。通常,直接计算 比较容易,而通过 和 计算 并不容易。注意, 是输入空间 到特征空间 的映射,特征空间 一般是高维的,甚至是无穷维的。可以看到,对于给定的核 ,特征空间 和映射函数 的取法并不唯一,可以取不同的特征空间,即便是在同一特征空间里也可以取不同的映射。
- 在核函数 给定的条件下,可以利用解线性分类问题的方法求解非线性分类问题的支持向量机。学习是隐式地在特征空间进行的,不需要显式地定义特征空间和映射函数。这样的技巧称为
核技巧
,它是巧妙地利用线性分类学习方法与核函数解决非线性问题的技术。在实际应用中,往往依赖领域知识直接选择核函数,核函数选择的有效性需要通过实验验证。
例如:在线性支持向量机的对偶问题中,无论是目标函数还是决策函数(分离超平面)都只涉及输入实例与实例之间的内积。在对偶问题的目标函数中的内积 可以用核函数 来代替。此时对偶问题的目标函数成为
同样,分类决策函数中的内积也可以用核函数代替,而分类决策函数成为
这等价于经过映射函数 将原来的输入空间变换到一个新的特征空间,将输入空间中的内积 变换为特征空间中的内积 ,在新的特征空间里从训练样本中学习线性支持向量机。当映射函数是非线性函数时,学习到的含有核函数的支持向量机是非线性分类模型。
- 通常所说的核函数就是
正定核函数
(positive definite kernel function)。
-
正定核太难理解,等知识完备后,再来回顾
- 设 是对称函数,则 为正定核函数的充要条件是对任意 ,, 对应的 Gram 矩阵:
是半正定矩阵,此时则称 是正定核。
-
多项式核函数
对应的支持向量机是一个 次多项式分类器。在此情行下,分类决策函数成为
-
高斯核函数
对应的支持向量机是高斯径向基函数(radial basis function)分类器。在此情形下,分类决策函数成为
-
字符串核函数
(跳过)
- 将线性支持向量机扩展到非线性支持向量机,只需将线性支持向量机对偶形式中的内积换成核函数。
- 非线性支持向量机学习算法
输入: 训练数据集 ,其中 ,,;
输出:分类决策函数。
1>>
选取适当的核函数 和适当的参数 ,构造并求解最优化问题
求得最优解 。
2>>
选择 的一个正分量 ,计算
3>>
构造决策函数
当 是正定核函数时,以上问题是凸二次规划问题,解是存在的。
序列最小最优化算法
- 序列最小最优化算法简称 SMO 算法,SMO 算法要解如下凸二次规划问题的对偶问题:
在这个问题中,变量是拉格朗日乘子,一个变量 对应于一个样本点 ;变量的总数等于训练样本容量 。
- SMO 算法是一种启发式算法,其基本思路是:如果所有变量的解都满足此最优化问题的 KKT 条件(Karush-Kuhn-Tucker conditions),那么这个最优化问题的解就得到了。因为 KKT 条件是该最优化问题的充分必要条件。否则,选择两个变量,固定其他变量,针对这两个变量构建一个二次规划问题。这个二次规划问题关于这两个变量的解应该更接近原始二次规划问题的解,因为这会使得原始二次规划问题的目标函数值变得更小。重要的是,这时子问题可以通过解析方法求解,这样就可以大大提高整个算法的计算速度。子问题有两个变量,一个是违反 KKT 条件最严重的那一个,另一个由约束条件自动确定。如此,
SMO 算法将原问题不断分解为子问题并对子问题求解,进而达到求解原问题的目的。
注意,子问题的两个变量中只有一个是自由变量。假设 , 为两个变量, 固定,那么由等式约束 可知
如果 确定,那么 也随之确定。所以子问题中同时更新两个变量。
- 假设选择两个变量是 ,其他变量 是固定的。于是 SMO 的最优化问题的子问题可以写成:
其中,, 是常数,式中省略了不含 的常数项。
- 由于只有两个变量 ,约束可以用二维空间中的图形表示
不等式约束 使得 在盒子 内,等式约束 使得 在平行于盒子的对角线的直线上。因此要求的是目标函数在一条平行于对角线的线段上的最优值。这使得两个变量的最优化问题成为实质上的单变量的最优化问题,不妨考虑为变量 的最优化问题。
假设最优化问题的初始可行解是 ,最优解为 ,并且假定在沿着约束方向未经剪辑时 的最优解 ,未经剪辑的最优解即未考虑约束约束条件时的最优解。
由于 需满足不等式约束 ,所以最优值 的取值范围必须满足条件
其中, 与 是 所在对角线段端点的界。如果 , 则
如果 , 则
下面,首页求沿着约束方向未经剪辑即未考虑不等式约束时 的最优解 ;然后再求剪辑后的 的解 。记
令
当 时, 为函数 对输入 的预测值与真实输出 之差。
定义最优化问题沿着约束方向未经剪辑时得解是
其中,
是输入空间到特征空间的映射。
经剪辑后的 的解是
由 求得 是
证明:
引进记号
目标函数可以写成
由于 及 ,可将 表示为
代入上述目标函数,得到的只是 的函数的目标函数
对 求导
令其为 0,得
将 代入,得到
将 代入,于是得到
要使其满足不等式约束必须将其限制在区间 内,从而得到 的表达式。由等式约束,得到 的表达式。于是得到最优问题的解 。
- SMO 算法在每个子问题中选择两个变量优化,其中至少一个变量是违反 KKT 条件的。
- SMO 称选择第 1 个变量的过程为外层循环。外层循环在训练样本中选取违反 KKT 条件最严重的样本点,并将其对应的变量作为第 1 个变量。具体地,检验训练样本点 是否满足 KKT 条件,即
其中,
该检验是在 范围内进行的。在检验过程中,外层循环首先遍历所有满足条件 的样本点,即在间隔边界上的支持向量点,检验它们是否满足 KKT 条件。如果这些样本点都满足 KKT 条件,那么遍历整个训练集,检验它们是否满足 KKT 条件。
- SMO 称选择第 2 个变量的过程为内层循环。假设在外层循环中已经找到第 1 个变量 ,现在要在内层循环中找第 2 个变量 。第 2 个变量选择的标准是希望能使 有足够大的变化。
由上述笔记可知, 是依赖于 的,为了加快计算速度,一种简单的做法是选择 ,使其对应的 最大。因为 已定, 也确定了。如果 是正的,那么选择最小的 作为 ;如果 是负的,那么选择最大的 作为 。为了节省计算时间,将所有 值保存在一个列表中。
在特殊情况下,如果内层循环通过以上方法选择的 不能使目标函数有足够的下降,那么采用以下启发式规则继续选择 。遍历在间隔边界上的支持向量点,依次将其对应的变量作为 试用,直到目标函数有足够的下降。若找不到合适的 ,那么遍历训练数据集;若仍找不到合适的 ,则放弃第 1 个 ,再通过外层循环寻求另外的 。
- 在每次完成两个变量优化后,都要重新计算阈值 。当 时,由 条件可知
于是
由 的定义式有
可得
代入 公式得
同样,如果 ,那么
如果 同时满足条件 ,那么 。如果 是 或者 ,那么 和 以及它们之间的数都是符合 KKT 条件的阈值,这时选择它们的中点作为 。
在每次完成两个变量的优化之后,还必须更新对应的 值,并将它们保存在列表中。值的更新要用到 值,以及所有支持向量对应的 :
其中, 是所有支持向量 的集合。