支持向量机(SVM)

支持向量机是监督学习中最有影响力的方法之一。类似于逻辑回归,这个模型也是基于线性函数 wx+bw⊤x + b 的。不同于逻辑回归的是,支持向量机不输出概率,只输出类别。当 wx+bw⊤x + b 为正时,支持向量机预测属于正类。类似地,当 wx+bw⊤x + b 为负时,支持向量机预测属于负类。

在机器学习中,SVM首次实现了经验风险和结构风险的结合作为优化准则,从而使得学习到的模型具有更好的鲁棒性。接下来我们以线性可分的二值分类问题为背景进行SVD原理的介绍,假设有 NN 个样本,其特征是2维的,其标签情况显示如下图,而我们SVM的最终目的就是求出一条分割线(在高维空间中称之为超平面)能够完成分类任务。

[监督学习]之支持向量机

从经验风险的角度来看,如果只需要满足分类的正确率的要求,该问题的分割线是存在无数条的;可是我们还有更高的要求,我们希望找到其中最优的那条分割线,也就是说具有更好的鲁棒性,即使有一定噪声存在,也能够更好地区分样本的类别,就是所谓的结构风险最小。这种想法反映到上图中,就是寻找那条红线,它不仅需要满足分类正确的要求,还必须是所有分割线中margin最大的那一个,这里的margin就是指各类样本距离分割线的最小距离的和,即为图中两条蓝色虚线之间的距离 ,我们不妨设红色分割线距离各个类别样本的最短距离相等并记为 dd

我们设待求的分割线为 wTx+b=0\boldsymbol{w}^T\boldsymbol{x}+b = 0 ,则两侧虚线的表达式分别为 wTx+b=1,wTx+b=+1\boldsymbol{w}^T\boldsymbol{x}+b = -1,\boldsymbol{w}^T\boldsymbol{x}+b = +1

假设蓝色虚线的表达式为 wTx+b=c\boldsymbol{w}^T\boldsymbol{x}+b = c ,我们对等式两边同时除以 cc ,则有 wTcx+bc=1\frac{\boldsymbol{w}^T}{c} \boldsymbol{x}+ \frac{b}{c} = 1 ,同时对于红色分割线也可以作此处理,有 wTcx+bc=0\frac{\boldsymbol{w}^T}{c} \boldsymbol{x}+ \frac{b}{c} = 0 ,若令 w=wTc,b=bc\boldsymbol{w} = \frac{\boldsymbol{w}^T}{c},b = \frac{b}{c} ,则有上述结果。这就是分割线参数的缩放处理。

