目录
- 7.1 线性可分支持向量机与硬间隔最大化
- 7.1.1 线性可分支持向量机
- 7.1.2 函数间隔和几何间隔
- 7.1.3 间隔最大化
- 7.1.4 学习的对偶算法
- 7.2 线性支持向量机与软间隔最大化
- 7.2.1线性支持向量机
- 7.2.2 学习的对偶算法
- 7.2.3 支持向量
- 7.2.4 合页损失函数
- 7.3 非线性支持向量机与核函数
- 7.3.1 核技巧
- 非线性分类问题
- 核函数的定义
- 核技巧在支持向量机中的应用
- 7.3.2正定核
- 7.3.3 常用核函数
- 7.3.4 非线性支持向量分类机
- 7.4 序列最小最优化算法
- 7.4.1 两个变量二次规划的求解方法
- 7.4.2 变量的选择方法
7.1 线性可分支持向量机与硬间隔最大化
7.1.1 线性可分支持向量机
当训练数据集线性可分时,存在无穷个分离超平面可将两类数据正确分开。
- 感知机利用误分类最小的策略,求得分离超平面,不过这时的解有无穷多个。
- 线性可分支持向量机利用间隔最大化求最优分离超平面,这时,解是唯一的。
线性可分支持向量机 给定线性可分训练数据集,通过间隔最大化或
等价地求解相应的凸二次规划问题学习得到的分离超平面为
以及相应的分类决策函数
称为线性可分支持向量机。
通俗解释,距离超平面最近的实例,距离最大,所以是唯一的平面。
7.1.2 函数间隔和几何间隔
一个点距离分离超平面的远近可以表示分类预测的确信程度。
- 函数间隔 对于给定的训练数据集 和超平面 , 定义超平面 关于样本点 的函数间隔为
定义超平面 关于训练数据集 的函数间隔为超平面 关于 中所有 样本点 的函数间隔之最小值, 即
函数间隔可以表示分类预测的正确性及确信度。 - 几何间隔 对于给定的训练数据集 和超平面 , 定义超平面 关于样本点 的几何间隔为
其中,是的范数。
定义超平面 关于训练数据集 的几何间隔为超平面 关于 中所有 样本点 的几何间隔之最小值, 即 - 超平面 关于样本点 的几何间隔一般是实例点到超平面的带符号的距离(signed distance), 当样本点被超平面正确分类时就是实例点到超平面的距离。
函数间隔和几何间隔有 下面的关系: - 范数:向量元素绝对值的平方和再开平方,
7.1.3 间隔最大化
知识补充-凸优化
凸优化问题
- 目标函数是凸函数
- 可行域是凸集
- 局部最优解=全局最优解
凸集的定义: 对于一个点的集合 , 有 它都是属于 C 里面的两个点, 它们两点的连线中任何一点也是属于集合的,典型的凸集
欧式空间
它的意义在于,很多时候可行域就是欧式空间, 那肯定是凸集
凸集的交集还是凸集
仿射函数 称为仿射函数, 如果它满足
支持向量机学习的基本想法是求解能够正确划分训练数据集并且几何间隔最大的分离超平面。(这里的间隔最大化又称为硬间隔最大化)
- 最大间隔分离超平面
最大化超平面 关于训练数据集的几何间隔 , 约束条件表示的是超平面 关于每个训练样本点的几何间隔至少是
考虑几何间隔和函数间隔的关系式 , 可将这个问题改写为
函数间隔 的取值并不影响最优化问题的解。事实上, 假设将 和 按比例改 变为 和 , 这时函数间隔成为 函数间隔的这一改变对上面最优化问题的不等式约束没有影响, 对目标函数的优化也没有影响, 也就是说, 它产生一个等价的最
优化问题。这样, 就可以取 。 将 代入上面的最优化问题, 注意到最大化 和最小化 是等价的, 于是就得到下面的线性可分支持向量机学习的最优化问题:
这是一个凸二次规划 (convex quadratic programming) 问题。
凸优化问题是指约束最优化问题
其中, 目标函数 和约束函数 都是 上的连续可微的品函数, 约束函数 是 上的仿射函数。
- 最大间隔法
输入: 线性可分训练数据集 , 其中,
输出: 最大间隔分离超平面和分类决策函数。
(1)构造并求解约束最优化问题:
求得最优解 。
(2)由此得到分离超平面:
分类决策函数 - 最大间隔分离超平面的存在唯一性
最大间隔分离超平面的存在唯一性 若训练数据集T线性可分,则可将训练数据集中的样本点完全正确分开的最大间隔分离超平面存在且唯一。
证明:
- 存在性
由于训练数据集线性可分,所以上述最优化问题一定存在可行解。又由于目标函数有下界,所以最优化问题必有解,记作,由于训练数据集中既有正类点又有负类点,所以 = (0,b)不是最优化的可行解,因而最优解必满足,由此得知分离超平面的存在性。 - 唯一性
首先证明 的唯一性。假设最优化问题存在两个最优解 和 。显然 , 其中 是一个常数。令 , 易知 是最优化问题的可行解,从而有
上式表明, 式中的不等号必须为等号, 即 , 从而有 。 若 , 则 不是最优化问题的可行解, 矛盾。 因此必有 , 即
由此可以把两个最优解 和 分别写成 和 。
再证 。设 和 是集合 中分别对应于 和 使得问题的不等式等号成立的点, 和 是集合 中分别对应于 和 使得问题的不等式等号成立的点,∴ ; ,得出,∴
继续,,同理=>
- 支持向量和间隔边界
- 在线性可分情况下,训练数据集的样本点中与分离超平面距离最近的样本点的实例称为支持向量(support vector)。
- 支持向量是使约束条件式等号成立的点
- 与之间的距离称为间隔(margin)。
间隔依赖于分离超平面的法向量 , 等于 。 和 称 为间隔边界。
7.1.4 学习的对偶算法
求解对偶问题的优点
- 对偶问题往往更容易求解;
- 自然引入核函数, 进而推广到非线性分类问题。
构建拉格朗日函数(Lagrange function)。为此, 对每一个不等式约束 引进拉格朗日乘子 (Lagrange multiplier) , 定义拉格朗日函数:
其中, 为拉格朗日乘子向量。
根据拉格朗日对偶性, 原始问题的对偶问题是极大极小问题:
为了得到对偶问题的解, 需要先求 对 的极小, 再求对 的极大。
(1) 求
将拉格朗日函数 分别对
得
将式代入拉格朗日函数 , 并利用式 , 即得
即
(2) 求 对
将式
这个最优化问题可以求解出最优解
设 是对偶最优化问题 的解, 则
存在下标 , 使得 , 并可按下式求得原始最优化问题 的解
证明 KKT 条件成立, 即得
由此得
其中至少有一个 (用反证法, 假设 , 由式 可知 , 而 不是原始最优化问题 的解, 产生矛盾), 对此
将式 代入式 并注意到 , 即得
由此定理可知, 分离超平面可以写成
分类决策函数可以写成
线性可分支持向量机学习算法 输入:线性可分训练集 , 其中 ,
输出:分离超平面和分类决策函数。
- 构造并求解约束最优化问题
求得最优解 - 计算
并选择 的一个正分量 , 计算 - 求得分离超平面
分类决策函数:
在线性可分支持向量机中, 由式 、式 可知, 和 只依赖于训练数据中对应于 的样本点 , 而其他样本点对 和 没有影响。训练数据中对应于 的实例点 称为支持向量。
支持向量
考虑原始最优化问题及对偶最优化问题, 将训练数据集中对应于 的样本点 的实例 称为 支持向量。
根据这一定义, 支持向量一定在间隔边界上。由 KKT 互补条件可知,对应于 的实例 , 有
或
即 一定在间隔边界上。这里的支持向量的定义与前面给出的支持向量的定义是一致的。
备注:在间隔边界上>0,表现为置信度高,所以叫支持向量。其余的实例点=0
7.2 线性支持向量机与软间隔最大化
7.2.1线性支持向量机
- 线性不可分问题
线性不可分意味着某些样本点 不能满足函数间隔大于等于 1 的约束条件。 可以对每个样本点 引进一个松弛变量 , 使函数间隔加上松弛变量大于等于 1 。 这样, 约束条件变为
同时, 对每个松弛变量 , 支付一个代价 。目标函数由原来的 变成
称为惩罚参数, 一般由应用问题决定, 值大时对误分类的惩罚增大, 。最小化目标函数 包含两层含义: 使 尽量小即间隔尽量大, 同时使误分类点的个数尽量小, 是调和二者的系数。
软间隔最大化:训练数据集线性不可分时的线性支持向量机学习问题。
线性不可分的线性支持向量机的学习问题变成如下凸二次规划 (convex quadratic programming ) 问题 (原始问题): - 线性支持向量机 对于给定的线性不可分的训练数据集, 通过求解凸二次规划问题, 即软间隔最大化问题, 得到的分离超平面为
以及相应的分类决策函数
称为线性支持向量机。
7.2.2 学习的对偶算法
原始问题
推导过程:
原始最优化问题的拉格朗日函数是
其中, 。
对偶问题是拉格朗日函数的极大极小问题。首先求 对得
将上面三个式子代入式 , 得
再对 求
再将对目标函数求极大转换为求极小, 于是得到对偶问题
对目标函数求极大转换为求极小, 得到对偶问题。 可以通过求解对偶问题而得到原始问题的解, 进而确定分离超平面和决策函数。
设 是对偶问题
在 的一个分量 , 则原始问题 的解
证明 原始问题是凸二次规划问题, 解满足 KKT 条件。即得
由式 易知式 成立。再由式 可知, 若存在 , 则 。
由此定理可知, 分离超平面可以写成分类决策函数可以写成
线性支持向量机学习算法
输入: 训练数据集 , 其中, ,
输出:分离超平面和分类决策函数。
1、选择昰罚参数 , 构造并求解凸二次规划问题
求得最优解 。
2、计算.
选择 的一个分量 适合条件 , 计算
3、求得分离超平面
分类决策函数:
7.2.3 支持向量
在线性不可分的情况下, 将对偶问题 的解 中对应于 的样本点 的实例 称为支持向量 (软间隔的支持向量)。
如下图所示, 这时的支持向量要比线性可分时的情况复杂一些。图中, 分离超平面由实线表示, 间隔边界由虛线表示, 正例点由“o"表示, 负例点由 “ 表示。图中还标 出了实例 到间隔边界的距离 。
软间隔的支持向量
- 若 , 则 , 支持向量
- 若 , 则分类正确,
- 若 , 则
- 若 , 则
1的推导,已知:,,;
2、3、4同理
7.2.4 合页损失函数
线性支持向量机学习的另一种解释, 就是最小化以下目标函数:
目标函数的第 1 项是经验损失或经验风险, 函数
称为合页损失函数(hinge loss function)。下标 “
- 当样本点 被正确分类且函数间隔(确信度)
- 否则损失是
- 目标函数的第 2 项是系数为 的 的
合页损失函数图像
7.3 非线性支持向量机与核函数
7.3.1 核技巧
非线性分类问题
用线性分类方法求解非线性分类问题分为两步:
- 首先使用一个变换将原空间的数据映射到新空间;
- 在新空间里用线性分类学习方法从训练数据中学习分类模型。
核技巧应用到支持向量机,其基本想法就是通过一个非线性变换将输入空间 (欧氏空间 或离散集合) 对应于一个特征空间 (希尔伯特空间 ),使得在输入空间 中的超曲面模型对应于特征空间
核函数的定义
核函数 设 是输入空间 (欧氏空间 的子集或离散集合 ), 又设 为特征空间 ( 希尔伯特空间 ), 如果存在一个从 到 的映射
使得对所有 , 函数 满足条件
则称 为核函数, 为映射函数, 式中 为 和 的内积。 核技巧的想法是, 在学习与预测中只定义核函数 , 而不显式地定义映射函数 。因为, 直接计算 比较容易, 而通过 和 计算
注意, 是输入空间 到特征空间 的映射, 特征空间 一般是高维的, 甚至是无穷维的。可以看到, 对于给定的核 , 特征空间 和映射函数
核技巧在支持向量机中的应用
在对偶问题的目标函数 中的内积 可以用核函数 来代替。此时对偶问题的目标函数成为
同样, 分类决策函数中的内积也可以用核函数代替, 而分类决策函数式成为
这等价于经过映射函数 将原来的输入空间变换到一个新的特征空间, 将输入空 间中的内积 变换为特征空间中的内积 , 在新的特征空间里从训 练样本中学习线性支持向量机。当映射函数是非线性函数时, 学习到的含有核函数的支持向量机是非线性分类模型。
- 在核函数
- 学习是隐式地在特征空间进行的, 不需要显式地定 义特征空间和映射函数。这样的技巧称为核技巧, 它是巧妙地利用线性分类学习方法 与核函数解决非线性问题的技术。
- 在实际应用中, 往往依赖领域知识直接选择核函数, 核函数选择的有效性需要通过实验验证。
7.3.2正定核
知识补充-半正定矩阵
给定一个大小施 的实对称矩阵 , 若对于任意长度为 的向量 , 有 恒成立,则矩阵
推导正定核的充要条件。
通常所说的核函数就是正定核函数(positive definite kernel function)。
证明此定理的预备知识。
假设 是定义在 上的对称函数, 并且对任意的 关于 的 Gram 矩阵是半正定的。可以依据函数 , 构成一个希尔伯特空间(Hilbert space), 其步骤是:首先定义映射 并构成向量空间 ; 然后在 上定义内积构成内积空间; 最后将
- 定义映射, 构成向量空间
先定义映射
根据这一映射, 对任意 , 定义线性组合
考虑由线性组合为元素的集合 。由于集合 对加法和数乘运算是封闭的, 所以 - 在 上定义内积, 使其成为内积空间
内积空间就是定义了内积的线性空间。
- 在 上定义一个运算 : 对任意 ,
定义运算
证明运算 是空间 :
(1)
(2)
(3)
(4) ,
其中, 由式 式 及
的对称性证明,
- 现证 之 式 。 由式 及式 可得:
由 Gram 矩阵的半正定性知上式右端非负, 即 。
再证 (4) 之式 。 充分性显然。为证必要性(左推右), 首先证明不等式:
设 , 则 , 于是,
其左端是 的二次三项式, 非负, 其判别式小于等于 0 , 即
于是式 得证。
现证若 , 则 。事实上, 若
则按运算 的定义式 , 对任意的 , 有
于是,
由式 和式 有
由式 有
此式表明, 当 时, 对任意的 都有 。
至此, 证明了 为向量空间 的内积。赋予内积的向量空间为内积空间。因此 是一个内积空间。既然 为 的内积运算, 那么仍然用 表示, 即若
则
- 将内积空间 完备化为希尔伯特空间
现在将内积空间 完备化。由式 定义的内积可以得到范数
因此, 是一个赋范向量空间。根据泛函分析理论, 对于不完备的赋范向量空间 定可以使之完备化, 得到完备的赋范向量空间 。一个内积空间, 当作为一个赋范向量空间是完备的时候, 就是希尔伯特空间。这样, 就得到了希尔伯特空间 。
这一希尔伯特空间 称为再生核希尔伯特空间(reproducing kernel Hilbert space, RKHS)。这是由于核 具有再生性, 即满足
及
称为再生核。 - 正定核的充要条件
正定核的充要条件 设 是对称函数, 则 为正 定核函数的充要条件是对任意 对应的 Gram 矩阵:
是半正定矩阵。
证明 必要性。由于 是 上的正定核, 所以存在从 到希尔伯特空间 的映射 , 使得
于是, 对任意 , 构造 关于
对任意 , 有
表明 关于 的 Gram 矩阵是半正定的。
充分性。已知对称函数 对任意 关于 的 Gram 矩阵是半正定的。根据前面的结果, 对给定的 , 可以 构造从 到某个希尔伯特空间而且
并且
由式
表明 是
- 核函数另一定义:正定核的充要条件。
正定核的等价定义 设 是定义在 上的对称 函数, 如果对任意 对应的 Gram 矩阵
是半正定矩阵, 则称
这一定义在构造核函数时很有用。但对于一个具体函数 来说, 检验它是否为正定核函数并不容易, 因为要求对任意有限输入集 验证 对 应的 Gram 矩阵是否为半正定的。在实际问题中往往应用已有的核函数。另外, 由 Mercer 定理可以得到 Mercer 核 (Mercer kernel), 正定核比 Mercer 核更具一般性.
7.3.3 常用核函数
- 多项式核函数 (polynomial kernel function)
对应的支持向量机是一个 次多项式分类器。在此情形下, 分类决策函数成为 - 高斯核函数 (Gaussian kernel function)
对应的支持向量机是高斯径向基函数 (radial basis function) 分类器。在此情形下, 分 类决策函数成为 - 字符串核函数 (string kernel function)
两个字符串 和 上的字符串核函数是基于映射 的特征空间中的内积:
字符串核函数 给出了字符串 和 中长度等于
7.3.4 非线性支持向量分类机
非线性支持向量机学习算法 输入: 训练数据集 , 其中
输出: 分类决策函数。
- 选取适当的核函数 和适当的参数 , 构造并求解最优化问题
求得最优解 - 选择 的一个正分量 , 计算
- 构造决策函数:
当 是正定核函数时, 问题
7.4 序列最小最优化算法
高效的实现支持向量机的学习—序列最小最优化(sequential minimal optimization, SMO )算法
SMO 算法要解如下凸二次规划的对偶问题:
在这个问题中, 变量是拉格朗日乘子, 一个变量 对应于一个样本点 ; 变量的 总数等于训练样本容量
SMO 算法是一种启发式算法, 其基本思路是: 如果所有变量的解都满足此最优化问题的KKT条件 (Karush-Kuhn-Tucker conditions),那么这个最优化问题的解就得到了。因为 KKT 条件是该最优化问题的充分必要条件。否则, 选择两个变量, 固定其他变量, 针对这两个变量构建一个二次规划问题。这个二次规划问题关于这两个 变量的解应该更接近原始二次规划问题的解, 因为这会使得原始二次规划问题的目标 函数值变得更小。重要的是, 这时子问题可以通过解析方法求解, 这样就可以大大提高整个算法的计算速度。子问题有两个变量, 一个是违反 KKT 条件最严重的那一个, 另一个由约束条件自动确定。如此, SMO 算法将原问题不断分解为子问题并对子问 题求解, 进而达到求解原问题的目的。 注意, 子问题的两个变量中只有一个是自由变量。假设 为两个变量, 固定, 那么由等式约束
推导过程
如果 确定, 那么 也随之确定。所以子问题中同时更新两个变量。
整个SMO 算法包括两个部分: 求解两个变量二次规划的解析方法和选择变量的启发式方法。
7.4.1 两个变量二次规划的求解方法
- 选择两个变量,其它变量固定
- SMO将对偶问题转化成一系列子问题:
- 根据约束条件, 可以表示成
- 优化问题可以有解析解
- 基于初始可行解 , 可以得到
- 两个变量,约束条件用二维空间中的图形表示
- 根据不等式条件 的取值范围:
同理,如果,则
- 求解过程: 先求沿着约束方向未经剪辑时的 再求剪辑后的
记:
为输入 的预测值和真实输出 的差,
引进记号
目标函数可写成
由 及 , 可将 表示为
代入式 , 得到只是 的函数的目标函数:
对 求导数
令其为 0 , 得到
将 代入, 得到
将 代入, 于是得到
得到:
最优化子问题沿约束方向未经前辑的解:
得到 的解
计算阈值 和差值
在每次完成两个变量的优化后, 都要重新计算阈值 。当 时, 由 KKT 条件可知:
于是,
由 的定义式 有
式 的前两项可写成:
代入式 , 可得
同样, 如果 , 那么,
如果 同时满足条件 , 那么 。如果 是 0 或者 , 那么 和 以及它们之间的数都是符合 KKT 条件的 阈值, 这时选择它们的中点作为 。
在每次完成两个变量的优化之后, 还必须更新对应的 值, 并将它们保存在列 表中。 值的更新要用到 值, 以及所有支持向量对应的 :
其中, 是所有支持向量
7.4.2 变量的选择方法
SMO算法在每个子问题中选择两个变量优化, 其中至少一个变量是违反KKT条件的
- 第一个变量的选择:外循环
- 违反KKT最严重的样本点,
- 检验样本点是否满足KKT条件:
2、第二个变量的检查:内循环,
- 选择的标准是希望能使目标函数有足够大的变化
- 即对应 最大,即
- 如果内循环通过上述方法找到的点不能使目标函数有足够的下降
- 则:遍历间隔边界上的样本点, 测试目标函数下降
- 如果下降不大, 则遍历所有样本点
- 如果依然下降不大,则丢弃外循环点,重新选择
SMO 算法
输入: 训练数据集 , 其中, ,
, 精度
输出: 近似解
1、取初值 , 令 ;
2、选取优化变量 , 解析求解两个变量的最优化问题 , 求得最优解 , 更新 为 ;
3、若在精度
其中,
则转 4; 否则令 , 转 (2);
4、取