机器学习(四)——SVM(续)

本文介绍了SVM标准型的改进方法,通过拉格朗日乘数和对偶问题转换,重点讨论了核函数在处理线性和非线性数据集的作用,以及软间隔SVM的概念,包括误分类容忍度和优化目标。最后,概述了常用核函数及解决对偶问题的高效算法应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

之前的SVM标准型显然是一个凸二次规划问题,我们可以用二次规划的知识进行求解,得到目标的超平面,但其实我们还有更高效的方法。
先看之前的SVM标准型 m i n 1 2 ∣ ∣ ω ∣ ∣ 2 min \frac{1}{2}||\omega||^2 min21ω2 s . t . y ( i ) ( ω T x i + b ) ≥ 1 , i = 1 , 2 , ⋯   , n s.t. \quad y^{(i)}(\omega^Tx_i+b)\geq 1,i=1,2,\cdots,n s.t.y(i)(ωTxi+b)1,i=1,2,,n由拉格朗日乘数法的启发,我们改写一下该问题,令函数
L ( ω , α , b ) = 1 2 ∣ ∣ ω ∣ ∣ 2 + ∑ i = 1 m α i ( 1 − y i ( ω T x i + b ) ) L(\omega,\alpha,b)=\frac{1}{2}||\omega||^2+\sum_{i=1}^m\alpha_i(1-y_i(\omega^Tx_i+b)) L(ω,α,b)=21ω2+i=1mαi(1yi(ωTxi+b))由标准型条件能够发现
L ( ω , α , b ) ≤ 1 2 ∣ ∣ ω ∣ ∣ 2 L(\omega,\alpha,b)\leq\frac{1}{2}||\omega||^2 L(ω,α,b)21ω2 L ( ω , α , b ) L(\omega,\alpha,b) L(ω,α,b)为目标函数的一个下界,或者说我们的目标就是找到 L ( ω , α , b ) L(\omega,\alpha,b) L(ω,α,b)的最小上界,则目标变为求
m i n ω , b m a x α i ≥ 0 L ( ω , α , b ) min_{\omega,b}max_{\alpha_i\geq0}L(\omega,\alpha,b) minω,bmaxαi0L(ω,α,b)原问题不易求解,所以我们转而求其对偶问题:找出 L ( ω , α , b ) L(\omega,\alpha,b) L(ω,α,b)的最大下界 m a x α i ≥ 0 m i n ω , b L ( ω , α , b ) max_{\alpha_i\geq0}min_{\omega,b}L(\omega,\alpha,b) maxαi0minω,bL(ω,α,b)所以对 ω \omega ω b b b求偏导
∂ L ( ω , α , b ) ∂ ω = ω − ∑ i = 1 m α i y i x i \frac{\partial L(\omega,\alpha,b)}{\partial\omega}=\omega-\sum_{i=1}^m\alpha_iy_ix_i ωL(ω,α,b)=ωi=1mαiyixi
∂ L ( ω , α , b ) ∂ b = − ∑ i = 1 m α i y i \frac{\partial L(\omega,\alpha,b)}{\partial b}=-\sum_{i=1}^m\alpha_iy_i bL(ω,α,b)=i=1mαiyi令两偏导等于0,可以发现此时所取的值为 L ( ω , α , b ) L(\omega,\alpha,b) L(ω,α,b)的极小值,将所得的结果带入,对偶问题变为
m a x α i ≥ 0 ∑ i = 1 m α i − 1 2 ∑ i = 1 m ∑ j = 1 m α i α j y i y j x i T x j max_{\alpha_i\geq0}\quad\sum_{i=1}^m\alpha_i-\frac{1}{2}\sum_{i=1}^m\sum_{j=1}^m\alpha_i\alpha_jy_iy_jx_i^Tx_j maxαi0i=1mαi21i=1mj=1mαiαjyiyjxiTxj s . t . ∑ i = 1 m α i y i = 0 s.t.\quad\sum_{i=1}^m\alpha_iy_i=0 s.t.i=1mαiyi=0关于原问题与对偶问题最优取值的关系,我们有库恩-塔克条件(KKT条件)
{ α i ≥ 0 y i ( ω T x i + b ) − 1 ≥ 0 α i ( y i ( ω T x i + b ) − 1 ) = 0 \begin{cases} \alpha_i\geq0 \\ y_i(\omega^Tx_i+b)-1\geq0 \\ \alpha_i(y_i(\omega^Tx_i+b)-1)=0 \end{cases} αi0yi(ωTxi+b)10αi(yi(ωTxi+b)1)=0当满足此条件时,原问题与对偶问题的最优值相同。此时,针对该问题的对偶问题的解就对应着原问题的解,关于对偶问题,同样可以用二次规划来解决,但是效率也不高,人们就有一些高效的算法来处理这个问题(例如SMO算法)

上述的方法只能用于处理线性可分的数据集,但对于线性不可分的数据集,就需要用到我们接下来介绍的核函数技巧。

其实核函数技巧和之前的多变量线性回归的思路相同,同样是将有限维的数据映射到高维,显然,对于有限个属性,我们总能找到一个高维的特征空间使得样本分开。我们用 ϕ ( x ) \phi(x) ϕ(x)来表示将 x x x从低维映射到高维的一个特征向量。分类超平面即可表示为
f ( x ) = ω T ϕ ( x ) + b f(x)=\omega^T\phi(x)+b f(x)=ωTϕ(x)+b其SVM标准型为
m i n 1 2 ∣ ∣ ω ∣ ∣ 2 min \frac{1}{2}||\omega||^2 min21ω2 s . t . y ( i ) ( ω T ϕ ( x i ) + b ) ≥ 1 , i = 1 , 2 , ⋯   , n s.t. \quad y^{(i)}(\omega^T\phi(x_i)+b)\geq 1,i=1,2,\cdots,n s.t.y(i)(ωTϕ(xi)+b)1,i=1,2,,n对偶问题为
m a x α i ≥ 0 ∑ i = 1 m α i − 1 2 ∑ i = 1 m ∑ j = 1 m α i α j y i y j ϕ ( x i ) T ϕ ( x j ) max_{\alpha_i\geq0}\quad\sum_{i=1}^m\alpha_i-\frac{1}{2}\sum_{i=1}^m\sum_{j=1}^m\alpha_i\alpha_jy_iy_j\phi(x_i)^T\phi(x_j) maxαi0i=1mαi21i=1mj=1mαiαjyiyjϕ(xi)Tϕ(xj) s . t . ∑ i = 1 m α i y i = 0 s.t.\quad\sum_{i=1}^m\alpha_iy_i=0 s.t.i=1mαiyi=0接下来的难点就在于 ϕ ( x ) \phi(x) ϕ(x)的维数可能很高,直接计算十分麻烦,为了简化我们令
κ ( x i , x j ) = ⟨ ϕ ( x i ) , ϕ ( x j ) ⟩ = ϕ ( x i ) T ϕ ( x j ) \kappa(x_i,x_j)=\langle\phi(x_i),\phi(x_j)\rangle=\phi(x_i)^T\phi(x_j) κ(xi,xj)=ϕ(xi),ϕ(xj)=ϕ(xi)Tϕ(xj)那么对偶问题就变为
m a x α i ≥ 0 ∑ i = 1 m α i − 1 2 ∑ i = 1 m ∑ j = 1 m α i α j y i y j κ ( x i , x j ) max_{\alpha_i\geq0}\quad\sum_{i=1}^m\alpha_i-\frac{1}{2}\sum_{i=1}^m\sum_{j=1}^m\alpha_i\alpha_jy_iy_j\kappa(x_i,x_j) maxαi0i=1mαi21i=1mj=1mαiαjyiyjκ(xi,xj) s . t . ∑ i = 1 m α i y i = 0 s.t.\quad\sum_{i=1}^m\alpha_iy_i=0 s.t.i=1mαiyi=0接下来的问题就在于如何找到一个可行的 κ ( x i , x j ) \kappa(x_i,x_j) κ(xi,xj)
关于 κ ( x i , x j ) \kappa(x_i,x_j) κ(xi,xj),我们有如下定理:对于任意数据集 { x 1 , x 2 ⋯ x n } \{x_1,x_2\cdots x_n\} {x1,x2xn},由核函数导出的核矩阵
( κ ( x 1 , x 1 ) κ ( x 1 , x 2 ) κ ( x 1 , x 3 ) ⋯ κ ( x 1 , x n ) κ ( x 2 , x 1 ) κ ( x 2 , x 2 ) κ ( x 2 , x 3 ) ⋯ κ ( x 2 , x n ) ⋮ ⋮ ⋮ ⋱ ⋮ κ ( x n , x 1 ) κ ( x n , x 2 ) κ ( x n , x 3 ) ⋯ κ ( x n , x n ) ) \begin{pmatrix} \kappa(x_1,x_1) & \kappa(x_1,x_2) & \kappa(x_1,x_3) & \cdots & \kappa(x_1,x_n) \\ \kappa(x_2,x_1) & \kappa(x_2,x_2) & \kappa(x_2,x_3) & \cdots & \kappa(x_2,x_n) \\ \vdots & \vdots & \vdots & \ddots & \vdots \\ \kappa(x_n,x_1) & \kappa(x_n,x_2) & \kappa(x_n,x_3) & \cdots & \kappa(x_n,x_n) \\ \end{pmatrix} κ(x1,x1)κ(x2,x1)κ(xn,x1)κ(x1,x2)κ(x2,x2)κ(xn,x2)κ(x1,x3)κ(x2,x3)κ(xn,x3)κ(x1,xn)κ(x2,xn)κ(xn,xn)应是半正定且对称的,满足以上条件的函数才能够作为核函数。(证明见这里)
注意:对于任意一个给定的映射 ϕ ( x ) \phi(x) ϕ(x),我们都能够找到一个 κ ( x i , x j ) \kappa(x_i,x_j) κ(xi,xj)。同样,倘若核函数 κ ( x i , x j ) \kappa(x_i,x_j) κ(xi,xj)确定,那么映射 ϕ ( x ) \phi(x) ϕ(x)也就同样确定了。因此核函数的种类选择从根本上控制着这样一个SVM分类器的效果。(给定映射 ϕ ( x i , x j ) \phi(x_i,x_j) ϕ(xi,xj)找到 κ ( x i , x j ) \kappa(x_i,x_j) κ(xi,xj)很容易理解,给定 κ ( x i , x j ) \kappa(x_i,x_j) κ(xi,xj),找到原映射 ϕ ( x i , x j ) \phi(x_i,x_j) ϕ(xi,xj)的证明见这里
下面给出一些常用的核函数
在这里插入图片描述
这之后我们就可以利用之前解决这个对偶问题的高效算法来得出目标的分类超平面了。

这之前我们所介绍的数据集处理方法都是针对与线性可分(或是本身线性不可分,映射至高维空间后线性可分)的数据,但我们往往很难保证我们得到的分类超平面是否会出现过拟合的情况,也同样很难刚刚好能够使用一个常见的核函数将两组数据划分开来,为此我们需要自身这个模型允许一定的错误,这就是我们将要介绍的软间隔支持向量机,此前我们所讲的支持向量机都是硬间隔支持向量机。

本身允许一定的错误即存在某些点使得
y i ( ω T x i + b ) < 1 y_i(\omega^Tx_i+b)<1 yi(ωTxi+b)<1同时要保证误分类的点尽可能的少,优化的目标就变为
m i n 1 2 ∣ ∣ ω ∣ ∣ 2 + C ∑ i = 1 m l 0 / 1 ( y i ( ω T x i + b ) − 1 ) min\quad\frac{1}{2}||\omega||^2+C\sum_{i=1}^ml_{0/1}(y_i(\omega^Tx_i+b)-1) min21ω2+Ci=1ml0/1(yi(ωTxi+b)1)上式中的 l 0 / 1 l_{0/1} l0/1 l 0 / 1 ( z ) = { 1 , z < 0 0 , z ≥ 0 l_{0/1}(z)= \begin{cases} 1, & z<0 \\ 0, & z\geq0 \end{cases} l0/1(z)={1,0,z<0z0C被我们称作惩罚系数,C越大,对误分类点的容忍度越低。与之前一样,因为 l 0 / 1 l_{0/1} l0/1是一个不可导的非凸函数,难以优化,我们就用别的函数来代替这个 l 0 / 1 l_{0/1} l0/1函数。常用来代替损失函数的函数如下
在这里插入图片描述采用第一个代替损失函数,我们的问题就变为了
m i n 1 2 ∣ ∣ ω ∣ ∣ 2 + C ∑ i = 1 m m a x ( 0 , 1 − y i ( ω T x i + b ) ) min\quad\frac{1}{2}||\omega||^2+C\sum_{i=1}^mmax(0,1-y_i(\omega^Tx_i+b)) min21ω2+Ci=1mmax(0,1yi(ωTxi+b))引入松弛变量 ξ i \xi_i ξi问题变为 m i n 1 2 ∣ ∣ ω ∣ ∣ 2 + C ∑ i = 1 m ξ i min\quad\frac{1}{2}||\omega||^2+C\sum_{i=1}^m\xi_i min21ω2+Ci=1mξi s . t . y i ( ω T x i + b ) ≥ 1 − ξ i s.t.\quad y_i(\omega^Tx_i+b)\geq1-\xi_i s.t.yi(ωTxi+b)1ξi ξ i ≥ 0 i = 1 , 2 , ⋯   , m \xi_i\geq0\quad i=1,2,\cdots,m ξi0i=1,2,,m根据之前的对偶问题可以将目标函数转化为 L ( ω , b , α , ξ , μ ) = 1 2 ∣ ∣ ω ∣ ∣ 2 + C ∑ i = 1 m ξ i + ∑ i = 1 m α i ( 1 − ξ i − y i ( ω T x i + b ) ) + ∑ i = 1 m μ i ξ i L(\omega,b,\alpha,\xi,\mu)=\frac{1}{2}||\omega||^2+C\sum_{i=1}^m\xi_i+\sum_{i=1}^m\alpha_i(1-\xi_i-y_i(\omega^Tx_i+b))+\sum_{i=1}^m\mu_i\xi_i L(ω,b,α,ξ,μ)=21ω2+Ci=1mξi+i=1mαi(1ξiyi(ωTxi+b))+i=1mμiξi ω \omega ω b b b ξ \xi ξ求偏导并令其等于0得到 ω = ∑ i = 1 m α i y i x i \omega=\sum_{i=1}^m\alpha_iy_ix_i ω=i=1mαiyixi 0 = ∑ i = 1 m α i y i 0=\sum_{i=1}^m\alpha_iy_i 0=i=1mαiyi C = α i + μ i C=\alpha_i+\mu_i C=αi+μi代入得到 m a x α i ≥ 0 ∑ i = 1 m α i − 1 2 ∑ i = 1 m ∑ j = 1 m α i α j y i y j x i T x j max_{\alpha_i\geq0}\quad\sum_{i=1}^m\alpha_i-\frac{1}{2}\sum_{i=1}^m\sum_{j=1}^m\alpha_i\alpha_jy_iy_jx_i^Tx_j maxαi0i=1mαi21i=1mj=1mαiαjyiyjxiTxj s . t . ∑ i = 1 m α i y i = 0 s.t.\quad\sum_{i=1}^m\alpha_iy_i=0 s.t.i=1mαiyi=0 0 ≤ α i ≤ C i = 1 , 2 , ⋯   , m 0\leq\alpha_i\leq C\quad i=1,2,\cdots,m 0αiCi=1,2,,m同样要满足KKT条件 { α i ≥ 0 , μ i ≥ 0 y i ( ω T x i + b ) − 1 + ξ i ≥ 0 α i ( y i ( ω T x i + b ) − 1 + ξ i ) = 0 ξ i ≥ 0 , μ i ξ i = 0 \begin{cases} \alpha_i\geq0,\mu_i\geq0 \\ y_i(\omega^Tx_i+b)-1+\xi_i\geq0 \\ \alpha_i(y_i(\omega^Tx_i+b)-1+\xi_i)=0 \\ \xi_i\geq0,\mu_i\xi_i=0\end{cases} αi0,μi0yi(ωTxi+b)1+ξi0αi(yi(ωTxi+b)1+ξi)=0ξi0,μiξi=0换用其他的替代损失函数也可以参照这个方法处理,这之后再用之前的高效算法就能够求解。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值