Support vector machine (SVM)
author:Puchi
date:2020.04.22
tags: ‘SVM’, ‘study group’
SVM (Hard margin)
給定一個training dataset
$$S={(x^i,y_i)|x^i\in R^n, y_i\in{-1,1},i=1,…,l}$$$$x_+\in A_+\quad iff\quad y=1 \quad and \quad x_-\in A_-\quad iff \quad y=-1.$$
想要從training data的資訊找出一個function f:R^n->R 使得
$f(x)>0 \rightarrow x\in A_+$ and $f(x)<0 \rightarrow x\in A_-$
目標:預測新進來的data的label
最原始的SVM在解的最佳化問題:
$$min_{ {\bf x},\gamma}\dfrac{1}{2}|{\bf w}|^2_2,$$$$s.t.\quad y_i({\bf w}^T{\bf x}_i+b)>=1,\quad i=1,…,n.$$
Primal form and Dual form
Primal form:
$$min_{ {\bf x},\gamma}\dfrac{1}{2}|{\bf w}|^2_2,$$$$s.t.\quad y_i({\bf w}^T{\bf x}_i+b)>=1,\quad i=1,…,n.$$
Dual form:
$$max_\alpha\quad 1^T\alpha-\dfrac{1}{2}{\bf\alpha}^TDAA^TD{\bf\alpha}$$$$s.t.\quad 1^TD{\bf\alpha}=0,\quad {\bf\alpha}\geq 0.$$
Dual form推導:
$$L(w,b,\alpha)=\dfrac{1}{2}w^Tw+\alpha^T(1-D(Aw+1b)),\alpha\geq 0$$$$\dfrac{\partial}{\partial w}L(w,b,\alpha)=w-ATD\alpha=0$$$$\dfrac{\partial}{\partial b}L(w,b,\alpha)=a^TD\alpha=\sum_{i=1}^ly_i\alpha_i=0$$
Recall Dual form : $\max_{\alpha} \min_{w,b} L(w,b,\alpha) \quad s.t. \quad \alpha \geq 0.$
So, we have Dual form:
$$max\quad 1^T\alpha-\dfrac{1}{2}\alpha^TDAA^TD\alpha$$$$s.t.\quad 1^TD\alpha=0,\quad \alpha\geq 0.$$
值得注意的是:
$w=A^TD\alpha=\sum_{i=1}^{l}y_i\alpha_iA_i^T$,所以原 linear classifier $f$ 可以寫
$f(x)=\sum_{i=1}^n\alpha_iy_i{\bf x_i}{\bf x}^T_i+b \equiv \sum_{i=1}^nu_i{\bf x_i}{\bf x}^T_i+b$,且我們也可知用KKT condiction把b算回去。因此我們只要算出dual問題,就可帶回原本的問題。
為什麼要用Dual form去求解最佳化?
因為Dual的objective function整個是一個concave function,且限制條件只有一個,計算起來容易很多。(注意:$max$ $\theta(\alpha)$ iff $-min$ $-\theta(\alpha)$,解concave,convex問題是一樣的)
support vector的意義
$\alpha$與$w^Tx+b$相垂直,且$\alpha_i\geq 0$。
當$\alpha>0$代表這些限制條件是active constraint。對整個限制條件才有影響。
$\alpha_i=0$是inactive constraint,也就是$w^Tx+b$嚴格大於0,因此有這個限制或沒有限制都一樣。透過$\alpha_i$正負可知道。$\alpha_i=0$的對整個結果沒有影響。
support vector: $\alpha_i>0$,也就是在線上的。
(圖片來自老師SVM的投影片)
Remark
一個好的model應該要考慮到:
model bias, model variance都應該小
Structural Risk Minimization
training error (衡量model bias) +VC error bound (衡量 model variance)
實驗誤差和
$|w|_2$ 和VC bound成正比
$min$ VC bound iff $min$ $\dfrac{1}{2}|w|_2^2$ iff max MarginKKT condiction
SMO (Sequential Minimal Optimization)
由Microsoft的人提出,是早期的一種非常知名的加速計算SVM的方法,當然也可以用quadratic programming的方法來計算,但比較慢。(quadratic programming方法包含:Newton method, steepest descent, …等)
若對SMO詳細推倒有興趣,可參考這篇論文。
回想我們原本的最佳化問題(引用李育杰老師的投影片):
SMO核心想法:每次只挑出兩個 $\alpha_i, \alpha_j$ 搭配做更新,其餘固定不動。為什麼是兩個呢?因為需要有人來搭配,一個增加、一個減少,去固定改變的量(以下圖片引用李育杰老師的投影片)
經過一連串轉換後,原本的問題就轉變為以下(詳細數學推導可以去看論文,以下圖片引用李育杰老師的投影片):
- 演算法流程:
以下演算法引用自此投影片
Soft-Margin SVM (nonseparable case)
為什麼需要Soft-margin SVM?因為有些問題,他不是linearly separable,也就是找不到$w,b$使得資料完全被分乾淨。(也就是說,primal problem是infeasible,Dual problem是umbounded)
因此我們給每一個training data都給一點點調整量$\xi_i$,即可。
$$y_i(w^Tx^i+b)\geq 1-\xi_i,\quad \xi_i\geq 0, \forall i.$$
但仍希望調整量越少越好(除此之外,也記得:原始問題是讓margin越大越好)
1-norm soft margine:
Primal form:
$$\min \quad \dfrac{1}{2}|w|^2+C\sum_{i=1}^n\xi_i,$$$$s.t.\quad y_i(w^Tx_i+b)\geq 1-\xi_i,$$ $$\qquad \xi_i\geq 0, i=1,…,n.$$
Remark:
$1^T\xi$ (1 norm measure of error vector) 就是training error
Dual form:
$$\max \sum_{i=1}^n\alpha_i-\dfrac{1}{2}\sum_{i,j=1}^n\alpha_i\alpha_j y_i y_j <x_i,x_j>$$
$$s.t.\quad 0\leq\alpha_i\leq C, i=1,…,n,$$ $$ \sum_{i=1}^n\alpha_i y_i=0.$$
We call $\xi_i\geq 0$ the slack variable.
2-norm soft margin
Primal form:
$$\min \quad \dfrac{1}{2}|w|^2+\dfrac{C}{2}\sum_{i=1}^n\xi_i^2,$$$$s.t.\quad y_i(w^Tx_i+b)\geq 1-\xi_i.$$
Dual form: (詳細推導可看此)
Remark
我們稱 $C$ 為 weighted varialbe。
當我們做SVM的最佳化時,其實我們希望:
- 讓margin分越開越好
- 讓slack variable不要太大(不希望讓太多太遠的也跑進來)
當 $C$ 調大時,只要有一點的$\xi_i$,就會讓目標函數放很大。亦即「很看重training error」,因此若有overfitting的現象,須將 $C$ 調小。
Remark:
1-Norm SVM:
$$min\quad |w|_1+C1^T\xi$$$$D(Aw+1b)+\xi\geq 1 $$$$\xi\geq 0$$
等價於
$$min \quad 1s+C1^T\xi$$$$D(Aw+1b)+\xi\geq 1 $$$$-s\leq w\leq s$$$$\xi\geq 0$$
How to tune $\gamma$ and $C$?
在李育杰老師的Model selection for support vector machines via uniform design這篇論文,提到可用uniform design的方法來tune。
並提到:SVM C建議的range在$10^{-2}$及$10^4$,但RSVM需要大一點的C,約$10^0$到$10^{6}$。
http://www.math.hkbu.edu.hk/UniformDesign/
以下截圖自Model selection for support vector machines via uniform design:
Non-linear SVM
(圖片來自李育杰老師的投影片)
有些資料,在原始空間可能沒辦法很容易的用linear classifier去分開。
Non-linear SVM的想法來自將原資料映射到某個較高維度的空間,在那個高維度空間去做分類(把資料轉換後,再做SVM的意思)。
藉著 $\phi$ 將原資料做完映射後,classifier長相:
classifier for primal form: $$f(x)=(\sum_{j=1}^? w_j\phi_j(x))+b$$
dual form:
$$f(x)=(\sum_{i=1}^l\alpha_iy_i<\phi(x^i),\phi(x)>)+b=(\sum_{i=1}^l\alpha_iy_iK(x^i,x))+b$$
Kernel
此圖來自李育杰老師投影片
我們可以把kernel想像成「用不同的方式去描述資料」,kernel matrix裡的每k個row,就是第k筆資料與其他資料之間的相似度。(有n筆training資料,kernel matrix的size就是nxn)
常見的kernel function (以下截圖自此):
RBF kernel (Radial basis or Gaussian) $k(x,y)=e^{-\beta|x-y|^2}=e^{-\frac{|x-y|^2}{2\sigma^2} }, \sigma\in \mathbb R\setminus{0}.$
$\beta$大小 v.s. RBF kernel:
[註]:圖片來源在此距離與kernel值的關係:
[註]:圖片來源在此
可想像成用不同方式描述一筆資料(用和其他筆資料的相似度)。
SSVM (Smooth Support Vector Machine)
SSVM在解的最佳化問題:
$$\min_{(w,b)\in R^{n+1} }\dfrac{C}{2}|p((1-D(Aw+{\bf 1}b),\beta))|^2_2+b^2$$
重點:SSVM使用一個二次可微分的函數去近似原本的plus function,因此可以使用newton method去解這個最佳化問題,且SSVM是一個strongly convex的問題,因此有唯一解。
式子推導
Remark: 加上b只是為了數學上確保是strongly convex function (有unique solution).
$\xi=0$ or 小於$0$: 函數不用調整
因為少了constraint,變數從原本的n+1+l變成n+1
從上圖可以清楚看到 Plus function $(*)_+$ 不是二次可微分(紅色的圈圈點,不可微分),所以不能用newton method去計算這個最佳化問題。我們會想去找一個二次可微的函數去近似plus function,讓我們能夠用newton method去解這個問題。
事實上,在訊號處理的領域常用sigmoid function去近似step function。而step function的積分就是plus function。因此希望透過sigmoid function的積分來近似plus function。
Remark:
Sigmoid function: $\dfrac{1}{1+e^{-\beta x} }$
Sigmoid function的積分:
$$p(x,\beta)\equiv x+\dfrac{1}{\beta}log(1+e^{-\beta x})$$
SSVM在做的事就是用$p(x,\beta)$這個二次可微分的函數來取代原本的plus function。(這裡一直強調二次可微,主要是因為牛頓法需要二次可微)。
在此使用 Newton Armoijo Algorithm (之後再詳細寫)
Remark:原本牛頓法其實就是$\lambda=1$時。
從$\lambda=1$開始試,直到滿足Armijo rule為止。Armijo rule直觀的意思就是保證從原本的點走到新的點要下降一定的量。
此方法保證:不論起始值多少,都可在有限步找到解。
且一定會在有限步求出解。(通常只要 6-8 iterations 就可收斂。)
我們現在知道SSVM是一個好算的方法,那我們再回頭去看要怎麼用SSVM去解non-linear SVM呢?先看一下原始的SVM:
注意:在這裡講的Dual指的是用 dual variable去替換primal variable。但我們仍然是在解primal problem。
extend到non linear:我們其實就是把$AA^T$用kernel去做替換(實際上原本的SVM就是linear kernel。)
我們可以仔細觀察一開始的SVM和經過dual varible替換後,式子的差別,事實上我們只差在input,因此我們解最佳化時,其實我們只需要改變我們的input就好。(求出classifier的參數後,記得代入的點也要先經過kernel轉換。)
RSVM (Reduced Support Vector Machine)
從上面我們知道,nonlinear SVM 的 classifier就是:$$f(x)=\sum_{i=1}^l \alpha_ik(x,A_i)+b,$$其實這個classifier就像是一個由$\beta={1}\bigcup{k(.,x^i)}_{i=1}^l$這組basis做線性組合而成的函數(注意$\alpha_i$個數就是training data的個數)
因此RSVM在想的事情就是用subset of $\beta$,其實也就是從原本的training data裡面抽出一些點,來從kernel看相似度。
(李育杰老師投影片)
註:當$l$越多,VC dimention就越大,因為你可以用更多的組合來組出classifier,但也可能造成overfitting。
Different tools for SVM
可直接參考這篇文章:
https://blog.csdn.net/weixin_43746433/article/details/97808078
Reference
- https://link.springer.com/referenceworkentry/10.1007%2F978-0-387-73003-5_299
- 林軒田教授機器學習技法 Machine Learning Techniques 第 3 講學習筆記
- R筆記 – (14)Support Vector Machine/Regression(支持向量機SVM)
- sklearn-1.4. Support Vector Machines
- 支持向量机通俗导论(理解SVM的三层境界)
- 我所理解的 SVM(支持向量机)- 1
- 支持向量机(SVM)是什么意思?
- 機器學習-支撐向量機(support vector machine, SVM)詳細推導
- Support Vector Machines 簡介
- CS229 Lecture notes
paper
- Model selection for support vector machines via uniform design
- A Practical Guide to Support Vector Classification
- support vector machine
- Reduced Support Vector Machines: A Statistical Theory
paper list:
about loss function:
- Statistical behavior and consistency of classification methods based on convex risk minimization
- Statistical analysis of some multi-category large margin classification methods
SMO:
- Sequential Minimal Optimization:A Fast Algorithm for Training Support Vector Machines