支持向量机(support vector machines, SVM)是一种二分类模型,它的基本模型是定义在特征空间上的间隔最大的线性分类器。根据数据是否线性可分,可以分为以下几类
关于超平面的概念,李航老师的书里并没有详讲,可是这个概念对于理解SVM的原理还是非常重要的,因为SVM本身就是通过硬间隔最大化或者软间隔最大化的方法来确定唯一的超平面,将数据分割到确定的超平面的两边,以实现分类。对于一个给定特征空间上的样本集
T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , ⋯   , ( x N , y N ) } T=\left \{ (x_{1},y_{1}),(x_{2},y_{2}),\cdots ,(x_{N},y_{N}) \right \} T={(x1,y1),(x2,y2),⋯,(xN,yN)}
其中 x i ∈ χ = R n x_{i}\in \chi =\mathbf R^{n} xi∈χ=Rn, y i ∈ y = { + 1 , − 1 } y_{i}\in y=\left \{ +1, -1 \right \} yi∈y={+1,−1}。确定的超平面要求正例(当y为+1时)到超平面的距离大于0,负例到超平面的距离小于0。
SVM中涉及到的概念包括超平面的函数表示和点到超平面的距离计算两个概念,接下来对这个两个概念做详细的解释。
在二维空间中,一条直线的方程可以表示为:
A x + B y + C = 0 Ax+By+C=0 Ax+By+C=0
在三维空间中,平面的方程可以表示为:
A x + B y + C z + D = 0 Ax+By+Cz+D=0 Ax+By+Cz+D=0
依次推广,在n维空间中的超平面方程可以表示为:
w 1 x 1 + w 2 x 2 + ⋯ + w n x n + b = 0 w_{1}x_{1}+w_{2}x_{2}+\cdots +w_{n}x_{n}+b=0 w1x1+w2x2+⋯+wnxn+b=0
令 w = [ w 1 , w 2 , ⋯ w n ] T w =[w_{1},w_{2},\cdots w_{n}]^{T} w=[w1,w2,⋯wn]T, x = [ x 1 , x 2 , ⋯ x n ] T x =[x_{1},x_{2},\cdots x_{n}]^{T} x=[x1,x2,⋯xn]T,则方程可改写为
w T x + b = 0 w^{T}x+b=0 wTx+b=0
其中 w = [ w 1 , w 2 , ⋯ w n ] T w =[w_{1},w_{2},\cdots w_{n}]^{T} w=[w1,w2,⋯wn]T为法向量,b可以认为是截距,这个方程确定唯一的超平面。对于这个方程的更进一步的解释如下
如上推导出的公式即为点到超平面的距离公式,由这个公式进一步推导出下一节的函数间隔和几何间隔。
SVM模型的目标就是得到几何间隔最大化对应的模型,那么为什么最大化几何间隔得到的模型最可信呢?一个点距离分离超平面的远近可以表示分类预测的确信程度,在超平面确定的条件下,样本点距离超平面越远则越可信,反之越近则越不可信。同时距离的正负性与类标记 y i y_{i} yi的正负性是否一致能够表示分类是否正确,如果都为正或都为负责分类正确,否则分类错误。而SVM中设计的间隔包括了函数间隔和几何间隔两种。
对于给定的训练集 T T T和超平面 ( w , b ) (w,b) (w,b),定义超平面 ( w , b ) (w,b) (w,b)关于样本点 ( x i , y i ) (x_{i},y_{i}) (xi,yi)的函数间隔为
γ ^ i = y i ( w ⋅ x i + b ) \widehat{\gamma }_{i}=y_{i}(w\cdot x_{i}+b) γ i=yi(w⋅xi+b)
定义超平面 ( w , b ) (w,b) (w,b)关于数据集 T T T的函数间隔为超平面 ( w , b ) (w,b) (w,b)关于 T T T中所有样本点 ( x i , y i ) (x_{i},y_{i}) (xi,yi)的函数间隔的最小值,即
γ ^ = min i = 1 , ⋯   , N γ ^ i \widehat{\gamma }=\underset{i=1,\cdots ,N}{\min}\widehat{\gamma }_{i} γ =i=1,⋯,Nminγ i
函数间隔能表示分类预测的正确性和可信度,但选择分离超平面时,只有函数间隔是不够。因为在超平面不变的情况下,只要按比例改变 w w w和 b b b,比如 2 w 2w 2w和 2 b 2b 2b,则函数间隔也会变成原来的两倍,这使得最大化函数间隔并不能用于选择最优的超平面。通过加入约束条件,使得按比例改变 w w w和 b b b间隔值不再变化,这种新的间隔即为几何间隔,SVM中最大化的为几何间隔。
对于给定的训练集 T T T和超平面 ( w , b ) (w,b) (w,b),定义超平面 ( w , b ) (w,b) (w,b)关于样本点 ( x i , y i ) (x_{i},y_{i}) (xi,yi)的几何间隔为
γ i = y i ( w ∥ w ∥ x i + b ∥ w ∥ ) \gamma _{i}=y_{i}(\frac{w}{\left \| w \right \|} x_{i}+ \frac{b}{\left \| w \right \|}) γi=yi(∥w∥wxi+∥w∥b)
定义超平面 ( w , b ) (w,b) (w,b)关于数据集 T T T的函数间隔为超平面 ( w , b ) (w,b) (w,b)关于 T T T中所有样本点 ( x i , y i ) (x_{i},y_{i}) (xi,yi)的函数间隔的最小值,即
γ = min i = 1 , ⋯   , N γ i \gamma =\underset{i=1,\cdots ,N}{\min}\gamma_{i} γ=i=1,⋯,Nminγi
线性可分SVM通过最大化硬间隔学习一个分类器,而线性可分支持向量机中目标的形式化定义为
max w , b γ \underset{w,b}{\max} \ \gamma w,bmax γ
s . t . y i ( w ∥ w ∥ ⋅ x i + b ∥ w ∥ ) ≥ γ i = 1 , 2 , ⋯ N s.t. \quad y_{i}(\frac{w}{\left \| w \right \|}\cdot x_{i}+\frac{b}{\left \| w \right \|})\geq \gamma \quad i=1,2,\cdots N s.t.yi(∥w∥w⋅xi+∥w∥b)≥γi=1,2,⋯N
其中第二个等式表示每个样本点到超平面的距离都要大于等于给定数据集的几何间隔(数据集中所有数据点几何间隔的最小值)
同时考虑到函数间隔和几何间隔的关系,问题可改写为
max w , b γ ^ ∥ w ∥ \underset{w,b}{\max} \ \frac{\widehat{\gamma }}{\left \| w \right \|} w,bmax ∥w∥γ
s . t . y i ( w ⋅ x i + b ) ≥ γ ^ , i = 1 , 2 , ⋯   , N s.t. \quad y_{i}(w\cdot x_{i}+b)\geq \widehat{\gamma },\quad i=1,2,\cdots ,N s.t.yi(w⋅xi+b)≥γ ,i=1,2,⋯,N
在引出几何间隔的概念时,我们解释过,在超平面确定的情况下,样本点到超平面的函数间隔是可变的,只要将 w w w和 b b b按比例改变,函数间隔也会以相同的比例改变,这说明了函数间隔的取值并不会影响最优化问题的解,因为函数间隔的改变对不等式约束并没有影响。基于这样的观察,我们就可以取 γ ^ = 1 \widehat{\gamma }=1 γ =1,将其带入上面的最优化问题,则最大化 1 ∥ w ∥ \frac{1}{\left \| w \right \|} ∥w∥1等价于最小化 1 2 ∥ w ∥ 2 \frac{1}{2}\left \| w \right \|^{2} 21∥w∥2,得到线性可分SVM的最优化问题为:
min w , b 1 2 ∥ w ∥ 2 \underset{w,b}{\min}\ \ \frac{1}{2}\left \| w \right \|^{2} w,bmin 21∥w∥2
s . t . y i ( w ⋅ x i + b ) − 1 ≥ 0 , i = 1 , 2 , ⋯   , N s.t.\quad y_{i}(w\cdot x_{i}+b)-1\geq 0, \quad i=1,2,\cdots ,N s.t.yi(w⋅xi+b)−1≥0,i=1,2,⋯,N
对偶算法的引入,一般是基于两点考虑:对偶问题往往更容易求解;自然引入核函数,进而推广到非线性分类问题。
要求解硬间隔最大化这一最优化问题,首先根据上一节最后得出的目标函数构建拉格朗日函数
L ( w , b , a ) = 1 2 ∥ w ∥ 2 − ∑ i = 1 N α i y i ( w ⋅ x i + b ) + ∑ i = 1 N α i L(w,b,a)=\frac{1}{2}\left \| w \right \|^{2}-\sum_{i=1}^{N}\alpha _{i}y_{i}(w\cdot x_{i}+b)+\sum_{i=1}^{N}\alpha _{i} L(w,b,a)=21∥w∥2−i=1∑Nαiyi(w⋅xi+b)+i=1∑Nαi
其中,$\alpha =(\alpha _{1},\alpha _{2},\cdots ,\alpha _{N})^{T} $为拉格朗日乘子向量。
根据拉格朗日对偶性,原始的极小极大问题的对偶问题是极大极小问题
max α min w , b L ( w , b , a ) \underset{\alpha }{\max}\ \underset{w,b}{\min}\ L(w,b,a) αmax w,bmin L(w,b,a)
将拉格朗日函数 L ( w , b , a ) \ L(w,b,a) L(w,b,a)分别对 w , b w,b w,b求偏导数并令其等于0
即:
求 min w , b L ( w , b , a ) \ \underset{w,b}{\min}\ L(w,b,a) w,bmin L(w,b,a) 对 α \alpha α的极大,就是对偶问题
由求极大转化为极小,可得如下的等价形式。由以下形式可得,只有其中 α i > 0 \alpha _{i}> 0 αi>0的样本点(根据对偶问题的充要条件KKT条件中的 α i ∗ ≥ 0 \alpha _{i}^{*}\geq 0 αi∗≥0可得)才会对最终结果产生影响,这些样本向量即为支持向量。这一确定支持向量在SVM中是通用的,适合于任何类型的支持向量机模型,因为支持向量本身指的就是能在最大化间隔时影响最后超平面的样本向量。
使得原始问题和对偶问题的解相同的充要条件KKT条件:
连立可解得:
将任意数据点带入可解得:
对应的分类决策函数为:
在线性支持向量机,数据不再完全线性可分也不是完全线性不可分,而是大部分线性可分,同时存在一些特异点(outlier),如果将这些特异点出去则剩余的数据线性可分。线性不可分意味着样本点 ( x i , y i ) (x_{i},y_{i}) (xi,yi)不能满足函数间隔大于等于1的约束条件。__那么为了将这些特异点考虑进来,可以对每个样本点 ( x i , y i ) (x_{i},y_{i}) (xi,yi)引进一个松弛变量 ξ i ≥ 0 \xi _{i}\geq 0 ξi≥0,使得函数间隔加上松弛变量大于等于1,这样确定的间隔即为软间隔。__这样最优化目标就变成了以下形式:
min w , b , ξ 1 2 ∥ w ∥ 2 + C ∑ i = 1 N ξ i \underset{w,b,\xi }{\min} \ \frac{1}{2}\left \| w \right \|^ {2}+C\sum_{i=1}^{N}\xi _{i} w,b,ξmin 21∥w∥2+Ci=1∑Nξi
s . t . y i ( w ⋅ x i + b ) ≥ 1 − ξ i , i = 1 , 2 , ⋯   , N s.t. \quad y_{i}(w\cdot x_{i}+b)\geq 1-\xi _{i}, \ i=1,2,\cdots,N s.t.yi(w⋅xi+b)≥1−ξi, i=1,2,⋯,N
ξ i ≥ 0 , i = 1 , 2 , ⋯   , N \xi _{i}\geq 0,\ i=1,2,\cdots,N ξi≥0, i=1,2,⋯,N
其中, ξ i \xi _{i} ξi为松弛变量, C ≥ 0 C\geq 0 C≥0为惩罚参数, C C C值大时对误分类的惩罚增大,值小时对误分类的惩罚减小。这一目标函数其实包含了两层含义:一个是使的 min w , b , ξ 1 2 ∥ w ∥ 2 \underset{w,b,\xi }{\min} \ \frac{1}{2}\left \| w \right \|^ {2} w,b,ξmin 21∥w∥2尽量小即函数间隔尽可能大;另一个是使误分类点的个数尽量少, C C C是调和两者的系数。
其他的步骤其实和线性可分支持向量机的求解过程类似,同样是得到对偶问题,然后利用对应的拉格朗日函数求解即可。
支持向量机模型的思路是通过间隔最大化来确定一个超平面,这个超平面可以将数据分割成两类,从这一想法来看,貌似支持向量机模型只能实现对线性可分或者近似线性可分数据的二分类,那么如何将其应用到对线性不可分数据的分类任务上呢?一个很经典的思想就是既然当前维度的数据是线性不可分的,那我是否可以将当前数据映射到一个新的向量空间而使其实现线性可分呢?答案当然是肯定的。举个例子如下图
如左图所示,在二维空间中的正负数据样本可以通过一个椭圆曲线区分,而无法利用一条直线将两者区分开,这说明这个问题为线性不可分问题。设左图对应的空间为 χ ∈ R 2 , x = ( x ( 1 ) , x ( 2 ) ) T ∈ χ \chi \in \textbf{R}^{2},x=(x^{(1)},x^{(2)})^{T}\in\chi χ∈R2,x=(x(1),x(2))T∈χ,右图对应的新空间为$\nu \in \textbf{R}{2},z=(z{(1)},z{(2)}){T}\in \nu $,定义从左图原空间到右图新空间的映射为
z = ϕ ( x ) = ( ( x ( 1 ) ) 2 , ( x ( 2 ) ) 2 ) T z=\phi (x)=((x^{(1)})^{2},(x^{(2)})^{2})^{T} z=ϕ(x)=((x(1))2,(x(2))2)T
变换成了新空间中的直线
这个简单的例子中实现通过空间映射将线性不可分问题转化为线性可分问题,也证明了这种转化的可能性,而SVM中是通过核函数来实现这个映射过程的,这也是解决线性不可分问题很重要的一种思路。
核函数:设$\chi 是 输 入 空 间 ( 欧 式 空 间 是输入空间(欧式空间 是输入空间(欧式空间\textbf{R}^{n} 的 子 集 或 离 散 集 合 ) , 又 设 的子集或离散集合),又设 的子集或离散集合),又设H 为 特 征 空 间 ( 希 尔 伯 特 空 间 ) , 如 果 存 在 一 个 从 为特征空间(希尔伯特空间),如果存在一个从 为特征空间(希尔伯特空间),如果存在一个从\chi 到 到 到H$的映射:
ϕ ( x ) : χ → H \phi (x): \chi \rightarrow H ϕ(x):χ→H
使得对所有 x , z ∈ χ x,z\in \chi x,z∈χ,函数 κ ( x , z ) \kappa (x,z) κ(x,z)满足条件
κ ( x , z ) = ϕ ( x ) ⋅ ϕ ( z ) \kappa (x,z) = \phi (x)\cdot \phi(z) κ(x,z)=ϕ(x)⋅ϕ(z)
则成 κ ( x , z ) \kappa (x,z) κ(x,z)为核函数, ϕ ( x ) \phi (x) ϕ(x)为映射函数, ϕ ( x ) ⋅ ϕ ( z ) \phi (x)\cdot \phi(z) ϕ(x)⋅ϕ(z)为内积运算。
__那么为什么将核函数定义为两个映射向量的内积运算,而不直接定义为映射函数呢?__首先,通常情况下直接计算 κ ( x , z ) \kappa (x,z) κ(x,z)比较简单,而通过确定映射函数 ϕ ( x ) \phi (x) ϕ(x)的方式来计算 κ ( x , z ) \kappa (x,z) κ(x,z)比较困难,因为通常映射空间为更高维空间甚至是无穷维的,这使得计算映射值变得非常困难。而直接定义一种内积核函数,用这个函数的计算值来近似的代替两个样本向量映射值的内积要简单的多。其次,为什么映射到新的特征空间后要求两个向量的内积呢?这一点可以从SVM的求解过程得到,根据4.3节对对偶问题的求解过程,最后的问题转化为如下形式
再将样本向量映射到新的特征空间后,式子中 x i ⋅ x j x_{i}\cdot x_{j} xi⋅xj变为 ϕ ( x i ) ⋅ ϕ ( x j ) \phi (x_{i})\cdot \phi (x_{j}) ϕ(xi)⋅ϕ(xj),即 κ ( x , z ) \kappa (x,z) κ(x,z):
其后的运算过程和线性可分支持向量机的求解过程类似,不再赘述。常用的核函数在我的博客《统计学习方法(第二版)》第一章 统计学习及监督学习概论 学习笔记做了总结,可以移步看一看。