上数据挖掘课的樊老师讲了三节课,一堆堆的数学符号。这里加以整理,非常感谢樊老师讲的知识。(我不生产知识,我只是知识的搬运工, 开个玩笑嘻嘻)。这里记录一下过程还有我对过程的一些理解。
为避免像上次一样一些网站转载博客而不标注网址,这里我提一下:
本文链接: https://blog.csdn.net/weixin_43850253/article/details/109356427
其中,线性的有hard margin SVM 和 soft margin SVM, 非线性的有kernel SVM。
hard margin SVM要求两个支持向量之间不存在数据点,如果存在的话则要使用soft margin SVM。
这里我们要分割出两个类别,要使得离支持向量最近的点到支持向量的距离最大,这个时候这个线(或平面或者超平面) 的分类效果是最好的。
点到超平面的距离公式如下:
d = ∣ w T x i + b ∣ ∣ ∣ w ∣ ∣ d ~=~ \frac{|w^Tx_i ~+~ b|}{||w||} d = ∣∣w∣∣∣wTxi + b∣
如何推导的话这里推荐一篇博客: SVM 任意点到超平面的距离公式
然后我们的目标就变为了如下
m a x w , b m i n x i ∣ w T x i + b ∣ ∣ ∣ w ∣ ∣ max_{w, b} ~ min_{x_i} \frac{|w^Tx_i ~+~ b|}{||w||} \\ maxw,b minxi∣∣w∣∣∣wTxi + b∣
⇒ m a x w , b 1 ∣ ∣ w ∣ ∣ m i n x i ∣ w T x i + b ∣ ⇒ max_{w, b} \frac{1}{||w||} ~ min_{x_i} |w^Tx_i ~+~ b| \\ ⇒maxw,b∣∣w∣∣1 minxi∣wTxi + b∣
{ m a x w , b 1 ∣ ∣ w ∣ ∣ m i n x i y i ( w T x i + b ) s t . y i ( w T x i + b ) > 0 \left\{ \begin{array}{l} max_{w, b} \frac{1}{||w||} ~ min_{x_i} ~y_i(w^Tx_i ~+~ b) \\ st. ~~~ y_i (w^Tx_i ~+~ b) ~>~ 0 \end{array} \right. {maxw,b∣∣w∣∣1 minxi yi(wTxi + b)st. yi(wTxi + b) > 0
故 ∃r > 0, st. yi(wTxi + b) = r
⇒ { m a x 1 ∣ ∣ w ∣ ∣ m i n x i r s t . y i ( w T x i + b ) > r ⇒ \left\{ \begin{array}{l} max \frac{1}{||w||} ~ min_{x_i} ~ r \\ st. ~~~ y_i (w^Tx_i ~+~ b) ~>~ r \end{array} \right. ⇒{max∣∣w∣∣1 minxi rst. yi(wTxi + b) > r
再令 r = 1,
⇒ { m a x 1 ∣ ∣ w ∣ ∣ s t . y i ( w T x i + b ) ≥ 1 ⇒ \left\{ \begin{array}{l} max \frac{1}{||w||} \\ st. ~~~ y_i (w^Tx_i ~+~ b) ~≥~ 1 \end{array} \right. ⇒{max∣∣w∣∣1st. yi(wTxi + b) ≥ 1
⇒ { m i n 1 2 w T w s t . y i ( w T x i + b ) ≥ 1 ⇒ \left\{ \begin{array}{l} min~ \frac{1}{2} w^T w \\ st. ~~~ y_i (w^Tx_i ~+~ b) ~≥~ 1 \end{array} \right. ⇒{min 21wTwst. yi(wTxi + b) ≥ 1
再得出原问题:
⇒ { m i n 1 2 w T w s t . 1 − y i ( w T x i + b ) ≤ 0 ⇒ \left\{ \begin{array}{l} min~ \frac{1}{2} w^T w \\ st. ~~~ 1 - y_i (w^Tx_i ~+~ b) ~≤~ 0 \end{array} \right. ⇒{min 21wTwst. 1−yi(wTxi + b) ≤ 0
此时我们用一下拉格朗日乘子,将约束条件去掉:
⇒ { m i n w , b m a x α 1 2 w T w + ∑ i = 1 N α i ( 1 − y i ( w T x i + b ) ) s t . α i > 0 ⇒ \left\{ \begin{array}{l} min_{w, b} ~ max_{α} ~ \frac{1}{2} w^T w ~+~ \sum_{i=1}^{N}{α_i(1 ~-~ y_i(w^Tx_i ~+~ b))} \\ st. ~~~ α_i > 0 \end{array} \right. ⇒{minw,b maxα 21wTw + ∑i=1Nαi(1 − yi(wTxi + b))st. αi>0
接下来这一步涉及对偶问题,必须在满足KTT条件的时候进行。
⇒ { m a x α m i n w , b 1 2 w T w + ∑ i = 1 N α i ( 1 − y i ( w T x i + b ) ) s t . α i > 0 ⇒ \left\{ \begin{array}{l} max_{α} ~ min_{w, b} ~ \frac{1}{2} w^T w ~+~ \sum_{i=1}^{N}{α_i(1 ~-~ y_i(w^Tx_i ~+~ b))} \\ st. ~~~ α_i > 0 \end{array} \right. ⇒{maxα minw,b 21wTw + ∑i=1Nαi(1 − yi(wTxi + b))st. αi>0
min max L ≥ max min L
这里插入此题满足的KKT条件(如果想了解KKT条件,可以看后边的不等式约束优化问题的部分):
⇒ { ∂ L ∂ w = 0 , ∂ L ∂ b = 0 , ∂ L ∂ α = 0 α i ( 1 − y i ( w T x i + b ) ) = 0 α i > 0 1 − y i ( w T x i + b ) ≤ 0 ⇒ \left\{ \begin{array}{l} \frac{\partial{L}}{\partial{w}} = 0, \frac{\partial{L}}{\partial{b}} = 0, \frac{\partial{L}}{\partial{α}} = 0 \\ α_i(1 ~-~ y_i(w^Tx_i + b)) = 0 \\ α_i > 0 \\ 1 ~-~ y_i(w^Tx_i ~+~ b) ~≤~ 0 \end{array} \right. ⇒⎩ ⎨ ⎧∂w∂L=0,∂b∂L=0,∂α∂L=0αi(1 − yi(wTxi+b))=0αi>01 − yi(wTxi + b) ≤ 0
其中, α i (1 - y i (wTx i + b)) = 0 是 松弛互补条件。
然后我们回到上面那个式子
{ m i n w , b m a x α 1 2 w T w + ∑ i = 1 N α i ( 1 − y i ( w T x i + b ) ) s t . α i > 0 \left\{ \begin{array}{l} min_{w, b} ~ max_{α} ~ \frac{1}{2} w^T w ~+~ \sum_{i=1}^{N}{α_i(1 ~-~ y_i(w^Tx_i ~+~ b))} \\ st. ~~~ α_i > 0 \end{array} \right. {minw,b maxα 21wTw + ∑i=1Nαi(1 − yi(wTxi + b))st. αi>0
对目标函数进行展开得到:
m i n w , b L = 1 2 w T w + ∑ i = 1 N α i ( 1 − y i ( w T x i + b ) ) = 1 2 w T w + ∑ i = 1 N α i − ∑ i = 1 N α i y i w T x i − ∑ i = 1 N α i y i b min_{w, b}L ~=~ \frac{1}{2} w^Tw + \sum_{i=1}^{N}{α_i (1 ~-~y_i(w^Tx_i ~+~ b))} \\ ~=~ \frac{1}{2} w^Tw + \sum_{i=1}^{N}{α_i} - \sum_{i=1}^{N}{α_i~y_i~w^Tx_i} ~-~ \sum_{i=1}^{N}{α_i~y_i~b} minw,bL = 21wTw+i=1∑Nαi(1 − yi(wTxi + b)) = 21wTw+i=1∑Nαi−i=1∑Nαi yi wTxi − i=1∑Nαi yi b
令L对b的偏导为0,即
∂ L ∂ b = − ∑ i = 1 N α i y i = 0 \frac{\partial{L}}{\partial{b}} ~=~ - \sum_{i=1}^{N}{α_i~y_i} = 0 ∂b∂L = −i=1∑Nαi yi=0
⇒ ∑ i = 1 N α i y i = 0 ⇒ \sum_{i=1}^{N}{α_i~y_i} = 0 ⇒i=1∑Nαi yi=0
令L对w偏导为0, 即
∂ L ∂ w = w − ∑ i = 1 N α i y i x i = 0 \frac{\partial{L}}{\partial{w}} ~=~ w - \sum_{i=1}^{N}{α_i~y_i~x_i} = 0 ∂w∂L = w−i=1∑Nαi yi xi=0
⇒ w ∗ = ∑ i = 1 N α i ∗ y i x i ⇒ w^* = \sum_{i=1}^{N}{α_i^*~y_i~x_i} ⇒w∗=i=1∑Nαi∗ yi xi
我们再将上述带入到原来的目标方程中,得到
m i n w , b L ( w ∗ , b ∗ ) = 1 2 ( ∑ i = 1 N α i y i x i ) T ∑ j = 1 N α j y j x j + ∑ i = 1 N α i − ∑ i = 1 N ( α i y i ( ∑ j = 1 N α j y j x j ) T x i ) min_{w, b} L(w^*, b^*) \\ = \frac{1}{2} ( \sum_{i=1}^{N}{α_i~y_i~x_i})^T ~ \sum_{j=1}^{N}{α_j~y_j~x_j} ~+~ \sum_{i=1}^{N}α_i ~-~ \sum_{i=1}^{N} (α_i~y_i( \sum_{j=1}^{N}α_j~y_j~x_j)^Tx_i) minw,bL(w∗,b∗)=21(i=1∑Nαi yi xi)T j=1∑Nαj yj xj + i=1∑Nαi − i=1∑N(αi yi(j=1∑Nαj yj xj)Txi)
= 1 2 ( ∑ i = 1 N ∑ j = 1 N α i α j y i y j x i T x j − ∑ i = 1 N ∑ j = 1 N α i α j y i y j x j T x i + ∑ i = 1 N α i = − 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j x i T x j + ∑ i = 1 N α i ~= \frac{1}{2} ( \sum_{i=1}^{N} \sum_{j=1}^{N} α_i~α_j~y_i~y_j~x_i^T~x_j ~-~ \sum_{i=1}^{N} \sum_{j=1}^{N} α_i~α_j~y_i~y_j~x_j^T~x_i +\sum_{i=1}^{N} α_i ~~~~~~~~~~\\ ~= -\frac{1}{2} \sum_{i=1}^{N} \sum_{j=1}^{N} α_i~α_j~y_i~y_j~x_i^T~x_j + \sum_{i=1}^{N} α_i ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ =21(i=1∑Nj=1∑Nαi αj yi yj xiT xj − i=1∑Nj=1∑Nαi αj yi yj xjT xi+i=1∑Nαi =−21i=1∑Nj=1∑Nαi αj yi yj xiT xj+i=1∑Nαi
在上面合并的过程中,值得一提的是 x iT x j = x jT x i, 不明白的读者可以自行举个例子试一下就知道了。从原理上就是两个向量响应的位置相乘,得到一个个标量,再加起来,每一个标量都是相同的,故加起来也是相同的,因此两者必定相等。
接着由上式得到去约束的原问题为
{ m a x α − 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j x i T x j + ∑ i = 1 N α i s t . α i > 0 , i = 1 , 2 , . . . , N \left\{ \begin{array}{l} max_α ~-\frac{1}{2} \sum_{i=1}^{N} \sum_{j=1}^{N} α_i~α_j~y_i~y_j~x_i^T~x_j + \sum_{i=1}^{N} α_i \\ st. ~~~ α_i > 0, ~~i = 1, 2, ..., N \end{array} \right. {maxα −21∑i=1N∑j=1Nαi αj yi yj xiT xj+∑i=1Nαist. αi>0, i=1,2,...,N
⇒ { m i n α 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j x i T x j + ∑ i = 1 N α i s t . α i > 0 , i = 1 , 2 , . . . , N ⇒ \left\{ \begin{array}{l} min_α ~~\frac{1}{2} \sum_{i=1}^{N} \sum_{j=1}^{N} α_i~α_j~y_i~y_j~x_i^T~x_j + \sum_{i=1}^{N} α_i \\ st. ~~~ α_i > 0, ~~i = 1, 2, ..., N \end{array} \right. ⇒{minα 21∑i=1N∑j=1Nαi αj yi yj xiT xj+∑i=1Nαist. αi>0, i=1,2,...,N
然后我们再考虑一下 b*
由KTT条件中的 1 - yi (wTxi + b) ≤ 0 ,我们可以得到
∃(xk, yk), st.
1 - yk (wTxk + b) = 0
⇒ 1 = yk (wTxk + b)
两边同时乘以 yk, 注意到二分类问题我们y的取值只有 +1和-1,故有
⇒ yk = yk2 (wTxk + b)
⇒ yk = wTxk + b
我们进而可以推出
b ∗ = y k − w T x k = y k − ( ∑ i = 1 N α i y i x i ) T x k = y k − ∑ i = 1 N α i y i x i T x k b^* ~=~ y_k - w^Tx_k ~~~~~~~~~~~~~~~~~~~~~~~\\ ~= y_k - (\sum_{i=1}^{N} α_i~y_i~x_i)^T~ x_k \\ ~= y_k - \sum_{i=1}^{N} α_i~y_i~x_i^T~ x_k ~~~~~ b∗ = yk−wTxk =yk−(i=1∑Nαi yi xi)T xk =yk−i=1∑Nαi yi xiT xk
最后一步转换是因为 α 和 y 都为标量。
故到这里我们知道
{ w ∗ = ∑ i = 1 N α i ∗ y i x i b ∗ = y k − ∑ i = 1 N α i y i x i T x k \left\{ \begin{array}{l} w^* ~=~ \sum_{i=1}^{N} α_i^*~y_i~x_i \\ b^* ~~=~ y_k - \sum_{i=1}^{N} α_i~y_i~x_i^T~ x_k \end{array} \right. {w∗ = ∑i=1Nαi∗ yi xib∗ = yk−∑i=1Nαi yi xiT xk
最后得到最优超平面方程
f ( x ) = s i g n ( w ∗ T x + b ∗ ) f(x) ~=~ sign(w^{*T}x ~+~ b^*) f(x) = sign(w∗Tx + b∗)
其中,sign函数是
s i g n ( x ) = { 1 , i f x > 0 0 , i f x = 0 − 1 , i f x < 0 sign(x) = \left\{ \begin{array}{l} 1, ~~~~if ~~x ~ > 0\\ 0, ~~~~if ~~x ~ = 0\\ -1, ~if ~~x ~ < 0 \end{array} \right. sign(x)=⎩ ⎨ ⎧1, if x >00, if x =0−1, if x <0
尽管我们已经有了hard margin SVM, 但是现实生活中并不总能保证支持向量中间没有数据点,这时候就得考虑一下soft margin SVM了。
我们有这样一种思路,如果数据点出现在支持向量中间,那么我们就对齐进行乘法,即像这种形式:
min 1/2 * wT w + loss_function
我们针对loss_function来思考一下第一种思路。
我们来加个指示函数 q, 令 z = yi (wT xi + b)
q = { 1 , i f z < 1 0 , i f o t h e r w i s s e q~=~ \left\{ \begin{array}{l} 1, ~~~~if ~~z ~ < 1 \\ 0, ~~~~if ~~otherwisse \end{array} \right. q = {1, if z <10, if otherwisse
即此时
l o s s _ f u n c t i o n = ∑ i = 1 N q { y i ( w T x i + b ) < 1 } loss\_function ~=~ \sum_{i=1}^{N}{q\{ y_i(w^Tx_i ~+~ b) <1\}} loss_function = i=1∑Nq{yi(wTxi + b)<1}
但是我们会发现一个问题,这样的函数 q 并不可微,原因是当 z = 1 的时候函数突变了,故函数并不连续。
我们有另一种想法,就是如果里支持向量越远那么惩罚项应该越大,故此时我们有第二种思路。
if yi (wT xi + b) ≥ 1, loss = 0
if yi (wT xi + b) < 1, loss = 1 - yi(wTxi + b)
令 ξ i = 1 - yi (wTx i + b),
故原问题为
{ m i n 1 2 w T w + c ∑ i = 1 N m a x { 0 , ξ i } s t . y i ( w T x i + b ) ≥ 1 − ξ i ξ i ≥ 0 \left\{ \begin{array}{l} min \frac{1}{2} w^Tw ~+~ c \sum_{i=1}^{N}max\{0, ξ_i \} \\ st. ~~~ y_i(w^Tx_i ~+~ b) ≥ 1 - ξ_i \\ ξ_i ~≥~ 0 \end{array} \right. ⎩ ⎨ ⎧min21wTw + c∑i=1Nmax{0,ξi}st. yi(wTxi + b)≥1−ξiξi ≥ 0
⇒ { m i n 1 2 w T w + c ∑ i = 1 N ξ i s t . y i ( w T x i + b ) ≥ 1 − ξ i , ξ i ≥ 0 ⇒ \left\{ \begin{array}{l} min \frac{1}{2} w^Tw ~+~ c \sum_{i=1}^{N}ξ_i \\ st. ~~~y_i(w^Tx_i ~+~ b) ≥ 1 - ξ_i ~~, \\ ξ_i ~≥~ 0 \end{array} \right. ⇒⎩ ⎨ ⎧min21wTw + c∑i=1Nξist. yi(wTxi + b)≥1−ξi ,ξi ≥ 0
因此应用拉格朗日乘子消掉约束条件得到 目标函数L 为
L = 1 2 w T w + C ∑ i = 1 N ξ i + ∑ i = 1 N α i ( 1 − y i ( w T x i + b ) − ξ i ) + ∑ i = 1 N μ i ξ i L = \frac{1}{2} w^Tw ~+~ C \sum_{i=1}^{N}ξ_i + \sum_{i=1}^{N}α_i(1~-~y_i(w^Tx_i~+~b)~-~ ξ_i) ~+~ \sum_{i=1}^{N} μ_i~ξ_i L=21wTw + Ci=1∑Nξi+i=1∑Nαi(1 − yi(wTxi + b) − ξi) + i=1∑Nμi ξi
其中,α_i 和 μ_i 都是拉格朗日乘子。
我们对 w, b, ξ_i 偏导可得
w = ∑ i = 1 N α i y i x i 0 = ∑ i = 1 N a i y i C = a i + μ i w = \sum_{i=1}^{N}{α_i~y_i~x_i} \\ 0 = \sum_{i=1}^{N}{a_i~y_i} ~~~\\ C ~=~ a_i ~+~ μ_i ~~~~~ w=i=1∑Nαi yi xi0=i=1∑Nai yi C = ai + μi
其中 第一条式子和第二条式子计算过程与硬间隔差不多。然后第三条式子的计算:
∂ L ∂ ξ i = 0 + C − α i − μ i = 0 \frac{\partial{L}}{\partial{ξ_i }} = 0 ~+~ C ~-~ α_i ~-~ μ_i ~=~ 0 ∂ξi∂L=0 + C − αi − μi = 0
⇒ C = α i + μ i ⇒ C = α_i ~+~ μ_i ~~~~~~~~~~~~~~~~~~~~~~~~~ ⇒C=αi + μi
然后把上述结果带入到函数L中,得到
m i n w , b , ξ i L ( w , b , α , ξ , μ ) = 1 2 w T w + C ∑ i = 1 N ξ i + ∑ i = 1 N α i ( 1 − y i ( w T x i + b ) − ξ i ) − ∑ i = 1 N μ i ξ i = 1 2 w T w + ∑ i = 1 N α i ( 1 − y i ( w T x i + b ) ) + C ∑ i = 1 N ξ i − ∑ i = 1 N α i ξ i − ∑ i = 1 N μ i ξ i = − 1 2 ∑ i = 1 N α i y i x i T ∑ i = 1 N α i y i x i + ∑ i = 1 N α i + ∑ i = 1 N C ξ i − ∑ i = 1 N α i ξ i − ∑ i = 1 N μ i ξ i = − 1 2 ∑ i = 1 N α i y i x i T ∑ i = 1 N α i y i x i + ∑ i = 1 N α i + ∑ i = 1 N ( C − μ i − μ i ) ξ i = ∑ i = 1 N α i − 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j x i T x j min_{w, b, ξ_i} L(w, b, α, ξ, μ) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\\ ~= \frac{1}{2} w^Tw ~+~ C \sum_{i=1}^{N}ξ_i + \sum_{i=1}^{N}α_i(1~-~y_i(w^Tx_i~+~b)~-~ ξ_i) ~-~ \sum_{i=1}^{N} μ_i~ξ_i ~~~~~~~\\ ~= \frac{1}{2} w^Tw + \sum_{i=1}^{N}α_i(1~-~y_i(w^Tx_i~+~b)) + C\sum_{i=1}^{N}{ξ_i } ~-~ \sum_{i=1}^{N}{α_i~ξ_i} - \sum_{i=1}^{N} μ_i~ξ_i \\ ~= -\frac{1}{2}\sum_{i=1}^{N}α_i~y_i~x_i^T\sum_{i=1}^N{α_i~y_i~x_i} ~+ \sum_{i=1}^{N}α_i ~+ \sum_{i=1}^{N}{Cξ_i } ~-~ \sum_{i=1}^{N}{α_i~ξ_i} - \sum_{i=1}^{N} μ_i~ξ_i \\ ~= -\frac{1}{2}\sum_{i=1}^{N}α_i~y_i~x_i^T\sum_{i=1}^N{α_i~y_i~x_i} ~+ \sum_{i=1}^{N}α_i ~+ \sum_{i=1}^{N}{(C ~-~ μ_i ~-~ μ_i)ξ_i} ~~~~~~~~~~~~~~~\\ ~= \sum_{i=1}^{N}α_i ~-~ \frac{1}{2} \sum_{i=1}^{N}\sum_{j=1}^{N}α_i~α_j~y_i~y_j~x_i^Tx_j ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ minw,b,ξiL(w,b,α,ξ,μ) =21wTw + Ci=1∑Nξi+i=1∑Nαi(1 − yi(wTxi + b) − ξi) − i=1∑Nμi ξi =21wTw+i=1∑Nαi(1 − yi(wTxi + b))+Ci=1∑Nξi − i=1∑Nαi ξi−i=1∑Nμi ξi =−21i=1∑Nαi yi xiTi=1∑Nαi yi xi +i=1∑Nαi +i=1∑NCξi − i=1∑Nαi ξi−i=1∑Nμi ξi =−21i=1∑Nαi yi xiTi=1∑Nαi yi xi +i=1∑Nαi +i=1∑N(C − μi − μi)ξi =i=1∑Nαi − 21i=1∑Nj=1∑Nαi αj yi yj xiTxj
插一句,这里u i ξ i前面的是符号,是为了和后面可以和 C 消掉,因为C = αi + μi 。不知道对不对,还请大佬指教。
所以
m a x α , μ m i n w , b , ξ L ( w , b , α , ξ , μ ) = m a x α , μ ∑ i = 1 N α i − 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j x i T x j = m a x α ∑ i = 1 N α i − 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j x i T x j max_{α,μ}min_{w,b,ξ}L(w,b,α,ξ,μ) ~~~~~~~~~~~~~~~~~~~~~~~~~ \\ ~= max_{α,μ} \sum_{i=1}^{N}α_i ~-~ \frac{1}{2} \sum_{i=1}^{N} \sum_{j=1}^{N}α_i~α_j~y_i~y_j~x_i^T~x_j \\ ~= max_{α} \sum_{i=1}^{N}α_i ~-~ \frac{1}{2} \sum_{i=1}^{N} \sum_{j=1}^{N}α_i~α_j~y_i~y_j~x_i^T~x_j \\ maxα,μminw,b,ξL(w,b,α,ξ,μ) =maxα,μi=1∑Nαi − 21i=1∑Nj=1∑Nαi αj yi yj xiT xj =maxαi=1∑Nαi − 21i=1∑Nj=1∑Nαi αj yi yj xiT xj
然后又因为
α i ≥ 0 μ i ≥ 0 C = α i + μ i α_i ~≥~ 0 ~~~~~~~~~~~\\ μ_i ~≥~ 0 ~~~~~~~~~~~\\ C ~=~ α_i ~+~ μ_i αi ≥ 0 μi ≥ 0 C = αi + μi
消去μ_i 可得等价约束条件为:
0 ≤ α i ≤ C , i = 1 , 2 , . . . , m 0 ~≤~ α_i ~≤~ C, ~~i ~=~ 1,2,...,m 0 ≤ αi ≤ C, i = 1,2,...,m
这里满足的 KTT 条件为:
{ α i ≥ 0 , μ i ≥ 0 , y i f ( x i ) − 1 + ξ i ≥ 0 , α i ( y i f ( x i ) − 1 + ξ i ) = 0 , ξ i ≥ 0 , μ i ξ i = 0 \left\{ \begin{array}{l} α_i ~≥~ 0, ~μ_i ~≥~ 0 ,\\ y_if(x_i) ~-~ 1 ~+~ ξ_i ~≥~ 0, \\ α_i(y_if(x_i) ~-~ 1 ~+~ ξ_i) ~=~ 0, \\ ξ_i ~≥~ 0, ~~μ_i~ξ_i ~=~ 0 \end{array} \right. ⎩ ⎨ ⎧αi ≥ 0, μi ≥ 0,yif(xi) − 1 + ξi ≥ 0,αi(yif(xi) − 1 + ξi) = 0,ξi ≥ 0, μi ξi = 0
最终,原问题是
{ m i n α 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j x i T x j − ∑ i = 1 N α i s . t . ∑ i = 1 N α i α j = 0 , 0 ≤ α i ≤ C \left\{ \begin{array}{l} min_{α} ~ \frac{1}{2} \sum_{i=1}^{N} \sum_{j=1}^{N}α_i~α_j~y_i~y_j~x_i^T~x_j ~-~ \sum_{i=1}^{N}α_i \\ s.t. \sum_{i=1}^{N}α_i α_j = 0, \\ 0 ≤ α_i ≤ C \end{array} \right. ⎩ ⎨ ⎧minα 21∑i=1N∑j=1Nαi αj yi yj xiT xj − ∑i=1Nαis.t.∑i=1Nαiαj=0,0≤αi≤C
经过上面对硬间隔(hard margin, 也称线性可分)和软间隔(soft margin)的学习,我们可以用SVM解决线性问题。但是非线性问题该怎么办呢?比如著名的异或问题。
前辈们想到一个好办法,把原来的数据映射(变换)到一个更高的维度,使得原来的数据可以通过超平面来划分。
这就把解决线性问题的模型拓展到了非线性的领域里去了,这种变换对应的函数称为核函数,该操作也叫核技巧(kernel trick)。
因为有些问题并不一定可以有效地求出核函数具体的表达形式,但是我们可以通过直接用核函数替换内积 xiT xj直接求出,即 要计算xiT xj,只要计算 K(xi, xj)即可,其中,K代表核函数。
前辈们总结了一些常用的核函数:
还没结束呢,朋友们。由于这里涉及到不等式的优化问题,这里我们稍微来研究一下这个KKT条件。
我们先来看看满足条件是的等号的情况,这里举个例子
{ m i n f ( x ) s . t . g ( x ) = 0 \left\{ \begin{array}{l} min f(x) \\ s.t. ~~~g(x) = 0 \end{array} \right. {minf(x)s.t. g(x)=0
备注:f(x)一般是损失函数,而 g ( x ) = 0 g(x)=0 g(x)=0则代表需要满足的条件。
这里我们用拉格朗日乘子法,
⇒ L ( x , λ ) = f ( x ) + λ g ( x ) ⇒ L(x, λ) ~=~ f(x) ~+~ λg(x) ⇒L(x,λ) = f(x) + λg(x)
所以原问题是
m i n L ( x , λ ) = f ( x ) + λ g ( x ) min L(x, λ) ~=~ f(x) ~+~ λg(x) minL(x,λ) = f(x) + λg(x)
我们分别对x, λ求偏导, 得到
∇ x L = ∇ x f ( x ) + λ g ( x ) = 0 ∇ λ L = g ( x ) = 0 ∇_xL = ∇_xf(x) ~+~ λg(x) = 0 \\ ∇_λL = g(x) = 0 ~~~~~~~~~~~~~~~~~~~~~~ ∇xL=∇xf(x) + λg(x)=0∇λL=g(x)=0
因此
λ = − ∇ x f ( x ) ∇ x g ( x ) λ ~=~ -\frac{∇ _xf(x)}{∇ _xg(x)} λ = −∇xg(x)∇xf(x)
看完这个例子之后,我们来看看不等式约束优化问题.
{ m i n f ( x ) s . t . g ( x ) ≤ 0 \left\{ \begin{array}{l} min f(x) \\ s.t. ~~ g(x) ≤ 0 \end{array} \right. {minf(x)s.t. g(x)≤0
可行域 k = {x ∈ Rn | g(x) ≤ 0}
假设x* 满足约束条件,分两种情况来讨论:
故这个问题的KKT条件即为:
{ ∇ x f = 0 , ∇ λ f = 0 g ( x ) ≤ 0 λ g ( x ) = 0 λ ≥ 0 \left\{ \begin{array}{l} ∇_x f = 0, ~~∇_λ f = 0 \\ g(x) ≤ 0 \\ λg(x) = 0 \\ λ ≥ 0 \end{array} \right. ⎩ ⎨ ⎧∇xf=0, ∇λf=0g(x)≤0λg(x)=0λ≥0
另外这个讲解不错,值得一看: Karush-Kuhn-Tucker (KKT)条件
由于公式繁多,难免错漏,欢迎读者批评指正。SVM作为机器学习很火的一个算法,觉得还是很值得花点时间学习的。
参考书籍: 《机器学习》,周志华, 清华大学出版社