SVM算法(一)预备知识

SVM(支持向量机)是一种强大的机器学习算法,被广泛用于分类和回归问题。本系列将简要介绍SVM的推导过程和基本应用。考虑到SVM涉及到繁杂的数学推导,第一篇先介绍下前置的数学知识。

一、感知机

感知机是SVM的基础,也蕴含了早期神经网络NN的思想。

感知机是一种用于求解二分类的判别式线性模型,其假设输入数据 { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . ( x i , y i ) . . . ( x N , y N ) } \{(x_1,y_1),(x_2,y_2),...(x_i,y_i)...(x_N,y_N)\} {(x1,y1),(x2,y2),...(xi,yi)...(xN,yN)}为正、负 { − 1 , 1 } \{-1, 1\} {1,1}两类,通过判断 f ( w , b ) = s i g n ( w x i + b ) f(w,b)=sign(wx_i+b) f(w,b)=sign(wxi+b)给出判别类型。
在这里插入图片描述
如何定义这种模型的损失函数呢?一种显而易见的方案是判别错误的样本数量 ∑ f ( x i ; w , b ) ≠ y i 1 \sum\limits_{f(x_i;w,b)\neq y_i}1 f(xi;w,b)=yi1,但其求解属于NP-hard问题。所以,一种替代方案方式是错误样本到分割直线的距离之和最短,即损失函数取: − ∑ i ∈ M 1 ∣ ∣ w ∣ ∣ ( y i ( w x i + b ) ) -\sum\limits_{i\in M}\frac{1}{||w||}(y_i(wx_i+b)) iMw1(yi(wxi+b))
其中 M M M为判断错误的点集合。对于某个分割面而言, w w w b b b同时放大和缩小若干倍,平面并不变化,也不影响距离计算结果。为方便计算,默认 ∣ ∣ w ∣ ∣ = 1 ||w||=1 w=1(实际迭代过程中,并不需要归一化,并不影响最终结果),即最终选取的损失函数为: − ∑ i ∈ M y i ( w x i + b ) -\sum\limits_{i\in M}y_i(wx_i+b) iMyi(wxi+b)
在迭代过程中,采用随机梯度下降策略,即迭代公式为:
w ← w + μ x i y i b ← b + μ y i \begin{aligned}& w\leftarrow w+\mu x_iy_i\\& b\leftarrow b+\mu y_i\end{aligned} ww+μxiyibb+μyi
整个感知机的迭代过程可概括为:

  1. 选取初始 w 0 w_0 w0, b 0 b_0 b0
  2. 选择某个训练点 ( x i , y i ) (x_i,y_i) (xi,yi)
  3. 判断是否为当前模型误分点,即 y i ( w x i + b ) < 0 y_i(wx_i+b)<0 yi(wxi+b)<0。如果是,则不断更新模型参数,直至该点不被误分: w ← w + μ x i y i b ← b + μ y i \begin{aligned}& w\leftarrow w+\mu x_iy_i\\& b\leftarrow b+\mu y_i\end{aligned} ww+μxiyibb+μyi
  4. 转到步骤2,直至整个训练集中无误分点,或达到预设的迭代终止条件。

注意到在上述整个迭代公式中, w w w b b b的更新分别为对各错误点 x i y i x_iy_i xiyi y i y_i yi的迭加。因此, w w w b b b可表示为:
w = ∑ i α i x i y i b = ∑ i α i y i \begin{aligned}&w=\sum_i\alpha_ix_iy_i\\&b=\sum_i\alpha_iy_i\end{aligned} w=iαixiyib=iαiyi
其中 α i = n i μ \alpha_i=n_i\mu αi=niμ,即为各点总共被误分次数与学习率 μ \mu μ的积。
这也就是对偶形式算法的基本思想。其迭代过程可整理为:

  1. 选取初始 α = [ α 1 , . . . α i , . . . , α N ] \boldsymbol \alpha=[\alpha_1,...\alpha_i,...,\alpha_N] α=[α1,...αi,...,αN]
  2. 选择某个训练点 ( x i , y i ) (x_i,y_i) (xi,yi)
  3. 判断是否为当前模型误分点,即 y i ( ∑ j α j y j ( x j ∗ x i ) + ∑ j α j y j ) < 0 y_i(\sum\limits_j\alpha_jy_j(x_j*x_i)+\sum\limits_j\alpha_jy_j)<0 yi(jαjyj(xjxi)+jαjyj)<0。如果是,则不断更新模型参数,直至该点不被误分: α i ← α i + μ \alpha_i\leftarrow \alpha_i+\mu αiαi+μ
  4. 转到步骤2,直至整个训练集中无误分点,或达到预设的迭代终止条件。

