第三课 SVM
本系列是七月算法機器學習課程筆記
文章目錄
- 1 問題
- 2 key idea 1
- 3 key idea 2
- 4 key idea 3
- 5 key idea4
- 6 拉格朗日乘子求解
- 7 核函數的發現
學習SVM不要先看數學公式,這樣把SVM的精華都丟掉了。學習SVM學習作者是如何構建出這樣一個算法的過程。
1 問題
無論線性分類、邏輯回歸、決策樹都是要找到一個決策邊界。但是這個決策邊界什么時候最好呢?
就像圖中這樣,答案應該是線條3最好,它的泛化能力更強。那怎么找到這樣的一條線呢?
2 key idea 1
目標是要找到最寬的那條街道(widest street way)。
假設這條線已經存在,可以做這條線的法向量w?\vec{w}w,那么對于需要預測的一個點,記作向量ux?\vec{u_x}ux??,那么ux?\vec{u_x}ux??在法向量上的投影和截距b有這樣一個關系:如果ux?w?+b>=0\vec{u_x}\vec{w}+b>=0ux??w+b>=0,則是屬于正分類。否則屬于負分類。u是屬于任意一個樣本。
3 key idea 2
根據上面的式子,我們可以要求如下:
對于訓練集中的正樣本x+?w?+b>=1\vec{x_+}\vec{w}+b>=1x+??w+b>=1
對于訓練集中的負樣本x??w?+b<=?1\vec{x_-}\vec{w}+b<=-1x???w+b<=?1
對于訓練集中的站在街邊的點取到等于號。
用yiy_iyi?乘以上面的式子會發現兩個條件變成一個條件了。
先看正樣本,yi=1y_i=1yi?=1,yi?(xi?w?+b)>=1?1y_i*(\vec{x_i}\vec{w}+b)>=1*1yi??(xi??w+b)>=1?1 得到 xi?w?+b>=1\vec{x_i}\vec{w}+b>=1xi??w+b>=1
再看負樣本,yi=?1y_i=-1yi?=?1, yi?(xi?w?+b)>=?1?(?1)y_i*(\vec{x_i}\vec{w}+b)>=-1*(-1)yi??(xi??w+b)>=?1?(?1),得到yi(xi?w?)+b>=1y_i(\vec{x_i}\vec{w})+b>=1yi?(xi??w)+b>=1
所以對于訓練集中的每一個樣本有這樣一個約束:yi(xi?w?+b)>=1y_i(\vec{x_i}\vec{w}+b)>=1yi?(xi??w+b)>=1
站在街邊的樣本取到等于號。
4 key idea 3
取訓練集中站在街邊的一個正樣本x+?\vec{x_+}x+??,一個負樣本x??\vec{x_-}x???,可以得到一個x+??x??\vec{x_+}-\vec{x_-}x+???x???(圖中紅色的向量)
這條街的寬度就是紅色向量在法向量上的投影。
width=(x+??x??)w?∣w?∣width=(\vec{x_+}-\vec{x_-})\dfrac{\vec{w}}{|\vec{w}|}width=(x+???x???)∣w∣w?
對于站點街上的正樣本,因為yi(x+?w?+b)=1y_i(\vec{x_+}\vec{w}+b)=1yi?(x+??w+b)=1,得到x+?w?=1?b\vec{x_+}\vec{w}=1-bx+??w=1?b
對于站點街上的負樣本,因為yi(x??w?+b)=1y_i(\vec{x_-}\vec{w}+b)=1yi?(x???w+b)=1,得到x??w?=?1+b\vec{x_-}\vec{w}=-1+bx???w=?1+b
代入上面的式子
width=(x+??x??)w?∣w?∣=2∣w?∣width=(\vec{x_+}-\vec{x_-})\dfrac{\vec{w}}{|\vec{w}|}=\dfrac{2}{|\vec{w}|}width=(x+???x???)∣w∣w?=∣w∣2?
推到到這里,發現這個寬度和數據集沒有關系。
要想width最大,那就應該2∣w?∣\dfrac{2}{|\vec{w}|}∣w∣2?最大,那么就∣w?∣|\vec{w}|∣w∣最小,那就12∣w?∣2\dfrac{1}{2}|\vec{w}|^221?∣w∣2最小。
到現在的結論是:min(12∣w?∣2)min(\dfrac{1}{2}|\vec{w}|^2)min(21?∣w∣2),約束條件是:yi(xi?w?+b)?1=0y_i(\vec{x_i}\vec{w}+b)-1=0yi?(xi??w+b)?1=0
5 key idea4
現在我們知道目標是要找到最小的(12∣w?∣2)(\dfrac{1}{2}|\vec{w}|^2)(21?∣w∣2),在約束條件下:yi(xi?w?+b)?1=0y_i(\vec{x_i}\vec{w}+b)-1=0yi?(xi??w+b)?1=0
使用拉格朗日解決:L=12∣w?∣2?∑λi[yi(xi?w?+b)?1]L=\dfrac{1}{2}|\vec{w}|^2-\sum\lambda_i[y_i(\vec{x_i}\vec{w}+b)-1]L=21?∣w∣2?∑λi?[yi?(xi??w+b)?1]
在這個式子中,假設拉格朗日因子λ\lambdaλ已知,w和b是未知數。
首先對w求導取到極值點:w??∑λiyixi?=0\vec{w}-\sum\lambda_iy_i\vec{x_i}=0w?∑λi?yi?xi??=0,得到w?=∑λiyixi?\vec{w}=\sum\lambda_iy_i\vec{x_i}w=∑λi?yi?xi??
其次對b求導取到極值點:∑λiyi=0\sum\lambda_iy_i=0∑λi?yi?=0
將剛剛求得的兩個式子帶回到拉格朗日式子:
L=12∣w?∣2?∑λi[yi(xi?w?+b)?1]L=\dfrac{1}{2}|\vec{w}|^2-\sum\lambda_i[y_i(\vec{x_i}\vec{w}+b)-1]L=21?∣w∣2?∑λi?[yi?(xi??w+b)?1]
=12∑λiyixi?∑λjyjxj??∑λiyixi?∑λjyjxj??∑λiyib+∑λi=\dfrac{1}{2}\sum\lambda_iy_i\vec{x_i}\sum\lambda_jy_j\vec{x_j}-\sum\lambda_iy_i\vec{x_i}\sum\lambda_jy_j\vec{x_j}-\sum\lambda_iy_ib+\sum\lambda_i=21?∑λi?yi?xi??∑λj?yj?xj???∑λi?yi?xi??∑λj?yj?xj???∑λi?yi?b+∑λi?
=12∑λiyixi?∑λjyjxj??∑λiyixi?∑λjyjxj?+∑λi=\dfrac{1}{2}\sum\lambda_iy_i\vec{x_i}\sum\lambda_jy_j\vec{x_j}-\sum\lambda_iy_i\vec{x_i}\sum\lambda_jy_j\vec{x_j}+\sum\lambda_i=21?∑λi?yi?xi??∑λj?yj?xj???∑λi?yi?xi??∑λj?yj?xj??+∑λi?
=∑λi?12∑λiyixi?∑λjyjxj?=\sum\lambda_i-\dfrac{1}{2}\sum\lambda_iy_i\vec{x_i}\sum\lambda_jy_j\vec{x_j}=∑λi??21?∑λi?yi?xi??∑λj?yj?xj??
=∑λi?12∑∑λiλjyiyj(xi?xj?)=\sum\lambda_i-\dfrac{1}{2}\sum\sum\lambda_i\lambda_jy_iy_j(\vec{x_i}\vec{x_j})=∑λi??21?∑∑λi?λj?yi?yj?(xi??xj??)
可以看到L取決于兩個樣本的乘積:xi?xj?\vec{x_i}\vec{x_j}xi??xj??
6 拉格朗日乘子求解
拉格朗日乘子:λi\lambda_iλi?可以使用SMO、KTT、QP來求解。在求解過程中每次以其中兩個數λi\lambda_iλi?,λj\lambda_jλj?為未知數進行求導,求得下一輪的值。因為如果只以一個為未知數:λi\lambda_iλi?那么會存在另外一個λj\lambda_jλj?和它是線性關系,不能求解。
7 核函數的發現
用來預測的函數:如果w?u?+b>=0\vec{w}\vec{u}+b>=0wu+b>=0,則是屬于正分類。
∑λiyixi?u?+b>=0\sum\lambda_iy_i\vec{x_i}\vec{u}+b>=0∑λi?yi?xi??u+b>=0
∑λiyi(xi?u?)+b>=0\sum\lambda_iy_i(\vec{x_i}\vec{u})+b>=0∑λi?yi?(xi??u)+b>=0
xi?u?\vec{x_i}\vec{u}xi??u是向量的點乘,表示一個線性關系。如果樣本線性不可分,怎么辦?一種方法是將每個點升級到高維空間。讓它們在高維空間線性可分。發現找不到這樣的線性函數。上面的式子告訴我們,不用找到每個點的高維空間,只要找到兩個點點乘的高維空間即可。也就是說K(xi,xj)=Θ(xi)Θ(xj)K(x_i,x_j)=\varTheta(x_i)\varTheta(x_j)K(xi?,xj?)=Θ(xi?)Θ(xj?)
常用的核函數有:
線性核函數:K(xi,xj)=xiTxjK(x_i,x_j)=x_i^Tx_jK(xi?,xj?)=xiT?xj?
多項式核函數:K(xi,xj)=(λxiTxj+r)dK(x_i,x_j)=(\lambda x_i^Tx_j+r)^dK(xi?,xj?)=(λxiT?xj?+r)d
RBF:K(xi,xj)=e1λ∣xi?xj∣2K(x_i,x_j)=e^{\dfrac{1}{\lambda|x_i-x_j|^2}}K(xi?,xj?)=eλ∣xi??xj?∣21?
sigmoid函數:K(xi,xj)=tanh(λxiTxj+r)K(x_i,x_j)=tanh(\lambda x_i^Tx_j+r)K(xi?,xj?)=tanh(λxiT?xj?+r)
總結
- 上一篇: Typesafe公司正式更名为Light
- 下一篇: 回归初心