Support Vector Machine
总述
支持向量机是二分类模型
学习要素
基本模型:定义在特征空间上的间隔最大线性分类器
学习策略:间隔最大化
可形式化为求解凸二次规划问题,也等价于正则化的合页 损失函数最小化问题
间隔最大使其有别于感知机,训练数据线性可分时分离 超平面唯一
- 误分类最小策略(0-1损失)得到分离超平面的解无穷 多个
- 距离和最小策略(平方损失)得到分离超平面唯一, 但与此不同
学习算法:求解凸二次规划的最优化算法
数据
在给定特征空间上的训练数据集 $T={(x_1,y_1), (x_2,y_2),\cdots,(x_N,y_N)}$,其中 $x_i \in \mathcal{X} = R^n, y_i \in {-1, +1}, i=1,2,…,N$
- 输入空间:欧氏空间或离散集合
- 特征空间:希尔伯特空间
- 输出空间:离散集合
SVM假设输入空间、特征空间为两个不同空间,SVM在特征空间 上进行学习
线性(可分)支持向量机假设两个空间元素一一对应,并将 输入空间中的输入映射为特征空间中特征向量
非线性支持向量机利用,输入空间到特征空间的非线性映射 (核函数)将输入映射为特征向量
概念
Linear Support Vector Machine in Linearly Separable Case
线性可分支持向量机:硬间隔支持向量机,训练数据线性可分时, 通过硬间隔最大化策略学习
- 直观含义:不仅将正负实例分开,而且对于最难分的实例点 (离超平面最近的点),也有足够大的确信度将其分开,这样的 超平面对新实例预测能力较好
- Hard-margin Maximization:硬间隔最大化,最大化超平面 $(w,b)$关于线性可分训练数据集的两类样本集几何间隔
原始问题策略
约束最优化问题表述
考虑函数间隔、几何间隔关系得到问题
- 目标、约束中使用函数间隔表示几何间隔
- 就是普通等比缩放、分母移位,不用考虑太多
而函数间隔$\hat{\gamma}$大小会随着超平面参数变化 成比例变化,其取值对问题求解无影响,所以可取 $\hat{\gamma}=1$带入,得到最优化问题
- $\max \frac 1 {|w|}$和 $\min \frac 1 2 {|w|}^2$等价
这里确实没有通用变换技巧,因为这里的$\hat \gamma$ 是特殊的值,其取值与$w,b$相关,这是问题自然蕴含 ,可以视为还有以下一个依赖
当然也可以直接证明两个问题等价:先证明最优解在等式 成立时取到,然后目标函数中1替换为等式左边
最大间隔分离平面存在性
- 若训练数据集T线性可分,则可将训练数据集中样本点完全 正确分开的最大间隔分离超平面存在且唯一
存在性
唯一性
若以上最优化问题存在两个最优解$(w_1^{},b_1^{})$、 $w_2^{},b_2^{}$
显然$|w_1^{}| = |w_2^{}| = c$, $(w=\frac {w_1^{}+w_2^{}} 2,b=\frac {b_1^{}+b_2^{}} 2)$ 使最优化问题的一个可行解,则有
则有$|w|=\frac 1 2 |w_1^{}|+\frac 1 2 |w_2^{}|$ ,有$w_1^{} = \lambda w_2^{}, |\lambda|=1$
- $\lambda = -1$,不是可行解,矛盾
- $\lambda = 1$,则$w_1^{()} = w_2^{}$,两个最优解 写为$(w^{}, b_1^{})$、$(w^{}, b_2^{})$
设$x_1^{+}, x_1^{-}, x_2^{+}, x_2^{-}$分别为对应以上两组 超平面,使得约束取等号、正/负类别的样本点,则有
则有
又因为以上支持向量的性质可得
则有$w^{}(x_1^{+} - x_2^{+})=0$,同理有 $w^{}(x_1^{-} - x_2^{-})=0$
则$b_1^{} - b_2^{} = 0$
概念
Support Vector
支持向量:训练数据集中与超平面距离最近的样本点实例
- 在线性可分支持向量机中即为使得约束条件取等号成立的点
- 在决定分离超平面时,只有支持向量起作用,其他实例点不起 作用
- 支持向量一般很少,所以支持向量机由很少的“重要”训练样本 决定
间隔边界
间隔边界:超平面$wx + b = +/-1$
- 支持向量位于其上
- 两个间隔边界之间距离称为间隔$=\frac 2 {|w|}$
算法
- 输入:线性可分训练数据集T
- 输出:最大间隔分离超平面、分类决策函数
构造并求解约束最优化问题
得到最优解$w^{}, b^{}$
得到分离超平面
分类决策函数
多分类
1 vs n-1:对类$k=1,…,n$分别训练当前类对剩余类分类器
- 分类器数据量有偏,可以在负类样本中进行抽样
- 训练n个分类器
1 vs 1:对$k=1,…,n$类别两两训练分类器,预测时取各 分类器投票多数
- 需要训练$\frac {n(n-1)} 2$给分类器
DAG:对$k=1,…,n$类别两两训练分类器,根据预先设计的、 可以使用DAG表示的分类器预测顺序依次预测
- 即排除法排除较为不可能类别
- 一旦某次预测失误,之后分类器无法弥补
- 但是错误率可控
- 设计DAG时可以每次选择相差最大的类别优先判别
Dual Algorithm
对偶算法:求解对偶问题得到原始问题的最优解
- 对偶问题往往更容易求解
- 自然引入核函数,进而推广到非线性分类问题
对偶问题策略
Lagrange函数如下
- $\alpha_i > 0$:Lagrange multiplier
根据拉格朗日对偶性,原始问题的对偶问题是极大极小问题
求$\min_{w,b} L(w,b,\alpha)$,对拉格朗日函数求偏导置0
解得
将以上结果代理拉格朗日函数可得
以上函数对$\alpha$极大即为对偶问题,为方便改成极小
原始问题解
- 设$\alpha^{} = (\alpha_1^{}, \cdots, \alpha_N^{})$是 上述对偶优化问题的解,则存在$j \in [1, N]$使得 $\alpha_j^{} > 0$,且原始最优化问题解如下
由KKT条件成立有
可得
其中至少有一个$\alpha_j > 0$,否则$w^{*}=0$不是原问题解 ,且有
注意到$y_j \in {-1, +1}$,则有
分离超平面
则分离超平面为
分类决策函数为
即分类决策函数只依赖输入$x$和训练样本的内积
支持向量
- 将对偶最优化问题中,训练数据集中对应$\alpha_i^{*} > 0$ 的样本点$(x_i, y_i)$称为支持向量
- 由KKT互补条件可知,对应$\alpha_i^{*} > 0$的实例$x_i$有即$(x_i, y_i)$在间隔边界上,同原始问题中支持向量定义一致
算法
- 输入:线性可分数据集$T$
- 输出:分离超平面、分类决策函数
构造并求解以上对偶约束最优化问题,求得最优解 $\alpha^{} = (\alpha_1^{},…,\alpha_N^{*})^T$
依据以上公式求$w^{}$,选取$\alpha^{}$正分量 $\alpha_j^{} > 0$计算$b^{}$
求出分类超平面、分类决策函数
Linear Support Vector Machine
线性支持向量机:训练数据线性不可分时,通过软间隔最大化策略 学习
训练集线性不可分通常是由于存在一些outlier
- 这些特异点不能满足函数间隔大于等于1的约束条件
- 将这些特异点除去后,剩下大部分样本点组成的集合是 线性可分的
对每个样本点$(x_i,y_i)$引入松弛变量$\xi_i \geq 0$
- 使得函数间隔加上松弛变量大于等于1
- 对每个松弛变量$\xi_i$,支付一个代价$\xi_i$
- soft-margin maximization:软间隔最大化,最大化样本点 几何间隔时,尽量减少误分类点数量
策略
线性不可分的线性支持向量机的学习变成如下凸二次规划,即 软间隔最大化
- $\xi_i$:松弛变量
- $C > 0$:惩罚参数,由应用问题决定,C越大对误分类惩罚越大
最小化目标函数包含两层含义
- $\frac 1 2 |w|^2$尽量小,间隔尽量大
- 误分类点个数尽量小
以上问题是凸二次规划问题,所以$(w,b,\xi)$的解是存在的
- $w$解唯一
- $b$解可能不唯一,存在一个区间
- 对给定的线性不可分训练数据集,通过求解以上凸二次规划问题 得到的分类超平面 以及相应的分类决策函数 称为线性支持向量机
- 线性支持向量包括线性可分支持向量机
- 现实中训练数据集往往线性不可分,线性支持向量机适用性更广
对偶问题策略
原始问题的对偶问题
- 类似线性可分支持向量机利用Lagrange对偶即可得
原始问题解
- 设$\alpha^{} = (\alpha_1^{}, \cdots, \alpha_N^{})$是 上述对偶优化问题的解,则存在$j \in [1, N]$使得 $0 < \alpha_j^{} < C$,且原始最优化问题解如下
- 类似线性可分支持向量机利用KKT条件即可得
分离超平面
则分离超平面为
分类决策函数/线性支持向量机对偶形式
即分类决策函数只依赖输入$x$和训练样本的内积
支持向量
- 将对偶最优化问题中,训练数据集中对应$\alpha_i^{*} > 0$ 的样本点$x_i$称为(软间隔)支持向量
- $\alpha_i^{*} < C$:则$\xi_i = 0$,恰好落在间隔边界上
- $\alpha_i^{*} = C, 0 < \xi_i < 1$:间隔边界与分离超平面 之间
- $\alpha_i^{*} = C, \xi=1$:分离超平面上
- $\alpha_i^{*} = C, \xi>1$:分离超平面误分一侧
Hinge Loss
线性支持向量机策略还可以视为最小化以下目标函数
- 第一项:经验风险,合页损失函数
- 第二项:正则化项
- $w$模越大,间隔越小,合页损失越小,所以用这个作为 正则化项是合理的
- 参见data_science/loss
等价证明
令
则有$\xi_i \geq 0$
且
所以有
则原问题两个约束条件均得到满足,此问题可写成
取$\lambda = \frac 1 {2C}$,即同原问题
Non-Linear Support Vector Machine
非线性支持向量机
非线性问题:通过非线性模型才能很好进行分类的问题
- 通过非线性变换$\phi(x)$,将输入空间映射到特征 空间(维数可能非常高)
- 原空间中非线性可分问题在特征空间可能变得线性可分, 在特征空间中学习分类模型
SVM求解非线性问题时
- kernel trick:通过非线性变换将输入空间对应一个特征 空间,使得输入空间中超曲面对应于特征空间的超平面模型
- 软间隔最大化策略:在特征空间中求解线性支持向量机
Kernal Trick
核技巧:线性SVM的对偶问题中,目标函数、决策函数均只涉及输入 实例、实例之间的内积
将内积使用核函数代替,等价进行复杂的非线性变换
映射函数是非线性函数时,学习的含有核函数的支持向量机 是非线性模型
- 学习是隐式地在特征空间中进行的,不需要显式定义特征 空间、映射函数
- 参见data_science/ref/functions
对偶问题目标函数
原始问题解
分类决策函数
算法
- 输入:训练数据集$T$
- 输出:分类决策函数
选取适当的核函数$K(x,z)$、适当参数C,构造求解最优化问题
求得最优解 $\alpha^{} = (\alpha_1^{},\alpha_2^{},\cdots,\alpha_N^{})$
选择$\alpha^{}$的一个正分量$0 < \alpha_j^{} < C$,计算
构造决策函数
- $K(x,z)$是正定核函数时,最优化问题是凸二次规划,有解
Sequential Minimal Optimization
序列最小最优化算法,主要解如下凸二次规划的对偶问题
- 凸二次规划有很多算法可以求得全局最优解,但是在训练样本 容量较大时,算法会很低效
思想
将原问题不断分解为子问题求解,进而求解原问题
如果所有变量的解都满足此优化问题的KKT条件,得到此最优化 问题的一个可能解
- 对凸二次规划就是最优解,因为凸二次规划只有一个稳定点
否则选择两个变量,固定其他变量,构建一个二次规划
目标是使得解符合KKT条件,但是因为等式约束的存在, 不可能单独改变一个变量而保持等式约束
子问题有解析解,求解速度快
二次规划问题关于两个变量的解会使得原始二次规划的目标 函数值变得更小,更接近原始二次规划的解 (这里SMO原始论文有证明,违反KKT条件的变量可以做到)
不失一般性,假设选择两个变量$\alpha_1, \alpha_2$,其他 变量$\alpha_i(i=3,4,…,N)$是固定的,则SMO最优化子问题
- $K_{ij} = K(x_i, x_j), i,j=1,2,\cdots,N$
- $\zeta$:常数
两变量二次规划取值范围
由等式约束,$\alpha_1, \alpha_2$中仅一个自由变量, 不妨设为$\alpha_2$
设初始可行解为$\alpha_1, \alpha_2$
设最优解为$\alpha_1^{}, \alpha_2^{}$
未经剪辑(不考虑约束条件而来得取值范围)最优解为 $\alpha_2^{**}$
由不等式约束,可以得到$\alpha_2$取值范围$[L, H]$
$y_1 = y_2 = +/-1$时
$y_1 \neq y_2$时
- 以上取值范围第二项都是应用等式约束情况下,考虑 不等式约束
两变量二次规划求解
为叙述,记
- $g(x)$:SVM预测函数(比分类器少了符号函数)(函数间隔)
- $E_j$:SVM对样本预测与真实值偏差
- 以上两变量二次规划问题,沿约束方向未经剪辑解是 剪辑后的最优解是
记
由等式约束$\alpha_1 = (\zeta - y_2 \alpha_2) y_1$,均 带入目标函数有
对$\alpha_2$求导置0可得
带入$\zeta = \alpha_1 y_1 + \alpha_2 y2$,可得
变量选择
SMO算法每个子问题的两个优化变量,其中至少一个违反KKT条件
外层循环—首个变量选择
在训练样本中选择违反KKT条件最严重的样本点,将对应的变量作为 第一个变量$\alpha_1$
检查样本点是否满足KKT条件
检验过程中
首先遍历所有满足条件的$0 < \alpha_i < C$样本点,即 在间隔边界上的支持向量点
若没有找到违背KKT条件的样本点,则遍历整个训练集
内层循环
第二个变量$\alpha_2$选择标准是其自身有足够大的变化,以加快 计算速度
由以上推导知,$\alpha_2^{*}$取值依赖于$|E_1 - E_2|$, 所以可以选择$\alpha_2$使其对应的$|E_1 - E_2|$最大
- $\alpha_1$已经确定,$E_1$已经确定
- $E_1 > 0$:选最小的$E_2$
- $E_1 < 0$:选最大的$E_2$
但以上方法可能不能使得目标函数值有足够下降,采用以下 启发式规则继续选择$\alpha_2$
- 遍历间隔边界上的点
- 遍历整个训练数据集
- 放弃$\alpha_1$
更新阈值
$0< \alpha_1^{*} < C$时,由KKT条件可知
则有
将$E_1$定义式带入有
类似的$0 < \alpha_2^{*} < C$时
若
$0 < \alpha_1^{}, \alpha_2^{} < C$,则 $b_1{} = b_2^{}$
$\alpha_1^{}, $\alpha_2^{}$均为0、C,则 $[b_1^{}, b_2^{}]$中均为符合KKT条件的阈值,选择 中点作为新阈值$b^{*}$
同时使用新阈值更新所有的$E_i$值
- $S$:所有支持向量的集合
算法
- 输入:训练数据集$T$,精度$\epsilon$
- 输出:近似解$\hat \alpha$
初值$\alpha^{(0)}$,置k=0
选取优化变量$\alpha_1^{(k)}, \alpha_2^{(k)}$,解析求解 两变量最优化问题得$\alpha_1^{(k+1)}, \alpha_2^{(k+2)}$, 更新$\alpha^{(k+1)}$
若在精度范围内满足停机条件(KKT条件)
则转4,否则置k=k+1,转2
取$\hat \alpha = \alpha^{(k+1)}$