相较于原始算法,对偶形式算法可以通过保存内积矩阵 [ x i , x j ] [x_i,x_j] [xi,xj](即Gram矩阵)以进行更迭,特别适用于样本特征数高的情况。
也就是说:当数据特征过高时,可通过对偶形式保存样本内积,加速迭代;而当数据量过高时,可直接使用原始形式进行迭代。

二、拉格朗日对偶性

考虑带约束的最优化问题:
min ⁡ x f ( x ) s . t .    c i ( x ) < = 0 , i = 1 , 2... , k h j ( x ) = 0 , j = 1 , 2... , l \begin{aligned} &\min\limits_xf(x) \\ s.t. \space\space &c_i(x)<=0,i=1,2...,k\\&h_j(x)=0,j=1,2...,l\end{aligned} s.t.  xminf(x)ci(x)<=0,i=1,2...,khj(x)=0,j=1,2...,l
其中 f ( x ) , c ( x ) , h ( x ) f(x),c(x),h(x) f(x),c(x),h(x)均为连续可微函数。
对应的广义拉格朗日函数为:
L ( x , α , β ) = f ( x ) + ∑ i = 1 k α i c i ( x ) + ∑ i = 1 k β i h i ( x ) L(x,\alpha,\beta)=f(x)+\sum\limits_{i=1}^k\alpha_ic_i(x)+\sum\limits_{i=1}^k\beta_ih_i(x) L(x,α,β)=f(x)+i=1kαici(x)+i=1kβihi(x)
其中 α i \alpha_i αi, β i \beta_i βi为拉格朗日算子,且 α i ≥ 0 \alpha_i\ge0 αi0

2.1 广义拉格朗日的极大极小问题

广义拉格朗日的极大极小问题可写成: min ⁡ x max ⁡ α ≥ 0 , β L ( x , α , β ) \min\limits_x\max\limits_{\alpha\ge0,\beta}L(x,\alpha, \beta) xminα0,βmaxL(x,α,β)
首先观察内部的极大问题: θ p ( x ) = max ⁡ α ≥ 0 , β L ( x , α , β ) \theta_p(x)=\max\limits_{\alpha\ge0,\beta}L(x,\alpha, \beta) θp(x)=α0,βmaxL(x,α,β)
注意到若 c ( x ) c(x) c(x) h ( x ) h(x) h(x)不严格满足最优化条件中的约束条件,则存在 α i → + ∞ \alpha_i\rightarrow +\infin αi+ β i h i ( x ) → + ∞ \beta_ih_i(x)\rightarrow +\infin βihi(x)+,使得 θ p ( x ) = + ∞ \theta_p(x)=+\infin θp(x)=+。若 c ( x ) c(x) c(x) h ( x ) h(x) h(x)严格满足最优化条件中的约束条件,则 θ p ( x ) = f ( x ) \theta_p(x)=f(x) θp(x)=f(x)。所以, min ⁡ θ p ( x ) \min\theta_p(x) minθp(x)和原最优化目标等效。
也就是说,广义拉格朗日的极大极小问题等效于原始最优化问题。
原问题的最优解可写成 p ∗ = min ⁡ θ p ( x ) p^*=\min\theta_p(x) p=minθp(x)

2.2 广义拉格朗日的极小极大问题

