SVM(Support Vector Machine)分类器详解

2024-08-21 11:08

本文主要是介绍SVM(Support Vector Machine)分类器详解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1. 拉格朗日乘子(Lagrange multiplier)法求解条件极值

1.1 拉格朗日乘子的简单描述

简单的条件极值问题可以描述为:求函数 z = f ( x , y ) z=f(x,y) z=f(x,y)的最大值,且 x , y x,y x,y满足约束条件 φ ( x , y ) = M \varphi (x,y)=M φ(x,y)=M( M M M已知)。
拉格朗日乘子的求解步骤为:

  • 设置一个联合函数,令:
    F ( x , y , λ ) = f ( x , y ) + λ ( M − φ ( x , y ) ) F(x,y,\lambda)=f(x,y)+\lambda (M-\varphi (x,y)) F(x,y,λ)=f(x,y)+λ(Mφ(x,y))

  • F ( x , y , λ ) F(x,y,\lambda) F(x,y,λ)分别对变量 x , y , λ x, y, \lambda x,y,λ求偏导,然后令偏导数为0
    ∂ F ( x , y , λ ) ∂ x = 0 \frac {\partial F(x,y,\lambda)}{\partial x}=0 xF(x,y,λ)=0
    ∂ F ( x , y , λ ) ∂ y = 0 \frac {\partial F(x,y,\lambda)}{\partial y}=0 yF(x,y,λ)=0
    ∂ F ( x , y , λ ) ∂ λ = 0 \frac {\partial F(x,y,\lambda)}{\partial \lambda}=0 λF(x,y,λ)=0

  • 根据上式分别求解出所有满足条件的 ( x , y , λ ) (x,y,\lambda) (x,y,λ),然后将所有的 ( x , y ) (x,y) (x,y)值对代入函数 f ( x , y ) f(x,y) f(x,y)中,取其最大最小值分别为函数在满足约束条件下的最大最小值。

简单的求解例子:

  1. 给定椭球 x 2 a 2 + y 2 b 2 + z 2 c 2 = 1 \frac {x^2}{a^2}+\frac {y^2}{b^2}+\frac {z^2}{c^2}=1 a2x2+b2y2+c2z2=1,求椭球的最大内接长方体体积。
    椭球内接长方体体积为 f ( x , y , z ) = x y z f(x,y,z)=xyz f(x,y,z)=xyz,因此可以转换为求函数 f ( x , y , z ) f(x,y,z) f(x,y,z)的最大值。通过拉格朗日乘子法转化为:
    F ( x , y , z , λ ) = f ( x , y , z ) + λ ( M − φ ( x , y , z ) ) = 8 x y z + λ ( 1 − x 2 a 2 + y 2 b 2 + z 2 c 2 ) \begin{align} F(x,y,z,\lambda)&=f(x,y,z)+\lambda (M-\varphi (x,y,z))\\ &=8xyz+\lambda(1-\frac {x^2}{a^2}+\frac {y^2}{b^2}+\frac {z^2}{c^2}) \end{align} F(x,y,z,λ)=f(x,y,z)+λ(Mφ(x,y,z))=8xyz+λ(1a2x2+b2y2+c2z2)
    分别对 x , y , z , λ x,y,z,\lambda x,y,z,λ求偏导,得:
    ∂ F ( x , y , z , λ ) ∂ x = 8 y z − 2 λ x a 2 = 0 ∂ F ( x , y , z , λ ) ∂ y = 8 x z − 2 λ y a 2 = 0 ∂ F ( x , y , z , λ ) ∂ z = 8 x y − 2 λ z a 2 = 0 ∂ F ( x , y , z , λ ) ∂ λ = 1 − x 2 a 2 + y 2 b 2 + z 2 c 2 = 0 \begin{align} &\frac {\partial F(x,y,z,\lambda)}{\partial x}=8yz-\frac {2\lambda x}{a^2}=0 \\ &\frac {\partial F(x,y,z,\lambda)}{\partial y}=8xz-\frac {2\lambda y}{a^2}=0 \\ &\frac {\partial F(x,y,z,\lambda)}{\partial z}=8xy-\frac {2\lambda z}{a^2}=0 \\ &\frac {\partial F(x,y,z,\lambda)}{\partial \lambda}=1-\frac {x^2}{a^2}+\frac {y^2}{b^2}+\frac {z^2}{c^2}=0 \end{align} xF(x,y,z,λ)=8yza22λx=0yF(x,y,z,λ)=8xza22λy=0zF(x,y,z,λ)=8xya22λz=0λF(x,y,z,λ)=1a2x2+b2y2+c2z2=0
    最后解得:
    x = 3 3 a y = 3 3 b z = 3 3 c λ = 4 3 3 a b c f m a x ( x , y , z ) = 3 9 a b c \begin{align} x=\frac {\sqrt 3}{3}a \hspace{0.5cm} &y=\frac {\sqrt 3}{3}b \hspace{0.5cm} z=\frac {\sqrt 3}{3}c \hspace{0.5cm} \lambda=\frac {4\sqrt 3}{3}abc\\ &f_{max}(x,y,z)=\frac {\sqrt 3}{9}abc \end{align} x=33 ay=33 bz=33 cλ=343 abcfmax(x,y,z)=93 abc

  2. 求抛物旋转面 z = x 2 + y 2 z=x^2+y^2 z=x2+y2与平面 x + y + z = 1 x+y+z=1 x+y+z=1的交线到坐标原点的最近最远点。
    目标函数为 f ( x , y , z ) = x 2 + y 2 + z 2 f(x,y,z)=x^2+y^2+z^2 f(x,y,z)=x2+y2+z2,限制条件为 φ 1 ( x , y , z ) = z − x 2 − y 2 \varphi_1(x,y,z)=z-x^2-y^2 φ1(x,y,z)=zx2y2 φ 2 ( x , y , z ) = 1 − x − y − z \varphi_2(x,y,z)=1-x-y-z φ2(x,y,z)=1xyz
    F ( x , y , z , λ 1 , λ 2 ) = x 2 + y 2 + z 2 + λ 1 ( z − x 2 − y 2 ) + λ 2 ( 1 − x − y − z ) F(x,y,z,\lambda_1,\lambda_2)=x^2+y^2+z^2+\lambda_1(z-x^2-y^2)+\lambda_2(1-x-y-z) F(x,y,z,λ1,λ2)=x2+y2+z2+λ1(zx2y2)+λ2(1xyz)
    分别对 x , y , z , λ 1 , λ 2 x,y,z,\lambda_1,\lambda_2 x,y,z,λ1,λ2求偏导,得:
    ∂ F ( x , y , z , λ 1 , λ 2 ) ∂ x = 2 x − 2 λ 1 x − λ 2 = 0 ∂ F ( x , y , z , λ 1 , λ 2 ) ∂ y = 2 y − 2 λ 1 y − λ 2 = 0 ∂ F ( x , y , z , λ 1 , λ 2 ) ∂ z = 2 z − 2 λ 1 z − λ 2 = 0 ∂ F ( x , y , z , λ 1 , λ 2 ) ∂ λ 1 = z − x 2 − y 2 = 0 ∂ F ( x , y , z , λ 1 , λ 2 ) ∂ λ 2 = 1 − x − y − z = 0 \begin{align} &\frac {\partial F(x,y,z,\lambda_1,\lambda_2)}{\partial x}=2x-2\lambda_1 x-\lambda_2=0 \\ &\frac {\partial F(x,y,z,\lambda_1,\lambda_2)}{\partial y}=2y-2\lambda_1 y-\lambda_2=0 \\ &\frac {\partial F(x,y,z,\lambda_1,\lambda_2)}{\partial z}=2z-2\lambda_1 z-\lambda_2=0 \\ &\frac {\partial F(x,y,z,\lambda_1,\lambda_2)}{\partial \lambda_1}=z-x^2-y^2=0 \\ &\frac {\partial F(x,y,z,\lambda_1,\lambda_2)}{\partial \lambda_2}=1-x-y-z=0 \\ \end{align} xF(x,y,z,λ1,λ2)=2x2λ1xλ2=0yF(x,y,z,λ1,λ2)=2y2λ1yλ2=0zF(x,y,z,λ1,λ2)=2z2λ1zλ2=0λ1F(x,y,z,λ1,λ2)=zx2y2=0λ2F(x,y,z,λ1,λ2)=1xyz=0
    解得两个候选点为:
    M 1 ( − 1 + 3 2 , − 1 + 3 2 , 2 + 3 ) M 2 ( 3 − 1 2 , 3 − 1 2 , 2 − 3 ) \begin{align} &M_1(-\frac {1+\sqrt 3}{2},-\frac {1+\sqrt 3}{2},2+\sqrt 3)\\ &M_2(\frac {\sqrt 3-1}{2},\frac {\sqrt 3-1}{2},2-\sqrt 3) \end{align} M1(21+3 ,21+3 ,2+3 )M2(23 1,23 1,23 )
    求得
    O M 1 = 9 + 5 3 O M 2 = 9 − 5 3 OM_1=\sqrt {9+5\sqrt 3} \hspace{2cm} OM_2=\sqrt {9-5\sqrt 3} OM1=9+53 OM2=953
    因此 f ( x , y , z ) f(x,y,z) f(x,y,z)的最大值为 9 + 5 3 \sqrt {9+5\sqrt 3} 9+53 ,最小值为 9 − 5 3 \sqrt {9-5\sqrt 3} 953

