SVM支持向量机
SVMs(Support vector machines)支持向量机是二类分类器,其基本思想是找到一个分类超平面使得距离该分类超平面最近的样本点间隔最大化(Maximize Margin)。
线性判别函数和分类超平面
对于两类问题的线性分类器可以用下述决策规则:
如果
g(x)=0 g ( x ) = 0 定义了一个决策面 H H ,它把归类于类的点和 ω2 ω 2 类的点分离开来,当 g(x) g ( x ) 为线性函数时,这个决策面即为超平面:
![划分超平面](https://i-blog.csdnimg.cn/blog_migrate/3a7b454edd5df398e0731453270e65dd.jpeg)
在样本空间中,划分超平面可以用如下公式表示,记为 (w,b) ( w , b ) :
假设 x1 x 1 , x2 x 2 都在决策面上,有
w w 和超平面上任一点正交,即为 (w,b) ( w , b ) 的法向量。
点到平面距离
对于特征空间上某点
x
x
,可以表示为
其中 xp x p 为 x x 在平面上的投影向量, γ γ 为点 x x 到超平面的距离,为 w w 方向上的单位向量。将上式带回 式,得到
利用线性判别函数进行决策,就是用一个超平面将决策空间分割成两个决策区域,超平面的方向由 w w 确定,位置由决定,判别函数 g(x) g ( x ) 正比于 x x 到决策面的代数距离(带正负号)。当在 H H 正侧时,,负侧时 <0 < 0 <script type="math/tex" id="MathJax-Element-35"><0</script>。
支持向量机
找到最大间隔的划分超平面
也就是
&\min_{w,b} \frac{1}{2}||w||^2\\
s.t. \quad & (w^Tx_i+b)y_i>=1, \quad i=1,\cdots,m \nonumber\\
\end{align} \begin{align}\label{obj}&\min_{w,b} \frac{1}{2}||w||^2\\ s.t. \quad & (w^Tx_i+b)y_i>=1, \quad i=1,\cdots,m \nonumber\\\end{align}
KKT条件
支持向量机(SVM)(二)– 拉格朗日对偶(Lagrange duality)
对偶问题
下面我们转化为对偶问题求解:一是因为对偶问题求解起来往往更加容易;二是可以自然地引入核函数,进而推广到非线性问题。
利用拉格朗日乘子法得到上述问题的对偶问题(为每个约束添加拉格朗日乘子
αi≥0
α
i
≥
0
):
令
可以证明,原问题 (2) (2) 等价于
因为当某个约束不满足时,有
显然不是我们要求的最小值。而当所有约束都满足时
即为我们要最小化的间隔的倒数。
目前为止,目标函数变为
p∗ p ∗ 为原问题的最优解,把最大最小交换一下得到
d∗ d ∗ 为对偶问题的最优解,且 d∗≤p∗ d ∗ ≤ p ∗ ,在满足KKT条件的情况下,两者等价。可以证明,我们的问题是满足KKT条件的。也就是说,原始问题通过满足KKT条件,已经转化成为对偶问题,而求解这个对偶学习问题,分为3个步骤:首先让 L(w,b,α) L ( w , b , α ) 关于 w,b w , b 最小化,然后对 α α 求极大,最后通过SMO算法求解对偶问题中的拉格朗日乘子。
对偶问题求解
- 先固定 α α ,让 L L 关于最小化,分别对 w,b w , b 求偏导。
回顾
根据 矩阵求导公式
有
结果代回 L L :
有
可以看到上式仅包含 αi α i
- 求
α
α
极大,经过上述步骤得到的
w,b
w
,
b
,
L
L
已经不包含,只有
α
α
maxαs.t.∑i=1mαi−12∑i=1m∑j=1mαiαjyiyjxTixj∑i=1mαiyi=0αi≥0,i=1,⋯,m max α ∑ i = 1 m α i − 1 2 ∑ i = 1 m ∑ j = 1 m α i α j y i y j x i T x j s . t . ∑ i = 1 m α i y i = 0 α i ≥ 0 , i = 1 , ⋯ , m
解出 α α 后,有决策函数
g(x)=wTx+b=∑i=1mαiyixTix+b g ( x ) = w T x + b = ∑ i = 1 m α i y i x i T x + b
支持向量的含义
可以看到,决策函数中的
αi
α
i
恰对应训练样本
(xi,yi)
(
x
i
,
y
i
)
。若要使上述过程满足KKT条件,要求:
对于任何样本 (xi,yi) ( x i , y i ) ,要么 αi=0 α i = 0 ,要么 yig(xi)−1=0 y i g ( x i ) − 1 = 0 。如果 αi=0 α i = 0 ,样本点 (xi,yi) ( x i , y i ) 就不会在最终的决策函数中出现,即对最终的决策函数不会有任何贡献;若 αi>0 α i > 0 ,则必有 yig(xi)=1 y i g ( x i ) = 1 ,即对应的样本点在最大间隔边界上,是一个支持向量。所以,最终训练完成后, α α 是一个稀疏的向量,大部分的样本对最终的超平面没有任何贡献,决策超平面仅与支持向量有关。
- 最后一步是利用SMO算法求解对偶问题中的拉格朗日乘子
α
α
。
maxαs.t.∑i=1mαi−12∑i=1m∑j=1mαiαjyiyjxTixj∑i=1mαiyi=0αi≥0,i=1,⋯,m(3) (3) max α ∑ i = 1 m α i − 1 2 ∑ i = 1 m ∑ j = 1 m α i α j y i y j x i T x j s . t . ∑ i = 1 m α i y i = 0 α i ≥ 0 , i = 1 , ⋯ , m
上述问题实质上是一个二次规划问题,可利用二次规划算法求解,但考虑到问题的规模正比于样本数,在实际任务中会造成巨大的开销。人们提出了很多高效算法,SMO(Sequential Minimal Optimization)就是其中的一个著名代表。
SMO的基本思路是每次固定除 αi α i 之外的所有参数,然后求在 αi α i 上的极值。由于存在约束 ∑mi=1αiyi=0 ∑ i = 1 m α i y i = 0 ,若固定 αi α i 之外的其他变量,则 αi α i 可由其他变量导出。所以SMO每次选择两个变量 αi,αj α i , α j 并固定其他变量,在参数初始化后,SMO不断执行如下步骤直至收敛:
- 选取一对需要更新的变量 αi,αj α i , α j
- 固定其他参数,求解 (3) (3) 获得更新后的 αi,αj α i , α j
核函数
在之前的讨论中,我们假设数据是线性可分的,很多时候在原始样本空间我们找不到一个分类超平面将两类样本正确分类,这个时候我们考虑将样本从原始空间映射到一个更高维的空间,使得样本在这个高维空间内线性可分。可以证明,如果原始空间是有限维的,即属性有限,那么一定存在一个高维特征空间使得数据线性可分。
核函数是计算两个向量在隐式空间中内积的函数,而在SVM中要计算的地方恰恰总是以内积的形式出现。这样就避免在高维空间直接计算。
常见核函数
- 多项式核 K(x1;x2)=(⟨x1;x2⟩+R)d K ( x 1 ; x 2 ) = ( ⟨ x 1 ; x 2 ⟩ + R ) d ,这个核所对应的映射实际上是可以写出来的,该空间的维度是 Cdm+d C m + d d ,其中 m m 是原始空间的维度。时为线性核。
- 高斯核 K(x1;x2)=e−∥x1−x2∥∥22σ2 K ( x 1 ; x 2 ) = e − ∥ x 1 − x 2 ∥ 2 2 σ 2 ,这个核可以将原始空间映射为无穷维空间。 σ σ 为带宽,选得很大的话,高次特征上的权重衰减得非常快,所以实际上(数值上近似一下)相当于一个低维的子空间;反过来,如果 σ σ 选得很小,则可以将任意的数据映射为线性可分,不过可能带来非常严重的过拟合问题。通过调控参数 σ σ ,高斯核具有相当高的灵活性,也是使用最广泛的核函数之一。
核函数的选择
一般是用线性核和高斯核。可以首先利用专家的先验知识预先选择核函数,二是可以利用交叉验证。
吴恩达:
1. 如果Feature的数量很大,跟样本数量差不多,这时候选用LR或者是Linear Kernel的SVM
2. 如果Feature的数量比较小,样本数量一般,不算大也不算小,选用SVM+Gaussian Kernel
3. 如果Feature的数量比较小,而样本数量很多,需要手工添加一些feature变成第一种情况
软间隔与正则化
在现实任务中,很难确定合适的核函数使得训练样本在特征空间中线性可分,即使找到了,也很有可能是过拟合。
因此我们引入软间隔的概念,即允许支持向量机在一些样本上出错。
软间隔支持向量机
通过拉格朗日乘子法得到对应的拉格朗日函数:
参考资料
支持向量机通俗导论(理解SVM的三重境界)
机器学习-周志华