从而有分割线的margin数学表示 D=2d=2wD = 2d = \frac{2}{||\boldsymbol{w}||} ,也就有了我们的优化目标:
max2w \max \frac{2}{||\boldsymbol{w}||} \\
那么如何保证样本的分类正确呢?我们可以观察到:当样本为正样例 yi=+1y_i=+1 时,有 wTxi+b+1\boldsymbol{w}^T\boldsymbol{x}_i+b \ge +1 ;当样本为负样例 yi=1y_i=-1 时,有 wTxi+b1\boldsymbol{w}^T\boldsymbol{x}_i+b \le -1 。将这两个限制条件归结为一个条件表示则为
yi(wTxi+b)1 \boldsymbol{y}_i(\boldsymbol{w}^T\boldsymbol{x}_i+b) \ge 1
因此,将SVM转化为一个不等式约束的优化问题
{minw12w2st.yi(wTxi+b)1,i=1,2,,N \left\{ \begin{aligned} & \min_{\boldsymbol{w}} \frac{1}{2}||\boldsymbol{w}||^2 \\ & st.\boldsymbol{y}_i(\boldsymbol{w}^T\boldsymbol{x}_i+b) \ge1 ,i=1,2,\cdots,N\\ \end{aligned} \right.

简单例子

[监督学习]之支持向量机

[监督学习]之支持向量机

解答:

i. 如图所示

ii. H2:wTx+b=1H_2 : \boldsymbol{w}^T \boldsymbol{x} + b =-1

iii. 当样本的标签为 yi=1y_i =-1 时,有 wTxi+b1\boldsymbol{w}^T \boldsymbol{x}_i + b\le -1 ;当样本的标签为 yi=+1y_i = + 1 时,有 wTxi+b+1\boldsymbol{w}^T \boldsymbol{x}_i + b\ge +1 ,经过总结规律从而有 yi(wTxi+b)1,i{1,2,,N}y_i(\boldsymbol{w}^T \boldsymbol{x}_i + b) \ge 1, \forall i \in\{1,2,\cdots,N\}

iv. 训练数据本身是线性可分的,且不含有噪声。

v. 已知 H1:wTx+b=1,H2:wTx+b=1H_1 : \boldsymbol{w}^T \boldsymbol{x} + b = 1,H_2 : \boldsymbol{w}^T \boldsymbol{x} + b =-1 ,由求平行直线的距离公式知
D=2w2 D= \frac{2}{||\boldsymbol{w}||^2}
vi. 优化问题的表达式为
{min12w2st.yi(wTxi+b)1,i=1,2,,N \left\{ \begin{aligned} & \min \frac{1}{2}||\boldsymbol{w}||^2 \\ & st.\boldsymbol{y}_i(\boldsymbol{w}^T\boldsymbol{x}_i+b) \ge1 ,i=1,2,\cdots,N\\ \end{aligned} \right.
vii. 在这种情况下,具体的优化公式为
{min12(w12+w22+w32)w1+2w2+3w3+b14w1+w2+2w3+b1w12w2+w3b1 \left\{ \begin{aligned} & \min \frac{1}{2}({w}_1^2 + {w}_2^2 + {w}_3^2) \\ & {w}_1 + 2{w}_2 + 3{w}_3 +b \ge 1 \\ & 4{w}_1 + {w}_2 + 2{w}_3 +b \ge 1 \\ & {w}_1 - 2{w}_2 + {w}_3 -b \ge 1 \\ \end{aligned} \right.
从而有拉格朗日函数
L(w,b)=12(w12+w22+w32)λ1(w1+2w2+3w3+b1)λ2(4w1+w2+2w3+b1)λ3(w12w2+w3b1) \begin{aligned} L(\boldsymbol{w},b) & = \frac{1}{2}({w}_1^2 + {w}_2^2 + {w}_3^2) - \lambda_1({w}_1 + 2{w}_2 + 3{w}_3 +b -1 )\\& - \lambda_2(4{w}_1 + {w}_2 + 2{w}_3 +b - 1) - \lambda_3({w}_1 - 2{w}_2 + {w}_3 -b - 1 ) \\ \end{aligned}
其KKT条件为
{Lw1=w1λ14λ2λ3=0Lw2=w22λ1λ2+2λ3=0Lw3=w33λ12λ2λ3=0Lb=λ1λ2+λ3=0λ1(w1+2w2+3w3+b1)=0λ2(4w1+w2+2w3+b1)=0λ3(w12w2+w3+b1)=0λ10λ20λ30 \left\{ \begin{aligned} & \frac{\partial L}{\partial w_1} = w_1-\lambda_1-4\lambda_2-\lambda_3 =0 \\ & \frac{\partial L}{\partial w_2} = w_2 - 2\lambda_1 -\lambda_2 +2\lambda_3 = 0\\ & \frac{\partial L}{\partial w_3} = w_3 - 3\lambda_1 - 2\lambda_2 -\lambda_3 = 0 \\ & \frac{\partial L}{\partial b} = -\lambda_1 -\lambda_2 + \lambda_3 = 0 \\ &\lambda_1({w}_1 + 2{w}_2 + 3{w}_3 +b -1 ) = 0 \\ &\lambda_2(4{w}_1 + {w}_2 + 2{w}_3 +b - 1) = 0 \\ &\lambda_3({w}_1 - 2{w}_2 + {w}_3 +b - 1 ) = 0 \\ &\lambda_1\ge 0 \\ &\lambda_2\ge 0 \\ &\lambda_3\ge 0 \\ \end{aligned} \right.
解出
{λ1=0.1λ2=0λ3=0.1w1=0.2w2=0w3=0.4b=0.4 \left\{ \begin{aligned} & \lambda_1 = 0.1 \\ & \lambda_2 = 0 \\ & \lambda_3 = 0.1\\ & w_1 = 0.2 \\ & w_2 = 0 \\ & w_3 = 0.4\\ & b = -0.4 \end{aligned} \right.

拉格朗日对偶问题

从上一节的简单例子中,我们可以通过KKT条件求解SVM的问题,但是当样本数目特别多时,这种求解方法就明显力不从心了。因此需要寻找一种更简便的方法,而拉格朗日对偶问题是求解SVM的一种有效的方式。

原始问题

假设 f(x),ci(x),hj(x)f(x),c_i(x),h_j(x) 是定义在 Rn\R^n 上的连续可微函数,考虑约束最小化问题
{minxRnf(x)s.t.ci(x)0,i=1,2,,khj(x)=0,j=1,2,,l \left\{ \begin{aligned} & \min_{\boldsymbol{x} \in \R^n} f(\boldsymbol{x})\\ s.t. &c_i(\boldsymbol{x}) \le 0,i=1,2,\cdots,k\\ & h_j(\boldsymbol{x}) = 0, j=1,2,\cdots,l \end{aligned} \right.
称此约束优化问题为原始问题。

首先,引入广义拉格朗日函数
L(x,α,β)=f(x)+i=1kαici(x)+j=1lβihi(x) L(x,\boldsymbol{\alpha},\boldsymbol{\beta}) = f(\boldsymbol{x}) + \sum_{i=1}^k \alpha_i c_i(\boldsymbol{x}) + \sum_{j=1}^l \beta_i h_i(\boldsymbol{x})
这里的 x=[x1,x2,,xn]TRn\boldsymbol{x} = [x_1,x_2,\cdots,x_n]^T \in \R^nαi,βi\alpha_i,\beta_i 是拉格朗日乘子,αi0\alpha_i \ge 0 ,考虑 x\boldsymbol{x} 的函数:
θp(x)=maxα,β,αi0L(x,α,β) \boldsymbol{\theta}_p(\boldsymbol{x}) = \max_{\boldsymbol\alpha,\beta,\alpha_i\ge0} L(\boldsymbol x,\boldsymbol{\alpha},\boldsymbol{\beta})
这里的下标 pp 表示原始问题。针对 x\boldsymbol{x} ,可以分为两种情况分别考虑。

  1. 假设给定某个 x\boldsymbol x ,如果 x\boldsymbol x 违反原始问题的约束条件,也就是某个 ii 使得 ci(x)>0c_i(\boldsymbol{x})>0 或者存在某个 jj 使得 hj(x)0h_j(\boldsymbol{x})\neq 0 ,那么就有

θp(x)=maxα,β,αi0f(x)+i=1kαici(x)+j=1lβjhj(x)=+ \boldsymbol{\theta}_p(\boldsymbol{x}) = \max_{\boldsymbol\alpha,\beta,\alpha_i\ge0} f(\boldsymbol{x}) + \sum_{i=1}^k \alpha_i c_i(\boldsymbol{x}) + \sum_{j=1}^l \beta_j h_j(\boldsymbol{x}) = + \infty

上式是怎么来的呢?因为若某个 ii 使得 ci(x)>0c_i(\boldsymbol{x}) > 0 ,这个时候为求得最大值,不妨设 αi+\alpha_i \rightarrow + \infty ,其余参数不管怎样,都会有 θp(x)+\boldsymbol{\theta}_p(\boldsymbol{x}) \rightarrow +\infty ;如若存在某个 jj 使得 hj(x)0h_j(\boldsymbol{x})\neq 0 ,为求得最大值,我们不妨令 βjhj(x)+\beta_j h_j(\boldsymbol{x})\rightarrow + \infty ,同样不管其他参数如何,都会有 θp(x)+\boldsymbol{\theta}_p(\boldsymbol{x}) \rightarrow +\infty

  1. 假设给定某个 x\boldsymbol{x} ,如果 x\boldsymbol{x} 满足原始问题的约束条件,则有
    θp(x)=maxα,β,αi0f(x)+i=1kαici(x)+j=1lβjhj(x)=f(x) \boldsymbol{\theta}_p(\boldsymbol{x}) = \max_{\boldsymbol\alpha,\beta,\alpha_i\ge0} f(\boldsymbol{x}) + \sum_{i=1}^k \alpha_i c_i(\boldsymbol{x}) + \sum_{j=1}^l \beta_j h_j(\boldsymbol{x}) = f(\boldsymbol{x})
    因此,可以总结为
    θp(x)={f(x),x+, \boldsymbol{\theta}_p(\boldsymbol{x}) = \left\{ \begin{aligned} & f(\boldsymbol{x}) , &\boldsymbol{x}满足原始问题约束\\ & + \infty , &其他 \end{aligned} \right.
    这时,我们发现极小化问题
    minxθp(x)=minxmaxα,β,αi0L(x,α,β) \min_{\boldsymbol{x}} \boldsymbol{\theta}_p(\boldsymbol{x}) = \min_{\boldsymbol{x}} \max_{\boldsymbol\alpha,\beta,\alpha_i\ge0} L(\boldsymbol x,\boldsymbol{\alpha},\boldsymbol{\beta})
    和原始问题的优化是等价的,它们是有相同的解的。
对偶问题

我们直接给出结论:

在满足 f(x),ci(x),hj(x)f(x),c_i(x),h_j(x) 都是凸函数的条件下
minxmaxα,β,αi0L(x,α,β)=maxα,β,αi0minxL(x,α,β) \min_{\boldsymbol{x}} \max_{\boldsymbol\alpha,\beta,\alpha_i\ge0} L(\boldsymbol x,\boldsymbol{\alpha},\boldsymbol{\beta}) = \max_{\boldsymbol\alpha,\beta,\alpha_i\ge0} \min_{\boldsymbol{x}} L(\boldsymbol x,\boldsymbol{\alpha},\boldsymbol{\beta})
回到SVM的优化问题,并将其转化为对偶问题。
{minw12w2st.yi(wTxi+b)1,i=1,2,,NL(w,b,α)=12w2+i=1Nαi[1yi(wTxi+b)] \left\{ \begin{aligned} & \min_{\boldsymbol{w}} \frac{1}{2}||\boldsymbol{w}||^2 \\ & st.\boldsymbol{y}_i(\boldsymbol{w}^T\boldsymbol{x}_i+b) \ge1 ,i=1,2,\cdots,N\\ \end{aligned} \right. \\ L(\boldsymbol{w},b,\boldsymbol{\alpha}) = \frac{1}{2} \boldsymbol{w}^2 + \sum_{i=1}^N \alpha_i\big[1-y_i(\boldsymbol{w}^T\boldsymbol{x}_i+b)\big]
原始问题:minw,bmaxα,αi0L(w,b,α)\displaystyle \min_{\boldsymbol{w},b} \max_{\boldsymbol\alpha,\alpha_i\ge0} L(\boldsymbol{w},b,\boldsymbol{\alpha})

对偶问题:maxα,αi0minw,bL(w,b,α)\displaystyle\max_{\boldsymbol\alpha,\alpha_i\ge0} \min_{\boldsymbol{w},b} L(\boldsymbol{w},b,\boldsymbol{\alpha})

对于 minw,bL(w,b,α)\displaystyle \min_{\boldsymbol{w},b} L(\boldsymbol{w},b,\boldsymbol{\alpha})
Lw=0w=i=1NαixiyiLb=0i=1Nαiyi=0 \begin{aligned} \frac{\partial L}{\partial \boldsymbol{w}} = 0 &\Rightarrow w = \sum_{i=1}^N \alpha_i \boldsymbol{x}_i y_i \\ \frac{\partial L}{\partial b} = 0 &\Rightarrow \sum_{i=1}^N\alpha_iy_i=0 \end{aligned}
满足上述参数时,LL 关于 w,b\boldsymbol{w},b 取得最小值,接下来求解 maxα,αi0minw,bL(w,b,α)\displaystyle\max_{\boldsymbol\alpha,\alpha_i\ge0} \min_{\boldsymbol{w},b} L(\boldsymbol{w},b,\boldsymbol{\alpha}) ,将上述结果代入有
maxα12(i=1Nαixiyi)2+i=1Nαi[1(j=1Nαjxjyj)Txiyi]=maxα12(i=1Nαixiyi)T(i=1Nαixiyi)i=1Nαi(j=1Nαjxjyj)Txiyi+i=1Nαi=maxα12i=1Nj=1Nαiαjyiyj<xi,xj>+i=1Nαi{i=1Nαiyi=0αi[1yi(wTxi+b)]=0αi0,i=1,2,,N \begin{aligned} & \max_{\boldsymbol{\alpha}} \frac{1}{2} (\sum_{i=1}^N \alpha_i \boldsymbol{x}_i y_i )^2 + \sum_{i=1}^N \alpha_i\big[1-(\sum_{j=1}^N \alpha_j \boldsymbol{x}_j y_j )^T\boldsymbol{x}_i y_i\big] \\ = & \max_{\boldsymbol{\alpha}} \frac{1}{2} (\sum_{i=1}^N \alpha_i \boldsymbol{x}_i y_i )^T (\sum_{i=1}^N \alpha_i \boldsymbol{x}_i y_i ) - \sum_{i=1}^N \alpha_i (\sum_{j=1}^N \alpha_j \boldsymbol{x}_j y_j )^T \boldsymbol{x}_i y_i + \sum_{i=1}^N \alpha_i \\ = & \max_{\boldsymbol{\alpha}} -\frac{1}{2} \sum_{i=1}^N \sum_{j=1}^N \alpha_i \alpha_j y_i y_j<\boldsymbol{x}_i,\boldsymbol{x}_j> + \sum_{i=1}^N \alpha_i \\ \end{aligned} \\ 并且 \left\{ \begin{aligned} &\sum_{i=1}^N\alpha_iy_i=0 \\ &\alpha_i \big[1-y_i(\boldsymbol{w}^T\boldsymbol{x}_i+b)\big] =0 \\ &\alpha_i \ge 0,i=1,2,\cdots,N \end{aligned} \right.
从而转变为一个求解 αi\alpha_i 的优化问题,若求解出 αi\alpha_i ,则 w,b\boldsymbol{w},b 自然可以表示出来。
w=i=1Nαixiyib=1yiwTxyi,xS \boldsymbol{w} = \sum_{i=1}^N \alpha_i \boldsymbol{x}_i y_i \\ b = \frac{1-y_i\boldsymbol{w}^T\boldsymbol{x}}{y_i},\boldsymbol{x} \in S
其中, SS 表示支持向量的样本集合。从而有SVM的决策函数
y=(i=1Nαixiyi)Tx=i=1NαiyixiTx y = (\sum_{i=1}^N \alpha_i \boldsymbol{x}_i y_i)^T\boldsymbol{x} = \sum_{i=1}^N \alpha_i y_i \boldsymbol{x}_i^T \boldsymbol{x}

序列最小化算法(SMO)

上节最后得到的关于 α\boldsymbol{\alpha} 的式子是一个二次规划问题,使用通用算法开销比较大。SMO方法是1998年提出的,用于求取SVM中的拉格朗日乘子,比通用算法更加高效。

其主要思想为,选取两个变量 αi,αj\alpha_i,\alpha_j ,固定其他参数,对这两个参数进行优化,然后重复这个过程。

线性不可分时的核函数应用

在样本数据是线性不可分的情况中,自然上述的SVD无法解决,如下图(左)所示,椭圆内是一类,椭圆外是一类,自然无法用一条直线进行区分。这时,我们可以将原始数据进行一个空间映射。

[监督学习]之支持向量机
设原空间为 χR2,x=[x1,x3]Tχ\chi \subset \R^2,\boldsymbol{x} = [x_1,x_3]^T \in \chi ,新空间为 ZR2,z=[z1,z2]TZ\Zeta \in \R^2,\boldsymbol{z} = [z^1,z^2]^T \in \Zeta ,定义从原空间到新空间的映射为
z=ϕ(x)=[x12,x22]T \boldsymbol{z} = \phi(\boldsymbol{x})=[x_1^2,x_2^2]^T
经过变换 z=ϕ(x)\boldsymbol{z} = \phi(\boldsymbol{x}) ,原空间 χR2\chi \subset \R^2 变换为新空间 ZR2\Zeta \subset \R^2 ,原空间的点相应的变换为新空间的点,原空间的椭圆
w1x12+w2x22+b=0 w_1x_1^2 + w_2x_2^2 +b =0
变换为新空间的直线
w1z1+w2z2+b=0 w_1z_1+w_2z_2+b= 0
这样,就可以用普通的SVM进行处理了。由于SVD的求解过程的特殊性,即它并不需要明确知道每一个样本点的具体坐标,而仅仅需要两两样本间的内积,因此在SVD中的核函数并不需要知道变换后的坐标,仅需要变换后的内积即可。故有几种常见核函数:

  1. 多项式核函数
    K(x,z)=(xz+1)p K(\boldsymbol{x},\boldsymbol{z}) = (\boldsymbol{x} \cdot \boldsymbol{z} + 1)^p
    对应的SVM是一个 pp 次多项式分类器,在此情况下,分类决策函数为
    f(x)=sign(i=1Nαiyi(xix+1)p+b) \begin{aligned} f(\boldsymbol{x}) = sign \Big( \sum_{i=1}^N \alpha_i^* y_i(\boldsymbol{x}_i \cdot \boldsymbol{x} + 1)^p + b^* \Big) \end{aligned}

  2. 高斯核函数
    K(x,z)=exz22σ2 K(\boldsymbol{x},\boldsymbol{z}) = e^{-\frac{||\boldsymbol{x}-\boldsymbol{z}||^2}{2\sigma^2}}
    对应的SVM是一个高斯径向基函数分类器,在此情况下,分类决策函数为
    f(x)=sign(i=1Nαiyiexz22σ2+b) \begin{aligned} f(\boldsymbol{x}) = sign \Big( \sum_{i=1}^N \alpha_i^* y_ie^{-\frac{||\boldsymbol{x}-\boldsymbol{z}||^2}{2\sigma^2}} + b^* \Big) \end{aligned}

参考资料:支持向量机原理推导及Python实现

相关文章:

  • 2021-12-16
  • 2021-04-12
猜你喜欢
  • 2021-10-04
  • 2022-01-06
  • 2021-07-18
  • 2021-11-25
  • 2021-10-20
  • 2022-01-10
相关资源
相似解决方案