1.2 拉格朗日乘子法的一般性描述

x ⃗ = ( x 1 , x 2 , ⋯ , x m ) \vec x=(x_1,x_2,\cdots,x_m) x =(x1,x2,,xm)满足约束条件:
h i ( x ⃗ ) = H i i = 1 , 2 , ⋯ , n h_i(\vec x)=H_i \hspace{1cm} i=1,2,\cdots,n hi(x )=Hii=1,2,,n
f ( x ⃗ ) f(\vec x) f(x )的极值问题。
此时,令:
F ( x ⃗ , λ 1 , λ 2 , ⋯ , λ n ) = f ( x ⃗ ) + λ 1 ( H 1 − h 1 ( x ⃗ ) ) − λ 2 ( H 2 − h 2 ( x ⃗ ) ) − ⋯ − λ n ( H n − h n ( x ⃗ ) ) F(\vec x,\lambda_1,\lambda_2,\cdots,\lambda_n)=f(\vec x)+\lambda_1(H_1-h_1(\vec x))-\lambda_2(H_2-h_2(\vec x))-\cdots-\lambda_n(H_n-h_n(\vec x)) F(x ,λ1,λ2,,λn)=f(x )+λ1(H1h1(x ))λ2(H2h2(x ))λn(Hnhn(x ))
然后 F ( x ⃗ , λ 1 , λ 2 , ⋯ , λ n ) F(\vec x,\lambda_1,\lambda_2,\cdots,\lambda_n) F(x ,λ1,λ2,,λn)分别对 x 1 , x 2 , ⋯ , x n , λ 1 , λ 2 , ⋯ , λ n x_1,x_2,\cdots,x_n,\lambda_1,\lambda_2,\cdots,\lambda_n x1,x2,,xn,λ1,λ2,,λn求偏导,得:
∂ F ( x ⃗ , λ ⃗ ) x i = 0 i = 1 , 2 ⋯ , m ∂ F ( x ⃗ , λ ⃗ ) λ j = 0 j = 1 , 2 ⋯ , n \frac {\partial F(\vec x, \vec \lambda)}{x_i} =0 \hspace{1cm} i=1,2\cdots,m \\ \frac {\partial F(\vec x, \vec \lambda)}{\lambda_j} =0 \hspace{1cm} j=1,2\cdots,n xiF(x ,λ )=0i=1,2,mλjF(x ,λ )=0j=1,2,n
最后求出 x ⃗ \vec x x 的候选值,代入 f ( x ⃗ ) f(\vec x) f(x )取其最小值即可。

2. 具有不等式约束条件(Karush–Kuhn–Tucker conditions KKT)下的极值问题

