本文主要是介绍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 ∂x∂F(x,y,λ)=0
∂ F ( x , y , λ ) ∂ y = 0 \frac {\partial F(x,y,\lambda)}{\partial y}=0 ∂y∂F(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)中,取其最大最小值分别为函数在满足约束条件下的最大最小值。
简单的求解例子:
-
给定椭球 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+λ(1−a2x2+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} ∂x∂F(x,y,z,λ)=8yz−a22λx=0∂y∂F(x,y,z,λ)=8xz−a22λy=0∂z∂F(x,y,z,λ)=8xy−a22λz=0∂λ∂F(x,y,z,λ)=1−a2x2+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=33ay=33bz=33cλ=343abcfmax(x,y,z)=93abc -
求抛物旋转面 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)=z−x2−y2, φ 2 ( x , y , z ) = 1 − x − y − z \varphi_2(x,y,z)=1-x-y-z φ2(x,y,z)=1−x−y−z令
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(z−x2−y2)+λ2(1−x−y−z)
分别对 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} ∂x∂F(x,y,z,λ1,λ2)=2x−2λ1x−λ2=0∂y∂F(x,y,z,λ1,λ2)=2y−2λ1y−λ2=0∂z∂F(x,y,z,λ1,λ2)=2z−2λ1z−λ2=0∂λ1∂F(x,y,z,λ1,λ2)=z−x2−y2=0∂λ2∂F(x,y,z,λ1,λ2)=1−x−y−z=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,2−3)
求得
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+53OM2=9−53
因此 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} 9−53
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(H1−h1(x))−λ2(H2−h2(x))−⋯−λn(Hn−hn(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 xi∂F(x,λ)=0i=1,2⋯,mλj∂F(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=1∑nμ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} {uk≥0gk(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=1∑nμkgk(x)]=μmaxxminf(x)+μmaxxmink=1∑nμkgk(x)=xminf(x)+μmaxxmink=1∑nμ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} {uk≥0gk(x)≤0=>xminukgk(x)={0uk=0orgk(x)=0−∞uk>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=1∑nukgk(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=1∑nμ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} ∂x∂L(x,α,β,t)∂α∂L(x,α,β,t)∂β∂L(x,α,β,t)∂t∂L(x,α,β,t)=∂x∂f(x)+α∂x∂hi(x)+β∂x∂gi(x)=0=hi(x)=0=gi(x)+t2=0=2tβ=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} x∂f(x)=αx∂gi(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=∣w∣∣wTx+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=∣w∣2γ
要求最大间隔 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,bmin21∣w∣2s.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 1−y(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=1∑mαi(1−y(i)(wTx+b))=21w2+i=1∑mαi(1−y(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} ∂w∂L(w,b,α)∂b∂L(w,b,α)∂α∂L(w,b,α)=w−i=1∑mαiyixi=0=i=1∑n−(αiyi)=0=i=1∑n(1−y(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=1∑mj=1∑my(i)y(j)αiαjx(i)Tx(j)−i=1∑mj=1∑my(i)y(j)αiαjx(i)Tx(j)+i=1∑mαiy(i)b+i=1∑nαi=i=1∑nαi−21i=1∑nj=1∑ny(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} ⎩ ⎨ ⎧αi≥0αi(1−y(i)(wTx(i)+b))=01−y(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=1∑mα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 1−yi(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=1∑nαi−21i=1∑nj=1∑ny(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=1∑nαi−21i=1∑nj=1∑ny(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):{x∣x∈Rm}−>{x′∣x′∈Rn}
那么加入这种映射以后,目标函数为:
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=1∑nαi−21i=1∑nj=1∑ny(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=1∑nxizi)(j=1∑nxjzj)=i=1∑nj=1∑n(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=1∑nj=1∑n(xixj)(zizj)+i=1∑n(2cxi)(2czi)+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)= x1x1x1x2x1x3x2x1x2x2x2x3x3x1x3x2x3x32cx12cx22cx3c Φ(z)= z1z1z1z2z1z3z2z1z2z2z2z3z3x1z3z2z3z32cz12cz22cz3c
假设
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)=e−x2e−z2k=1∑∞k!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)= 2e−x2x2e−x2x2⋮k!2ke−x2xk
此时 Φ ( 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=1∑mj=1∑mzikijzj=i=1∑mj=1∑mziΦ(x(i)T)Φ(x(j)T)zj=t=1∑n(i=1∑mΦ(x(i))zi)2≥0
因此 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−γ∣∣x−z∣∣2 - 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)=e−2σ2∣∣x−z∣∣2 - Laplacian Kernel(拉普拉斯核)
k ( x , z ) = e − ∣ ∣ x − z ∣ ∣ σ k(x,z)=e^{-\frac {||x-z||}{\sigma}} k(x,z)=e−σ∣∣x−z∣∣ - 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 min21∣w∣2s.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} min21∣w∣2+Ci=1∑mξis.t.y(i)(wT+b)≥1−ξiξi≥0
上式子中,在 ξ 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=1∑nξi−i=1∑nαi(yi(wTxi+b)−1+ξi)−i=1∑nβ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} ∂w∂L∂b∂L∂ξi∂L=w−i=1∑nαiyixi=0=i=1∑nαiyi=0=C−αi−βi=0=>αi≤C
将 β 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≤αi≤Cmax(b,w,ξmin21wTw+i=1∑nαi(1−yi(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(1−yi(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−ξi−yi(wTxi+b))=0βiξi=0
由上面的式子得出: 0 ≤ α i ≤ C 0\le \alpha_i \le C 0≤αi≤C。如果 α 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 ξi≤1,此时样本落在最大间隔内部,如果 ξ i ≥ 1 \xi_i\ge1 ξi≥1,则样本被错误分类。
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=1∑nαi−21i=1∑nj=1∑ny(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=1∑nαiy(i)=00≤αi≤C
SMO算法的核心思想是:
- 用启发式方法(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=t∑nαky(k)=ξ0≤αi≤C
此时我们求得:
α t = ξ − α s y ( s ) y ( t ) \alpha_t=\frac {\xi-\alpha_sy^{(s)}}{y^{(t)}} αt=y(t)ξ−αsy(s) - 然后将其带入 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≤αs≤C,因此很容易就能求出 α s , α t \alpha_s,\alpha_t αs,αt的值。虽然此算法需要迭代次数比较多,但是每次迭代的计算量很小,因此速度很快。 - 不断重复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| ∣E1−E2∣( 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| ∣E1−E2∣来近似最大化步长。
有时按照上述的启发式选择第二个变量,不能够使得函数值有足够的下降,这时按下述步骤:- 首先在非边界集上选择能够使函数值足够下降的样本作为第二个变量,
- 如果非边界集上没有,则在整个样本集上选择第二个变量,
- 如果整个样本集依然不存在,则重新选择第一个变量。
7.2 b值的计算
这篇关于SVM(Support Vector Machine)分类器详解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!