广义拉格朗日的极小极大问题可写成:
max ⁡ α ≥ 0 , β min ⁡ x L ( x , α , β ) \max\limits_{\alpha\ge0,\beta}\min\limits_xL(x,\alpha, \beta) α0,βmaxxminL(x,α,β)
首先观察内部的极小问题:
θ D ( α , β ) = min ⁡ x L ( x , α , β ) \theta_D(\alpha, \beta)=\min\limits_{x}L(x,\alpha, \beta) θD(α,β)=xminL(x,α,β)
此时 α , β \alpha,\beta α,β为超参数,仅 x x x为变量,便于求解。在求出对应的 x x x后再求解最佳的 α \alpha α β \beta β,从而简化原始问题。
广义拉格朗日的极小极大问题亦称为原始问题的对偶问题。对偶问题的解可写作: d ∗ = max ⁡ α ≥ 0 , β θ D ( α , β ) d^*=\max\limits_{\alpha\ge0,\beta}\theta_D(\alpha, \beta) d=α0,βmaxθD(α,β)

2.3 原始问题和对偶问题的关系

θ D ( α , β ) = min ⁡ x L ( x , α , β ) ≤ L ( x , α , β ) ≤ θ p ( x ) ≤ max ⁡ α ≥ 0 , β L ( x , α , β ) = θ p ( x ) \theta_D(\alpha, \beta)=\min\limits_{x}L(x,\alpha, \beta)\le L(x,\alpha,\beta)\le\theta_p(x)\le\max\limits_{\alpha\ge0,\beta}L(x,\alpha, \beta)=\theta_p(x) θD(α,β)=xminL(x,α,β)L(x,α,β)θp(x)α0,βmaxL(x,α,β)=θp(x)
可知: d ∗ ≤ p ∗ d^*\le p^* dp,即对偶问题的解不大于原始问题的解

2.4 Slater条件和KKT条件

通过增强条件,可使得 d ∗ = p ∗ d^*= p^* d=p,即存在 x ∗ , α ∗ , β ∗ x^*,\alpha^*,\beta^* x,α,β同时为原始问题和对偶问题的解,也称强对偶。这些条件包括:
1)目标函数 f ( x ) f(x) f(x)为凸函数
2) 约束条件 h j ( x ) h_j(x) hj(x) c ( x ) c(x) c(x)所构成的可行域为凸集
3) c ( x ) c(x) c(x)是严格可行的,即存在 x x x,对于所有的 i i i,有 c i ( x ) < 0 c_i(x)<0 ci(x)<0
这也称为Slater条件。Slater条件是强对偶的充分非必要条件,常用来判断强对偶的满足与否,从而将原始问题转化为对偶问题。

那又如何求满足强对偶的解呢?这就是KKT条件要求解的问题。
若满足强对偶条件,则原问题和对偶问题的共同解,可通过如下KKT条件求解:
∇ x L ( x ∗ , α ∗ , β ∗ ) = 0 α i ∗ c i ( x ) = 0 α i ∗ ≥ 0 c i ( x ) ≤ 0 h j ( x ) = 0 \begin{aligned} &\nabla_xL(x^*,\alpha^*,\beta^*)=0\\& \alpha^*_ic_i(x)=0\\&\alpha^*_i\ge0\\&c_i(x)\le0\\&h_j(x)=0\end{aligned} xL(x,α,β)=0αici(x)=0αi0ci(x)0hj(x)=0对比原始问题和KKT条件,不满发现唯一的变化在于多了如下条件: α i ∗ c i ( x ) = 0 \alpha_i^*c_i(x)=0 αici(x)=0 α i ∗ \alpha_i^* αi c i ( x ) c_i(x) ci(x)中至少有一个为0。

2.5 利用拉格朗日对偶性的一般步骤

通过拉格朗日对偶性求解最优化问题采用了一种变量分离的策略,即通过分别求解不同的自变量求得最终的优化问题。
总结下利用拉格朗日对偶性简化问题的一般步骤:
1)定义原始问题的最优化目标和约束条件,并明确是否满足凸函数的基本定义,判断是否为强对偶问题;
2)将原始问题转对偶问题;
3)利用KKT条件,求解对偶问题;
4)满足上述各条件的解,即为原始条件的解。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值