x ⃗ \vec x x 满足不等式约束条件时,求 f ( x ⃗ ) f(\vec x) f(x )的极值,即当 x x x满足 g k ( x ⃗ ) ≤ 0 g_k(\vec x) \le 0 gk(x )0 f ( x ) f(x) f(x)的极值, k = 1 , 2 , ⋯ , n k=1,2,\cdots,n k=1,2,,n
下面先定义一个函数 L ( x , μ ) L(x,\mu) L(x,μ)来将 f ( x ) f(x) f(x) g k ( x ) g_k(x) gk(x)结合到一起:
L ( x , μ ) = f ( x ) + ∑ k = 1 n μ k g k ( x ) L(x, \mu)=f(x)+\sum_{k=1}^n\mu_kg_k(x) L(x,μ)=f(x)+k=1nμkgk(x)
注意 x , μ x, \mu x,μ都是向量,其满足如下两个约束条件:
{ u k ≥ 0 g k ( x ) ≤ 0 = > μ k g k ( x ) ≤ 0 k = 1 , 2 , ⋯ , n \begin{equation} \left\{ \begin{aligned} &u_k\ge 0\\ &g_k(x)\le 0\\ \end{aligned} \right. \hspace{1cm}=> \mu_kg_k(x)\le 0 \hspace{1cm} k=1,2,\cdots,n \end{equation} {uk0gk(x)0=>μkgk(x)0k=1,2,,n
因此
max ⁡ u L ( x , μ ) = f ( x ) \max \limits_uL(x,\mu)=f(x) umaxL(x,μ)=f(x)
则:
min ⁡ x f ( x ) = min ⁡ x max ⁡ μ L ( x , μ ) \min\limits_xf(x)=\min\limits_x\max\limits_\mu L(x,\mu) xminf(x)=xminμmaxL(x,μ)
接下来,先求 max ⁡ μ min ⁡ x L ( x , μ ) \max\limits_\mu\min\limits_xL(x,\mu) μmaxxminL(x,μ)的值。
max ⁡ μ min ⁡ x L ( x , μ ) = max ⁡ μ [ min ⁡ x f ( x ) + min ⁡ x ∑ k = 1 n μ k g k ( x ) ] = max ⁡ μ min ⁡ x f ( x ) + max ⁡ μ min ⁡ x ∑ k = 1 n μ k g k ( x ) = min ⁡ x f ( x ) + max ⁡ μ min ⁡ x ∑ k = 1 n μ k g k ( x ) \begin{align} \max\limits_\mu\min\limits_xL(x,\mu)&=\max\limits_\mu[\min\limits_xf(x)+\min\limits_x\sum_{k=1}^n\mu_kg_k(x)]\\ &=\max\limits_\mu\min\limits_xf(x)+\max\limits_\mu\min\limits_x\sum_{k=1}^n\mu_kg_k(x)\\ &=\min\limits_xf(x)+\max\limits_\mu\min\limits_x\sum_{k=1}^n\mu_kg_k(x) \end{align} μmaxxminL(x,μ)=μmax[xminf(x)+xmink=1nμkgk(x)]=μmaxxminf(x)+μmaxxmink=1nμkgk(x)=xminf(x)+μmaxxmink=1nμkgk(x)
又由于:
{ u k ≥ 0 g k ( x ) ≤ 0 = > min ⁡ x u k g k ( x ) = { 0 u k = 0 o r g k ( x ) = 0 − ∞ u k > 0 a n d g k ( x ) < 0 \begin{equation} \left\{ \begin{aligned} &u_k\ge 0\\ &g_k(x)\le 0\\ \end{aligned} \right. \hspace{1cm}=> \min\limits_xu_kg_k(x)=\{ \begin{aligned} &0 \hspace{2.0cm} u_k=0 \hspace{0.2cm} or \hspace{0.2cm} g_k(x)=0\\ &-\infty \hspace{1.45cm} u_k > 0\hspace{0.2cm} and \hspace{0.2cm} g_k(x)<0 \end{aligned} \end{equation} {uk0gk(x)0=>xminukgk(x)={0uk=0orgk(x)=0uk>0andgk(x)<0
因此:
max ⁡ μ min ⁡ x ∑ k = 1 n u k g k ( x ) = 0 \max\limits_\mu\min\limits_x\sum_{k=1}^nu_kg_k(x)=0 μmaxxmink=1nukgk(x)=0
当且仅当 μ = 0 \mu=0 μ=0或者 g ( x ) = 0 g(x)=0 g(x)=0,故:
max ⁡ μ min ⁡ x L ( x , μ ) = min ⁡ x f ( x ) + max ⁡ μ min ⁡ x ∑ k = 1 n μ k g k ( x ) = min ⁡ x f ( x ) \begin{align} \max\limits_\mu\min\limits_xL(x,\mu)&=\min\limits_xf(x)+\max\limits_\mu\min\limits_x\sum_{k=1}^n\mu_kg_k(x)\\ &=\min\limits_xf(x) \end{align} μmaxxminL(x,μ)=xminf(x)+μmaxxmink=1nμkgk(x)=xminf(x)
由上面的式子可得:
min ⁡ x f ( x ) = min ⁡ x max ⁡ μ L ( x , μ ) = max ⁡ μ min ⁡ x L ( x , μ ) \min\limits_xf(x)=\min\limits_x\max\limits_\mu L(x,\mu)=\max\limits_\mu\min\limits_xL(x,\mu) xminf(x)=xminμmaxL(x,μ)=μmaxxminL(x,μ)
因此我们把 max ⁡ μ min ⁡ x L ( x , μ ) \max\limits_\mu\min\limits_xL(x,\mu) μmaxxminL(x,μ)称为原问题 min ⁡ x max ⁡ μ L ( x , μ ) \min\limits_x\max\limits_\mu L(x,\mu) xminμmaxL(x,μ)对偶问题(dual problem)
更一般的,求 min ⁡ f ( x ) \min f(x) minf(x),我们同时加上等式约束和不等式约束:
h i ( x ) = 0 g j ( x ) ≤ 0 \begin{align} h_i(x)=0\\ g_j(x)\le0 \end{align} hi(x)=0gj(x)0
令:
L ( x , α , β ) = f ( x ) + α h i ( x ) + β g j ( x ) L(x,\alpha,\beta)=f(x)+\alpha h_i(x)+\beta g_j(x) L(x,α,β)=f(x)+αhi(x)+βgj(x)
我们对 g ( x ) g(x) g(x)加上一个松弛变量 t t t,即令 g j ′ ( x ) = g j ( x ) + t 2 g'_j(x)=g_j(x)+t^2 gj(x)=gj(x)+t2,且满足:
g j ′ ( x ) = g j ( x ) + t 2 = 0 g'_j(x)=g_j(x)+t^2=0 gj(x)=gj(x)+t2=0
则:
L ( x , α , β , t ) = f ( x ) + α h i ( x ) + β ( g j ( x ) + t 2 ) L(x,\alpha,\beta,t)=f(x)+\alpha h_i(x)+\beta (g_j(x)+t^2) L(x,α,β,t)=f(x)+αhi(x)+β(gj(x)+t2)
接下来使用拉格朗日乘子法解决之:
∂ L ( x , α , β , t ) ∂ x = ∂ f ( x ) ∂ x + α ∂ h i ( x ) ∂ x + β ∂ g i ( x ) ∂ x = 0 ∂ L ( x , α , β , t ) ∂ α = h i ( x ) = 0 ∂ L ( x , α , β , t ) ∂ β = g i ( x ) + t 2 = 0 ∂ L ( x , α , β , t ) ∂ t = 2 t β = 0 \begin{align} \frac {\partial L(x,\alpha,\beta,t)}{\partial x}&=\frac {\partial f(x)}{\partial x}+\alpha \frac{\partial h_i(x)}{\partial x}+\beta \frac{\partial g_i(x)}{\partial x}=0\\ \frac {\partial L(x,\alpha,\beta,t)}{\partial \alpha}&=h_i(x)=0\\ \frac {\partial L(x,\alpha,\beta,t)}{\partial \beta}&=g_i(x)+t^2=0\\ \frac {\partial L(x,\alpha,\beta,t)}{\partial t}&=2t\beta=0 \end{align} xL(x,α,β,t)αL(x,α,β,t)βL(x,α,β,t)tL(x,α,β,t)=xf(x)+αxhi(x)+βxgi(x)=0=hi(x)=0=gi(x)+t2=0=2=0
代入求得:
max ⁡ μ min ⁡ x L ( x , α , β ) = min ⁡ x f ( x ) = f ( x ∗ ) \max\limits_\mu\min\limits_xL(x,\alpha, \beta)=\min\limits_xf(x)=f(x^*) μmaxxminL(x,α,β)=xminf(x)=f(x)
x ∗ x^* x满足条件:
h i ( x ) = 0 β g j ( x ) = 0 h_i(x)=0\\ \beta g_j(x)=0 hi(x)=0βgj(x)=0
又由于 g j ( x ) ≤ 0 g_j(x)\le 0 gj(x)0,则必须要满足 β = 0 \beta=0 β=0或者 g j ( x ) = 0 g_j(x)=0 gj(x)=0

3. 为何拉格朗日乘子法和 K K T KKT KKT条件能够得到最优值

设目标函数 z = f ( x ) z=f(x) z=f(x) x x x是向量,先将 f ( x ) f(x) f(x)投影到 x x x所在的平面上,因此可以得到一系列等高线:
这里写图片描述
其中虚线是等高线,现假设红线是约束 g ( x ) = M g(x)=M g(x)=M,其中红线与等高线的交点就是满足约束条件的所有 x x x,但交点肯定不是最优值,因为相交意味着肯定还存在其它的等高线在该条等高线的内部或者外部,使得新的等高线与目标函数的交点的值更大或者更小,只有到等高线与目标函数的曲线相切的时候,可能取得最优值,即等高线和目标函数的曲线在该点的法向量必须有相同方向,所以最优值必须满足: ∂ f ( x ) x = α ∂ g i ( x ) x \frac {\partial f(x)}{x}=\alpha \frac {\partial g_i(x)}{x} xf(x)=αxgi(x) α \alpha α是常数,表示左右两边同向。这个等式就是 L ( x , α ) L(x,\alpha) L(x,α)对参数求导的结果。
至于 K K T KKT KKT由于可以使用朗格朗日法求解,方法同上。

4. 求解 s u p p o r t v e c t o r support\hspace{0.1cm}vector supportvector和超平面 h y p e r p l a n e hyperplane hyperplane

在样本空间中,超平面上的点都满足以下条件:
w T x + b = 0 w^Tx+b=0 wTx+b=0
其中 w w w是一个向量,表示超平面的方向, b b b是一个标量,决定超平面和坐标原点之间的距离,因此超平面可以被 w w w b b b唯一确定。空间中 x x x到超平面的距离为:
d = ∣ w T x + b ∣ ∣ w ∣ d=\frac {|w^Tx+b|}{|w|} d=wwTx+b
详情请见高中数学课本^_^
假设超平面可对样本正确分类,则对于正类 y ( i ) = 1 y^{(i)}=1 y(i)=1的情况,有 w T x + b ≥ γ 1 w^Tx+b\ge\gamma_1 wTx+bγ1,对于负类 y ( i ) = − 1 y^{(i)}=-1 y(i)=1的情况,有 w T x + b ≤ − γ 2 w^Tx+b \le -\gamma_2 wTx+bγ2。由于超平面到两边样本的正中间,所以 γ 1 = γ 2 = γ \gamma_1=\gamma_2=\gamma γ1=γ2=γ。故:
{ w T x + b ≥ + γ y ( i ) = + 1 w T x + b ≤ − γ y ( i ) = − 1 i = 1 , 2 , ⋯ , n \begin{equation} \left\{ \begin{aligned} &w^Tx+b\ge +\gamma \hspace{1cm} y^{(i)}=+1\\ &w^Tx+b\le -\gamma \hspace{1cm} y^{(i)}=-1\\ \end{aligned} \right. \hspace{1cm} \hspace{1cm} i=1,2,\cdots,n \end{equation} {wTx+b+γy(i)=+1wTx+bγy(i)=1i=1,2,,n
距离超平面最近的几个训练样本使得上面的式子取等号,这些样本被称为支持向量(support vector)。两类样本到超平面的距离之和为:
d = 2 γ ∣ w ∣ d=\frac {2\gamma}{|w|} d=w2γ
要求最大间隔 d d d,就是要求最小的|w|,为了计算方便,将问题归结为求解:
min ⁡ w , b 1 2 ∣ w ∣ 2 s . t . y ( i ) ( w T x + b ) ≥ 1 \min\limits_{w,b}\frac 12|w|^2\\ s.t. \hspace{0.5cm}y^{(i)}(w^Tx+b) \ge 1 w,bmin21w2s.t.y(i)(wTx+b)1
此处将常数项 γ \gamma γ进行了缩放,不会影响组后的结果。

f ( w ) = 1 2 w 2 f(w)=\frac 12 w^2 f(w)=21w2
满足约束条件
1 − y ( i ) ( w T x + b ) ≤ 0 1-y^{(i)}(w^Tx+b) \le 0 1y(i)(wTx+b)0
注意,此处自变量是 w w w而非 x x x,且 w w w是向量。
利用上面的 K K T KKT KKT和拉格朗日乘子,令:
L ( w , b , α ) = f ( w ) + ∑ i = 1 m α i ( 1 − y ( i ) ( w T x + b ) ) = 1 2 w 2 + ∑ i = 1 m α i ( 1 − y ( i ) ( w T x + b ) ) \begin{align} L(w,b,\alpha)&=f(w)+\sum_{i=1}^m\alpha_i(1-y^{(i)}(w^Tx+b))\\ &=\frac 12 w^2+\sum_{i=1}^m\alpha_i(1-y^{(i)}(w^Tx+b)) \end{align} L(w,b,α)=f(w)+i=1mαi(1y(i)(wTx+b))=21w2+i=1mαi(1y(i)(wTx+b))
分别对 w , b , α w,b,\alpha w,b,α求偏导数,得:
∂ L ( w , b , α ) ∂ w = w − ∑ i = 1 m α i y i x i = 0 ∂ L ( w , b , α ) ∂ b = ∑ i = 1 n − ( α i y i ) = 0 ∂ L ( w , b , α ) ∂ α = ∑ i = 1 n ( 1 − y ( i ) ( w T x + b ) ) = 0 \begin{align} \frac {\partial L(w,b,\alpha)}{\partial w}&=w-\sum_{i=1}^m\alpha_iy_ix_i=0\\ \frac {\partial L(w,b,\alpha)}{\partial b}&=\sum_{i=1}^n-(\alpha_iy_i)=0\\ \frac {\partial L(w,b,\alpha)}{\partial \alpha}&=\sum_{i=1}^n(1-y^{(i)}(w^Tx+b))=0 \end{align} wL(w,b,α)bL(w,b,α)αL(w,b,α)=wi=1mαiyixi=0=i=1n(αiyi)=0=i=1n(1y(i)(wTx+b))=0
最后解得:
L ( w , b , α ) = 1 2 ∑ i = 1 m ∑ j = 1 m y ( i ) y ( j ) α i α j x ( i ) T x ( j ) − ∑ i = 1 m ∑ j = 1 m y ( i ) y ( j ) α i α j x ( i ) T x ( j ) + ∑ i = 1 m α i y ( i ) b + ∑ i = 1 n α i = ∑ i = 1 n α i − 1 2 ∑ i = 1 n ∑ j = 1 n y ( i ) y ( j ) α i α j x ( i ) T x ( j ) \begin{align} L(w,b,\alpha)&=\frac 12\sum_{i=1}^m\sum_{j=1}^my^{(i)}y^{(j)}\alpha_i\alpha_jx^{(i)^T}x^{(j)}-\sum_{i=1}^m\sum_{j=1}^my^{(i)}y^{(j)}\alpha_i\alpha_jx^{(i)^T}x^{(j)}+\sum_{i=1}^m\alpha_iy^{(i)}b+\sum_{i=1}^n\alpha_i\\ &=\sum_{i=1}^n\alpha_i-\frac 12\sum_{i=1}^n\sum_{j=1}^ny^{(i)}y^{(j)}\alpha_i\alpha_jx^{(i)^T}x^{(j)} \end{align} L(w,b,α)=21i=1mj=1my(i)y(j)αiαjx(i)Tx(j)i=1mj=1my(i)y(j)αiαjx(i)Tx(j)+i=1mαiy(i)b+i=1nαi=i=1nαi21i=1nj=1ny(i)y(j)αiαjx(i)Tx(j)
根据上面的定理,有:
min ⁡ x f ( x ) = min ⁡ x max ⁡ μ L ( x , μ ) = max ⁡ μ min ⁡ x L ( x , μ ) \min\limits_xf(x)=\min\limits_x\max\limits_\mu L(x,\mu)=\max\limits_\mu\min\limits_xL(x,\mu) xminf(x)=xminμmaxL(x,μ)=μmaxxminL(x,μ)
因此现在要求的是 max ⁡ μ min ⁡ x L ( x , μ ) \max\limits_\mu\min\limits_xL(x,\mu) μmaxxminL(x,μ),即求 L ( w , b , α ) L(w,b,\alpha) L(w,b,α)的最大值, w , b , α w,b,\alpha w,b,α满足下面的约束条件(详情见2中说明):
{ α i ≥ 0 α i ( 1 − y ( i ) ( w T x ( i ) + b ) ) = 0 1 − y ( i ) ( w T x ( i ) + b ) ≤ 0 i = 1 , 2 , ⋯ , n \begin{equation} \left\{ \begin{aligned} &\alpha_i\ge 0\\ &\alpha_i(1-y^{(i)}(w^Tx^{(i)}+b))=0\\ &1-y^{(i)}(w^Tx^{(i)}+b)\le 0 \end{aligned} \right. \hspace{1cm} \hspace{1cm} i=1,2,\cdots,n \end{equation} αi0αi(1y(i)(wTx(i)+b))=01y(i)(wTx(i)+b)0i=1,2,,n
最后还可以求得:
b = max ⁡ y ( i ) = − 1 w T x ( i ) + min ⁡ y ( i ) = 1 w T x ( i ) 2 b= \frac {\max\limits_{y^{(i)}=-1}w^Tx^{(i)}+\min\limits_{y^{(i)}=1}w^Tx^{(i)}}2 b=2y(i)=1maxwTx(i)+y(i)=1minwTx(i)
最后解得的超平面为:
f ( x ) = b + ∑ i = 1 m α i y i x ( i ) T x ( i ) f(x)=b+\sum_{i=1}^m\alpha_iy_ix^{(i)^T}x^{(i)} f(x)=b+i=1mαiyix(i)Tx(i)
对于训练样本 ( x ( i ) , y ( i ) ) (x^{(i)},y^{(i)}) (x(i),y(i)),总有 α i = 0 \alpha_i=0 αi=0或者 1 − y i ( w T x + b ) = 0 1-y_i(w^Tx+b)=0 1yi(wTx+b)=0(注意,此处有多少训练样本,就有多少个 α \alpha α参数)。若 α i = 0 \alpha_i=0 αi=0,则第 i i i个样本不是支持向量,也不会在上面的求和公式中出现。若 α i > 0 \alpha_i>0 αi>0,此时 ( x ( i ) , y ( i ) ) (x^{(i)},y^{(i)}) (x(i),y(i))是一个支持向量,必有 y ( i ) ( w T x ( i ) + b ) = 1 y^{(i)}(w^Tx^{(i)}+b)=1 y(i)(wTx(i)+b)=1。这表示,最终的模型仅与支持向量有关。
至此完成的超平面的全部计算。

5. 核函数(kernels)

由于SVM的核心工作是找到一个超平面来正确地将正负样本分开,这就要求原来的数据本来就应该是线性可分的(可有少量误分类)。但是对于某些线性不可分问题,就不能直接这样求解,因此就需要用到核函数(kernel function)。核函数的功能是:将数据从原来的维度映射到一个更高的维度,在这个维度里面,数据是线性可分的。如果不考虑过拟合问题,对于任何数据,总能找到一个高维的空间,使得映射后的数据完全线性可分(准确率达到100%)。
根据上面的推导,SVM的目标函数为:
L ( w , b , α ) = ∑ i = 1 n α i − 1 2 ∑ i = 1 n ∑ j = 1 n y ( i ) y ( j ) α i α j x ( i ) T x ( j ) L(w,b,\alpha)=\sum_{i=1}^n\alpha_i-\frac 12\sum_{i=1}^n\sum_{j=1}^ny^{(i)}y^{(j)}\alpha_i\alpha_jx^{(i)^T}x^{(j)} L(w,b,α)=i=1nαi21i=1nj=1ny(i)y(j)αiαjx(i)Tx(j)
由于 ( x ( i ) , y ( i ) ) (x^{(i)}, y^{(i)}) (x(i),y(i))都是已知值,因此上式是一个关于 α i \alpha_i αi的函数,记为:
W ( α ⃗ ) = ∑ i = 1 n α i − 1 2 ∑ i = 1 n ∑ j = 1 n y ( i ) y ( j ) α i α j x ( i ) T x ( j ) W(\vec \alpha)=\sum_{i=1}^n\alpha_i-\frac 12\sum_{i=1}^n\sum_{j=1}^ny^{(i)}y^{(j)}\alpha_i\alpha_jx^{(i)^T}x^{(j)} W(α )=i=1nαi21i=1nj=1ny(i)y(j)αiαjx(i)Tx(j)
为了方便,记 x ( i ) T x ( j ) x^{(i)^T}x^{(j)} x(i)Tx(j)为: ⟨ x ( i ) , x ( j ) ⟩ \langle x^{(i)} , x^{(j)} \rangle x(i),x(j),表示向量内积。
假设我们需要将向量 a ⃗ \vec a a 映射为 a ⃗ ′ \vec a' a ,其中 a ⃗ ∈ R m , b ⃗ ∈ R n , n > m \vec a \in R^m, \vec b \in R^n, n>m a Rm,b Rn,n>m,令这个映射为:
Φ ( x ) : { x ∣ x ∈ R m } − > { x ′ ∣ x ′ ∈ R n } \Phi(x): \{x|x\in R^m\}->\{x'|x' \in R^n\} Φ(x):{xxRm}>{xxRn}
那么加入这种映射以后,目标函数为:
W ( α ⃗ ) = ∑ i = 1 n α i − 1 2 ∑ i = 1 n ∑ j = 1 n y ( i ) y ( j ) α i α j ⟨ Φ ( x ( i ) ) , Φ ( x ( j ) ) ⟩ W(\vec \alpha)=\sum_{i=1}^n\alpha_i-\frac 12\sum_{i=1}^n\sum_{j=1}^ny^{(i)}y^{(j)}\alpha_i\alpha_j\langle \Phi(x^{(i)}),\Phi(x^{(j)})\rangle W(α )=i=1nαi21i=1nj=1ny(i)y(j)αiαjΦ(x(i)),Φ(x(j))⟩
在高维空间中,要想计算 ⟨ Φ ( x ( i ) ) , Φ ( x ( j ) ) ⟩ \langle \Phi(x^{(i)}),\Phi(x^{(j)}) \rangle Φ(x(i)),Φ(x(j))⟩,我们就需要核函数:Kernel。
定义:
K e r n e l ( x , z ) = ⟨ Φ ( x ) , Φ ( z ) ⟩ Kernel(x,z)=\langle \Phi(x),\Phi(z)\rangle Kernel(x,z)=Φ(x),Φ(z)⟩
核函数是一个非常抽象的东西,一般情况下,我们只需要将 W ( α ⃗ ) W(\vec \alpha) W(α )计算出来即可,并不需要深入到那个映射以后的高维空间中去看看映射后的数据是什么样子,某些情况下这甚至是不可能的。打个比方,你要计算 a 1 + b 1 + c 1 + d 1 + . . . − ( a 1 + b 1 + c 1 + d 1 + . . . ) a_1+b_1+c_1+d_1+...-(a_1+b_1+c_1+d_1+...) a1+b1+c1+d1+...(a1+b1+c1+d1+...),你不需要深入到把前后两个加法全算出来,相反,只需要计算其中部分即可(事实上结果为0)。虽然不太贴切,但是思想差不多,就是通过 x , z x,z x,z直接计算出 ⟨ Φ ( x ) , Φ ( z ) ⟩ \langle \Phi(x),\Phi(z)\rangle Φ(x),Φ(z)⟩,但你却并不需要知道 Φ ( x ) \Phi(x) Φ(x) Φ ( z ) \Phi(z) Φ(z)到底是什么。事实上,如果最后的计算涉及到求 ⟨ x ( i ) , x ( j ) ⟩ \langle x^{(i)},x^{(j)}\rangle x(i),x(j),都可以使用核函数。
下面来计算一个式子:
K ( x , z ) = ( x T , z ) 2 = ( ∑ i = 1 n x i z i ) ( ∑ j = 1 n x j z j ) = ∑ i = 1 n ∑ j = 1 n ( x i x j ) ( z i z j ) \begin{align} K(x,z)=(x^T,z)^2&=(\sum_{i=1}^nx_iz_i)(\sum_{j=1}^nx_jz_j)\\ &=\sum_{i=1}^n\sum_{j=1}^n(x_ix_j)(z_iz_j) \end{align} K(x,z)=(xT,z)2=(i=1nxizi)(j=1nxjzj)=i=1nj=1n(xixj)(zizj)
因此令
Φ ( x ) = [ x 1 x 1 x 1 x 2 x 1 x 3 x 2 x 1 x 2 x 2 x 2 x 3 x 3 x 1 x 3 x 2 x 3 x 3 ] \Phi(x)= \begin{bmatrix} x_1x_1\\ x_1x_2\\ x_1x_3 \\ x_2x_1\\ x_2x_2\\ x_2x_3\\ x_3x_1\\ x_3x_2\\ x_3x_3 \end{bmatrix} Φ(x)= x1x1x1x2x1x3x2x1x2x2x2x3x3x1x3x2x3x3
假设 K ( x , z ) = ( x T z + c ) 2 K(x,z)=(x^Tz+c)^2 K(x,z)=(xTz+c)2,则:
K ( x , z ) = ∑ i = 1 n ∑ j = 1 n ( x i x j ) ( z i z j ) + ∑ i = 1 n ( 2 c x i ) ( 2 c z i ) + c 2 = ⟨ Φ ( x ) , Φ ( z ) ⟩ \begin{align} K(x,z)&=\sum_{i=1}^n\sum_{j=1}^n(x_ix_j)(z_iz_j)+\sum_{i=1}^n(\sqrt {2c}x_i)(\sqrt {2c}z_i)+c^2\\ &=\langle \Phi(x),\Phi(z) \rangle \end{align} K(x,z)=i=1nj=1n(xixj)(zizj)+i=1n(2c xi)(2c zi)+c2=Φ(x),Φ(z)⟩
则:
Φ ( x ) = [ x 1 x 1 x 1 x 2 x 1 x 3 x 2 x 1 x 2 x 2 x 2 x 3 x 3 x 1 x 3 x 2 x 3 x 3 2 c x 1 2 c x 2 2 c x 3 c ] Φ ( z ) = [ z 1 z 1 z 1 z 2 z 1 z 3 z 2 z 1 z 2 z 2 z 2 z 3 z 3 x 1 z 3 z 2 z 3 z 3 2 c z 1 2 c z 2 2 c z 3 c ] \Phi(x)= \begin{bmatrix} x_1x_1\\ x_1x_2\\ x_1x_3 \\ x_2x_1\\ x_2x_2\\ x_2x_3\\ x_3x_1\\ x_3x_2\\ x_3x_3\\ \sqrt{2c}x1\\ \sqrt{2c}x2\\ \sqrt{2c}x3\\ c \end{bmatrix} \Phi(z)= \begin{bmatrix} z_1z_1\\ z_1z_2\\ z_1z_3 \\ z_2z_1\\ z_2z_2\\ z_2z_3\\ z_3x_1\\ z_3z_2\\ z_3z_3\\ \sqrt{2c}z1\\ \sqrt{2c}z2\\ \sqrt{2c}z3\\ c \end{bmatrix} Φ(x)= x1x1x1x2x1x3x2x1x2x2x2x3x3x1x3x2x3x32c x12c x22c x3c Φ(z)= z1z1z1z2z1z3z2z1z2z2z2z3z3x1z3z2z3z32c z12c z22c z3c
假设
K ( x , z ) = e − ∣ ∣ x ⃗ − z ⃗ ∣ ∣ 2 K(x,z)=e^{-||\vec x-\vec z||^2} K(x,z)=e∣∣x z 2
泰勒展开,得:
K ( x , z ) = e − x 2 e − z 2 ∑ k = 1 ∞ 2 k ( x ) k ( z ) k k ! K(x,z)=e^{-x^2}e^{-z^2}\sum_{k=1}^\infty \frac{2^k(x)^k(z)^k}{k!} K(x,z)=ex2ez2k=1k!2k(x)k(z)k
这样得到的 Φ ( x ) \Phi(x) Φ(x)是一个无穷维度:
Φ ( x ) = [ 2 e − x 2 x 2 e − x 2 x 2 ⋮ 2 k k ! e − x 2 x k ] \Phi(x)= \begin{bmatrix} \sqrt 2e^{-x^2}x\\ \sqrt 2e^{-x^2}x^2\\ \vdots\\ \sqrt{\frac {2^k}{k!}}e^{-x^2}x^k \end{bmatrix} Φ(x)= 2 ex2x2 ex2x2k!2k ex2xk
此时 Φ ( x ) \Phi(x) Φ(x)是一个无穷维的向量(当然这里 x , k x,k x,k假设只是一个一维的,更高维度的情况复杂,此处不列举)。对于一般的 K ( x , z ) = ( x T z + c ) d K(x,z)=(x^Tz+c)^d K(x,z)=(xTz+c)d,此处 x x x的维度将会由 n n n变成 ∑ i = 1 n i d \sum_{i=1}^ni^d i=1nid维度,将会呈现爆炸性增长。

判断一个 K e r n e l Kernel Kernel是一个合法的 K e r n e l Kernel Kernel:
假设数据点为 { x ( 1 ) , ⋯ , x ( m ) } \{x^{(1)},\cdots,x^{(m)}\} {x(1),,x(m)}设计矩阵:
M = [ k ( x ( 1 ) , x ( 2 ) ) , k ( x ( 1 ) , x ( 3 ) ) , ⋯ , k ( x ( 1 ) , x ( m ) ) k ( x ( 2 ) , x ( 1 ) ) , k ( x ( 2 ) , x ( 2 ) ) , ⋯ , k ( x ( 2 ) , x ( m ) ) ⋮ k ( x ( i ) , x ( j ) ) ⋮ k ( x ( m ) , x ( 1 ) ) , k ( x ( m ) , x ( 2 ) ) , ⋯ , k ( x ( m ) , x ( m ) ) ] M= \begin{bmatrix} k(x^{(1)},x^{(2)}),k(x^{(1)},x^{(3)}),\cdots,k(x^{(1)},x^{(m)})\\ k(x^{(2)},x^{(1)}),k(x^{(2)},x^{(2)}),\cdots,k(x^{(2)},x^{(m)})\\ \vdots \\ k(x^{(i)},x^{(j)})\\ \vdots\\ k(x^{(m)},x^{(1)}),k(x^{(m)},x^{(2)}),\cdots,k(x^{(m)},x^{(m)}) \end{bmatrix} M= k(x(1),x(2)),k(x(1),x(3)),,k(x(1),x(m))k(x(2),x(1)),k(x(2),x(2)),,k(x(2),x(m))k(x(i),x(j))k(x(m),x(1)),k(x(m),x(2)),,k(x(m),x(m))

则:
z T M z = ∑ i = 1 m ∑ j = 1 m z i k i j z j = ∑ i = 1 m ∑ j = 1 m z i Φ ( x ( i ) T ) Φ ( x ( j ) T ) z j = ∑ t = 1 n ( ∑ i = 1 m Φ ( x ( i ) ) z i ) 2 ≥ 0 \begin{align} z^TMz&=\sum_{i=1}^m\sum_{j=1}^mz_ik_{ij}z_j\\ &=\sum_{i=1}^m\sum_{j=1}^mz_i\Phi(x^{(i)^T})\Phi(x^{(j)^T})z_j\\ &=\sum_{t=1}^n(\sum_{i=1}^m\Phi(x^{(i)})z_i)^2 \ge 0 \end{align} zTMz=i=1mj=1mzikijzj=i=1mj=1mziΦ(x(i)T)Φ(x(j)T)zj=t=1n(i=1mΦ(x(i))zi)20
因此 V a l i d K e r n e l Valid \hspace{0.1cm}Kernel ValidKernel的充要条件是:矩阵M(由m个点中的任意个点组成的矩阵)是一个半正定矩阵,即 k ( x , x ) ≥ 0 k(x,x)\ge 0 k(x,x)0
常用的核函数有:

  • Linear Kernel(线性核)
    k ( x , z ) = x T y + c k(x,z)=x^Ty+c k(x,z)=xTy+c
  • Polynomial Kernel(多项式核)
    k ( x , z ) = ( a x T y + c ) d k(x,z)=(ax^Ty+c)^d k(x,z)=(axTy+c)d
  • RBF(Radial Basis Function 径向基核函数)
    k ( x , z ) = e − γ ∣ ∣ x − z ∣ ∣ 2 k(x,z)=e^{-\gamma||x-z||^2} k(x,z)=eγ∣∣xz2
  • Gaussian Kernel(高斯核)
    k ( x , z ) = e − ∣ ∣ x − z ∣ ∣ 2 2 σ 2 k(x,z)=e^{-\frac {||x-z||^2}{2\sigma^2}} k(x,z)=e2σ2∣∣xz2
  • Laplacian Kernel(拉普拉斯核)
    k ( x , z ) = e − ∣ ∣ x − z ∣ ∣ σ k(x,z)=e^{-\frac {||x-z||}{\sigma}} k(x,z)=eσ∣∣xz∣∣
  • sigmod核
    k ( x , z ) = tanh ⁡ ( a x T + c ) k(x,z)=\tanh(ax^T+c) k(x,z)=tanh(axT+c)

6. 允许误差的 S o f t m a r g i n Soft \hspace{0.1cm} margin Softmargin

原问题为:
min ⁡ 1 2 ∣ w ∣ 2 s . t . y ( i ) ( w T + b ) ≥ 1 \min \frac 12|w|^2 \hspace{1.0cm} s.t.\hspace{0.4cm}y^{(i)}(w^T+b)\ge 1 min21w2s.t.y(i)(wT+b)1
假设我们允许某些样本被错误分类,在每个样本点后面加上了一个宽松条件,允许这个点违反一点点 ξ i \xi_i ξi大小的误差,对于没有违反的点,则 ξ i \xi_i ξi为0。同时为了最优化,需要最小化所有误差的和,因此在最小化的项后面加上了误差和。因此加上一个惩罚因子:
min ⁡ 1 2 ∣ w ∣ 2 + C ∑ i = 1 m ξ i s . t . y ( i ) ( w T + b ) ≥ 1 − ξ i ξ i ≥ 0 \begin{align} \min \frac 12|w|^2+C\sum_{i=1}^m\xi_i\hspace{1.0cm}s.t.\hspace{0.4cm}&y^{(i)}(w^T+b)\ge 1-\xi_i\\ &\xi_i \ge 0 \end{align} min21w2+Ci=1mξis.t.y(i)(wT+b)1ξiξi0
上式子中,在 ξ i \xi_i ξi前面加了权重C,这个可以由使用SVM的用户指定,可以看出,如果C很大,对错误的惩罚越大,模型会倾向于尽量将样本分割开;如果C越小,则会有更多的违反边界的点存在。
类似于下图:
这里写图片描述
因此上面的拉格朗日函数变为:
L ( w , b , ξ , α , β ) = 1 2 w T w + C ∑ i = 1 n ξ i − ∑ i = 1 n α i ( y i ( w T x i + b ) − 1 + ξ i ) − ∑ i = 1 n β i ξ i L(w,b,\xi,\alpha,\beta)=\frac 12w^Tw+C\sum_{i=1}^n\xi_i-\sum_{i=1}^n\alpha_i(y_i(w^Tx_i+b)-1+\xi_i)-\sum_{i=1}^n\beta_i\xi_i L(w,b,ξ,α,β)=21wTw+Ci=1nξii=1nαi(yi(wTxi+b)1+ξi)i=1nβiξi
求偏导:
∂ L ∂ w = w − ∑ i = 1 n α i y i x i = 0 ∂ L ∂ b = ∑ i = 1 n α i y i = 0 ∂ L ∂ ξ i = C − α i − β i = 0 = > α i ≤ C \begin{align} \frac {\partial L}{\partial w}&=w-\sum_{i=1}^n\alpha_iy_ix_i=0\\ \frac {\partial L}{\partial b}&=\sum_{i=1}^n\alpha_iy_i=0\\ \frac {\partial L}{\partial \xi_i}&=C-\alpha_i-\beta_i=0 \hspace{1.0cm} =>\alpha_i \le C \end{align} wLbLξiL=wi=1nαiyixi=0=i=1nαiyi=0=Cαiβi=0=>αiC
β i = C − α i \beta_i=C-\alpha_i βi=Cαi代入到上面的式子可以把 β i , ξ i \beta_i,\xi_i βi,ξi全部消掉,得:
L = max ⁡ 0 ≤ α i ≤ C ( min ⁡ b , w , ξ 1 2 w T w + ∑ i = 1 n α i ( 1 − y i ( w T x i + b ) ) ) L=\max_{0\le\alpha_i\le C}(\min_{b,w,\xi}\frac 12w^Tw+\sum_{i=1}^n\alpha_i(1-y_i(w^Tx_i+b))) L=0αiCmax(b,w,ξmin21wTw+i=1nαi(1yi(wTxi+b)))
Hard margin的KKT条件为: α i ( 1 − y i ( w T x i + b ) ) = 0 \alpha_i(1-y_i(w^Tx_i+b))=0 αi(1yi(wTxi+b))=0,而Soft Margin的KKT条件根据前面的最大最小化两个过程得出(具体过程见周志华西瓜书P404页):
α i ( 1 − ξ i − y i ( w T x i + b ) ) = 0 β i ξ i = 0 \alpha_i(1-\xi_i-y_i(w^Tx_i+b))=0\\ \beta_i\xi_i=0 αi(1ξiyi(wTxi+b))=0βiξi=0
由上面的式子得出: 0 ≤ α i ≤ C 0\le \alpha_i \le C 0αiC。如果 α i = 0 \alpha_i=0 αi=0,则该样本不是支持向量,不参与计算。若 α i < C \alpha_i< C αi<C,则 β i > 0 \beta_i>0 βi>0。由于 β i ξ i = 0 \beta_i\xi_i=0 βiξi=0,因此 ξ i = 0 \xi_i=0 ξi=0,此时向量刚好落在边界上。如果: α i = C \alpha_i=C αi=C,则如果 ξ i ≤ 1 \xi_i\le1 ξi1,此时样本落在最大间隔内部,如果 ξ i ≥ 1 \xi_i\ge1 ξi1,则样本被错误分类。

7. SMO算法求解 α i \alpha_i αi

7.1 SMO算法的基本原理

由上面的式子可知,目标函数为:
W ( α ⃗ ) = ∑ i = 1 n α i − 1 2 ∑ i = 1 n ∑ j = 1 n y ( i ) y ( j ) α i α j x ( i ) T x ( j ) W(\vec \alpha)=\sum_{i=1}^n\alpha_i-\frac 12\sum_{i=1}^n\sum_{j=1}^ny^{(i)}y^{(j)}\alpha_i\alpha_jx^{(i)^T}x^{(j)} W(α )=i=1nαi21i=1nj=1ny(i)y(j)αiαjx(i)Tx(j)
约束条件为:
∑ i = 1 n α i y ( i ) = 0 0 ≤ α i ≤ C \sum_{i=1}^n\alpha_iy^{(i)}=0\\ 0\le \alpha_i \le C i=1nαiy(i)=00αiC
SMO算法的核心思想是:

  1. 用启发式方法(heuristic method)选出两个变量 α s , α t \alpha_s, \alpha_t αs,αt,并保持其他的 α \alpha α不变。此时有:
    α s y ( s ) + α t y ( t ) = − ∑ k = 1 , k ≠ s , k ≠ t n α k y ( k ) = ξ 0 ≤ α i ≤ C \alpha_sy^{(s)}+\alpha_ty^{(t)}=-\sum_{k=1, k\not=s,k\not=t}^n\alpha_ky^{(k)}=\xi\\ 0\le \alpha_i \le C αsy(s)+αty(t)=k=1,k=s,k=tnαky(k)=ξ0αiC
    此时我们求得:
    α t = ξ − α s y ( s ) y ( t ) \alpha_t=\frac {\xi-\alpha_sy^{(s)}}{y^{(t)}} αt=y(t)ξαsy(s)
  2. 然后将其带入 W ( α ⃗ ) W(\vec \alpha) W(α )中,可以看出, W ( α ⃗ ) W(\vec \alpha) W(α )是一个关于 α s \alpha_s αs的二次函数。为:
    W ( α s ) = a α s 2 + b α s + c W(\alpha_s)=a\alpha_s^2+b\alpha_s+c W(αs)=aαs2+bαs+c
    限制条件是: 0 ≤ α s ≤ C 0\le \alpha_s \le C 0αsC,因此很容易就能求出 α s , α t \alpha_s,\alpha_t αs,αt的值。虽然此算法需要迭代次数比较多,但是每次迭代的计算量很小,因此速度很快。
  3. 不断重复1、2步骤,直到再也选不出任意的 α s , α t \alpha_s,\alpha_t αs,αt满足限制条件却又为到达最优为止(算法收敛)。
    ###7.2 每次迭代变量 α s , α t \alpha_s,\alpha_t αs,αt的选择
  • 第一个变量 α s \alpha_s αs的选择:

    第一个变量的选择称为外循环,首先遍历整个样本集,选择违反 K K T KKT KKT条件的 α i \alpha_i αi作为第一个变量,接着依据相关规则选择第二个变量(见下面分析),对这两个变量采用上述方法进行优化。当遍历完整个样本集后,遍历非边界样本集( $ 0<\alpha_i < C$ 中违反 K K T KKT KKT α i \alpha_i αi作为第一个变量,同样依据相关规则选择第二个变量,对此两个变量进行优化。当遍历完非边界样本集后,再次回到遍历整个样本集中寻找,即在整个样本集与非边界样本集上来回切换,寻找违反 K K T KKT KKT条件的 α i \alpha_i αi作为第一个变量。直到遍历整个样本集后,没有违反 K K T KKT KKT条件 α i \alpha_i αi,然后退出。 KKT条件为:

    这里写图片描述

    边界上的样本对应的 α i \alpha_i αi或者 α i = C \alpha_i=C αi=C,在优化过程中很难变化,然而非边界样本 0 < α i < C 0<\alpha_i< C 0<αi<C会随着对其他变量的优化会有大的变化。

  • 第二个变量 α t \alpha_t αt的选择:

    SMO称第二个变量的选择过程为内循环,假设在外循环中找个第一个变量记为 α i \alpha_i αi,第二个变量的选择希望能使 α j \alpha_j αj有较大的变化,由于 α j \alpha_j αj是依赖于 ∣ E 1 − E 2 ∣ |E_1−E_2| E1E2( E 1 E_1 E1 E 2 E_2 E2分别为预测值和实际值之间的误差),当 E 1 E_1 E1为正时,那么选择最小的 E i E_i Ei作为 E 2 E_2 E2,如果 E 1 E_1 E1为负,选择最大 E i E_i Ei作为 E 2 E_2 E2,通常为每个样本的 E i E_i Ei保存在一个列表中,选择最大的 ∣ E 1 − E 2 ∣ |E_1−E_2| E1E2来近似最大化步长。
    有时按照上述的启发式选择第二个变量,不能够使得函数值有足够的下降,这时按下述步骤:

    • 首先在非边界集上选择能够使函数值足够下降的样本作为第二个变量,
    • 如果非边界集上没有,则在整个样本集上选择第二个变量,
    • 如果整个样本集依然不存在,则重新选择第一个变量。

7.2 b值的计算

这里写图片描述

这篇关于SVM(Support Vector Machine)分类器详解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1092986

相关文章

如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别详解

《如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别详解》:本文主要介绍如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别的相关资料,描述了如何使用海康威视设备网络SD... 目录前言开发流程问题和解决方案dll库加载不到的问题老旧版本sdk不兼容的问题关键实现流程总结前言作为

SQL 中多表查询的常见连接方式详解

《SQL中多表查询的常见连接方式详解》本文介绍SQL中多表查询的常见连接方式,包括内连接(INNERJOIN)、左连接(LEFTJOIN)、右连接(RIGHTJOIN)、全外连接(FULLOUTER... 目录一、连接类型图表(ASCII 形式)二、前置代码(创建示例表)三、连接方式代码示例1. 内连接(I

Go路由注册方法详解

《Go路由注册方法详解》Go语言中,http.NewServeMux()和http.HandleFunc()是两种不同的路由注册方式,前者创建独立的ServeMux实例,适合模块化和分层路由,灵活性高... 目录Go路由注册方法1. 路由注册的方式2. 路由器的独立性3. 灵活性4. 启动服务器的方式5.

Java中八大包装类举例详解(通俗易懂)

《Java中八大包装类举例详解(通俗易懂)》:本文主要介绍Java中的包装类,包括它们的作用、特点、用途以及如何进行装箱和拆箱,包装类还提供了许多实用方法,如转换、获取基本类型值、比较和类型检测,... 目录一、包装类(Wrapper Class)1、简要介绍2、包装类特点3、包装类用途二、装箱和拆箱1、装

Go语言中三种容器类型的数据结构详解

《Go语言中三种容器类型的数据结构详解》在Go语言中,有三种主要的容器类型用于存储和操作集合数据:本文主要介绍三者的使用与区别,感兴趣的小伙伴可以跟随小编一起学习一下... 目录基本概念1. 数组(Array)2. 切片(Slice)3. 映射(Map)对比总结注意事项基本概念在 Go 语言中,有三种主要

Python中Markdown库的使用示例详解

《Python中Markdown库的使用示例详解》Markdown库是一个用于处理Markdown文本的Python工具,这篇文章主要为大家详细介绍了Markdown库的具体使用,感兴趣的... 目录一、背景二、什么是 Markdown 库三、如何安装这个库四、库函数使用方法1. markdown.mark

PLsql Oracle 下载安装图文过程详解

《PLsqlOracle下载安装图文过程详解》PL/SQLDeveloper是一款用于开发Oracle数据库的集成开发环境,可以通过官网下载安装配置,并通过配置tnsnames.ora文件及环境变... 目录一、PL/SQL Developer 简介二、PL/SQL Developer 安装及配置详解1.下

使用Navicat工具比对两个数据库所有表结构的差异案例详解

《使用Navicat工具比对两个数据库所有表结构的差异案例详解》:本文主要介绍如何使用Navicat工具对比两个数据库test_old和test_new,并生成相应的DDLSQL语句,以便将te... 目录概要案例一、如图两个数据库test_old和test_new进行比较:二、开始比较总结概要公司存在多

css渐变色背景|<gradient示例详解

《css渐变色背景|<gradient示例详解》CSS渐变是一种从一种颜色平滑过渡到另一种颜色的效果,可以作为元素的背景,它包括线性渐变、径向渐变和锥形渐变,本文介绍css渐变色背景|<gradien... 使用渐变色作为背景可以直接将渐China编程变色用作元素的背景,可以看做是一种特殊的背景图片。(是作为背

springboot日期格式化全局LocalDateTime详解

《springboot日期格式化全局LocalDateTime详解》文章主要分析了SpringBoot中ObjectMapper对象的序列化和反序列化过程,并具体探讨了日期格式化问题,通过分析Spri... 目录分析ObjectMapper与jsonSerializer结论自定义日期格式(全局)扩展利用配置