机器学习面试必知:一文理解支持向量机(SVM)

1. 首先我们要是决策距离最大化

  • 我们先来求点 x x x到一个超平面 f ( x ) = w T x + b f(x)=w^{T}x+b f(x)=wTx+b的距离:
    假设有一点 x x x,垂直投影到超平面上对应点为 x 0 x_{0} x0, w w w是垂直于超平面的一个向量, γ \gamma γ为样本 x x x到超平面的距离。易知 x = x 0 + γ w ∣ ∣ w ∣ ∣ x=x_{0}+\gamma \frac{w}{||w||} x=x0+γww, 同乘 w T w^{T} wT, w T x = w T x 0 + γ w T w ∣ ∣ w ∣ ∣ w^{T}x=w^{T}x_{0}+\gamma w^{T} \frac{w}{||w||} wTx=wTx0+γwTww。因为 w T x 0 = − b w^{T}x_{0}=-b wTx0=b,所以可以化解为 w T x + b = γ ∣ ∣ w ∣ ∣ 2 ∣ ∣ w ∣ ∣ w^{T}x+b=\gamma\frac{||w||^{2}}{||w||} wTx+b=γww2,可以得到 γ = f ( x ) ∣ ∣ w ∣ ∣ \gamma=\frac{f(x)}{||w||} γ=wf(x),这里我们只关心那些分类正确的点 t n f ( x n ) ∣ ∣ w ∣ ∣ , t n f ( x n ) ⩾ 1 \frac{t_{n}f(x_{n})}{||w||},t_{n}f(x_{n}) \geqslant 1 wtnf(xn),tnf(xn)1。所以我们就有了目标函数 m a x 1 ∣ ∣ w ∣ ∣ = m i n 0.5 ∗ ∣ ∣ w ∣ ∣ 2 max\frac{1}{||w||}=min 0.5*||w||^{2} maxw1=min0.5w2 s . t . ( w T ϕ ( x n ) + b ) t n ⩾ 1 , n = 1 , . . . , N \mathrm{s.t.} (w^{T}\phi(x_{n})+b) t_{n} \geqslant 1, n=1,...,N s.t.(wTϕ(xn)+b)tn1,n=1,...,N

  • 为了更好地引出核函数,我们假设先对x做了一个预处理 ϕ ( x ) \phi(x) ϕ(x)

2. 变换到对偶问题求解出 w w w
L ( w , a , b ) = 1 2 ∣ ∣ w ∣ ∣ 2 − ∑ n = 1 N a n ( ( w T ϕ ( x n ) + b ) t n − 1 ) L(w,a,b)=\frac{1}{2}||w||^{2}-\sum_{n=1}^{N}a_{n}( (w^{T}\phi(x_{n})+b) t_{n} -1) L(w,a,b)=21w2n=1Nan((wTϕ(xn)+b)tn1)

  • 首先固定 a a a,让L分别对w和b求偏导等于0得到 w = ∑ n = 1 N a n t n ϕ ( x n ) w=\sum_{n=1}^{N}a_{n}t_{n}\phi(x_{n}) w=n=1Nantnϕ(xn) ∑ n = 1 N a n t n = 0 \sum_{n=1}^{N}a_{n}t_{n}=0 n=1Nantn=0将结果代入得到 L ( a ) = ∑ n = 1 N a n − 1 2 ∑ n = 1 N ∑ m = 1 N a n a m t n t m K ( x n , x m ) L(a)=\sum_{n=1}^{N}a_{n}-\frac{1}{2}\sum_{n=1}^{N}\sum_{m=1}^{N}a_{n}a_{m}t_{n}t_{m}K(x_{n},x_{m}) L(a)=n=1Nan21n=1Nm=1NanamtntmK(xn,xm)
  • 求解a的极大化,其中 K ( x n , x m ) = ϕ T ( x n ) ϕ ( x m ) K(x_{n},x_{m})=\phi^{T}(x_{n})\phi(x_{m}) K(xn,xm)=ϕT(xn)ϕ(xm)是核函数 m a x { ∑ n = 1 N a n − 1 2 ∑ n = 1 N ∑ m = 1 N a n a m t n t m K ( x n , x m ) } max \left \{ \sum_{n=1}^{N}a_{n}-\frac{1}{2}\sum_{n=1}^{N}\sum_{m=1}^{N}a_{n}a_{m}t_{n}t_{m}K(x_{n},x_{m}) \right \} max{n=1Nan21n=1Nm=1NanamtntmK(xn,xm)} s.t.   a n ⩾ 0 , ∑ n = 1 N a n t n = 0 , K ( x n , x m ) = ϕ T ( x n ) ϕ ( x m ) \textbf{s.t. } a_{n}\geqslant 0,\sum_{n=1}^{N}a_{n}t_{n}=0,K(x_{n},x_{m})=\phi^{T}(x_{n})\phi(x_{m}) s.t. an0,n=1Nantn=0,K(xn,xm)=ϕT(xn)ϕ(xm)

3. 求解b

  • 我们把w代入可以超平面得 f ( x ) = ∑ n = 1 N a n t n K ( x , x n ) + b f(x)=\sum_{n=1}^{N}a_{n}t_{n}K(x,x_{n})+b f(x)=n=1NantnK(x,xn)+b利用KKT条件得到 a n ⩾ 0 a_{n}\geqslant 0 an0 t n f ( x n ) − 1 ⩾ 0 t_{n}f(x_{n})-1 \geqslant 0 tnf(xn)10 a n { t n f ( x n ) − 1 } = 0 a_{n}\left\{ t_{n}f(x_{n})-1\right\}=0 an{tnf(xn)1}=0所以只存在两种情况要吗 a n = 0 a_{n}=0 an=0此时 ( x n , t n ) (x_{n},t_{n}) (xn,tn)是无关数据或者 a n ≠ 0 , t n f ( x n ) − 1 = 0 a_{n} \neq 0,t_{n}f(x_{n})-1=0 an̸=0,tnf(xn)1=0此时 ( x n , t n ) (x_{n},t_{n}) (xn,tn)是决策边缘边界上的点。从这里可以看出SVM仅仅与决策边界上的数据点有关,与其余的数据点无关。假设有效的点分布在一个S空间中那么我们用支持向量 x n x_{n} xn就能确定b。由 t n f ( x n ) = 1 t_{n}f(x_{n})=1 tnf(xn)=1我们可以得到(其中 N S N_{S} NS是支持向量的总数量) t n { ∑ m ∈ S a m t m K ( x n , x m ) + b } = 1 t_{n}\left\{\sum_{m\in S}a_{m}t_{m}K(x_{n},x_{m})+b\right\}=1 tn{mSamtmK(xn,xm)+b}=1 t n 2 { ∑ m ∈ S a m t m K ( x n , x m ) + b } = t n t_{n}^{2}\left\{\sum_{m\in S}a_{m}t_{m}K(x_{n},x_{m})+b\right\}=t_{n} tn2{mSamtmK(xn,xm)+b}=tn b = 1 N S ∑ n ∈ S { t n − ∑ m ∈ S a m t m K ( x n , x m ) } b=\frac{1}{N_{S}}\sum_{n\in S}\left\{t_{n}-\sum_{m\in S}a_{m}t_{m}K(x_{n},x_{m})\right\} b=NS1nS{tnmSamtmK(xn,xm)}

你可能感兴趣的:(机器学习,面试,统计学习,回归,分类)