支持向量機就是使用了核函數的軟間隔線性分類法,SVM可用於分類、回歸和異常值檢測(聚類)任務。“機”在機器學習領域通常是指算法,支持向量是指能夠影響決策的變量。
示意圖如下(綠線為分類平面,紅色和藍色的點為支持向量):
SVM原理
由邏輯回歸引入[1]
邏輯回歸是從特征中學習出一個二分類模型。分類y=1的概率\(p(y=1|x;\theta)\)形式化表示為\(h_θ (x) = g(θ^T x)={1\over 1+e^{-θ^T x}}\) .當\(θ^T x\) ≫ 0時,\(h_θ (x)\)=1,反之≪0時\(h_θ (x)\)=0.
中間的分割線即決策邊界\(θ^T x=0\),點到決策線的距離反映了分類正確的置信度。對於圖中的C點,離分割線較近,分割線稍有變動就可能被誤分類。邏輯回歸便是找一條中間線使得所有點整體上離這條線最遠。但實際上那些離得較遠的點不需要過多考慮,而應該着重考慮靠近中線的那些點。SVM相當於將視角從全局拉到了局部。分類器表達式重寫為(θ用w,b替換,函數關系有所變化):
函數間隔與幾何間隔(Functional and geometric margins)
給定一個訓練樣本\((x ^{(i)} , y ^{(i)} )\),定義函數間隔如下:
其中\(y^{(i)}\)的值為{-1,1},\(|w ^T x + b|\)越大,分類置信度越大,函數間隔越大。
其意義在於:\(|w ^T x + b|\)能夠表示點x到超平面的距離,通過觀察\(|w ^T x + b|\)的符號與真實類別y的符號是否一致可判斷分類是否正確。同號時結果為正數。
全部樣本上的函數間隔定義為:$$\hat \gamma=\min_{i=1,\dots,m}\hat \gamma^{(i)}$$
但這樣定義的函數間隔存在問題,將w與b的值同時放大一定的倍數時,函數間隔也會增大。
設點A代表一個樣本\((x ^{(i)},1)\),則該點在決策面\(w ^T x + b = 0\)上的投影點B的特征為\(x ^{(i)} − γ ^{(i)} · w/||w||\),\(\gamma\)為樣本x到分類間隔的距離. 向量$ w/||w||$為法向量。因為點B在決策面上,因此
幾何間隔可進一步表示為(令 γ 乘以對應的類別得到絕對值,當然誤分類的情況就是負數了)
可以看出幾何間隔就是函數間隔除以\(\|w\|\),解決了函數間隔會隨w的增大而改變的問題。當\(\|w\|=1\)時,幾何間隔便是函數間隔;函數間隔歸一化后就是幾何間隔.同函數間隔一樣全部樣本上的幾何間隔定義為所有訓練樣本中最小的幾何間隔$$\gamma=\min_{i=1,\dots,m}\gamma^{(i)}$$.
最優間隔分類器
尋找最優間隔分類器即找出最大的幾何間隔(不用函數間隔是因為縮放w使得函數間隔可無限增大),可以形式化的表示為:
這里用 \(\|w\|=1\) 規約 \(w\),使得\(y(w ^T x + b)\)是幾何間隔。然而 \(\|w\|=1\) 不是凸函數,普通的優化求解器無法求解.考慮幾何間隔和函數間隔的關系,\(γ={\hat γ\over \|w\|}\),我們改寫一下上面的式子:
式子中仍然包含凸函數,考慮到同時將w和b擴大或縮放一定倍數,對分類結果沒有影響,因此可以使得\(\hat γ=1\).因此max \({\hat γ\over \|w\|}={1\over \|w\|}\)等價於min \(\|w\|\),等價於min \({1\over 2} \|w\|^2\),后者便於求導后的式子表達.改寫之后變為二次規划問題:
在將函數間隔\(\hat γ\)設置為1時,幾何間隔\(γ\)為\(1\over \|w\|\),那么分類超平面兩邊的支持向量所在平面間的距離為\(2\over \|w\|\). 我們可以從另外的角度來計算這個距離:
設正類和負類的兩個點分別是\(x^+,x^-\), 那么兩條支持向量平面間距為這兩點構成的向量在超平面法向量\(\vec w\)上的投影,間距為:
由約束條件\(y ^{(i)} (w ^T x^{(i)} + b) = 1\),得到
因此 \(d={|1-b-(-1-b)|\over\|w\|}={2\over \|w\|}\).
對偶問題
構造拉格朗日函數:
在約束條件(\(\forall i, y ^{(i)} (w ^T x^{(i)} + b) ≥ 1\))都滿足的情況下,且約束\(α_ i\ge 0(i=1,\cdots, n)\),則優化的目標\(\min_{w,b} {1\over 2}\|w\|^2\)等價於\(\min_{w,b}\max_{α_ i\ge 0} \mathcal L(w, b, α)\).
由於這個目標函數中先求解max的問題時涉及兩個參數w和b,不太好做.而對於一般的優化問題,如果有最優解,則必定滿足KKT條件,同時對於凸優化問題,如果滿足KKT條件必然有最優解.[2]我們可以將滿足KKT條件的問題轉換成對偶問題:\(\max_{α_ i\ge 0}\min_{w,b} \mathcal L(w, b, α)\).
接下來求解對偶問題.
令\(\nabla_w\mathcal L(w, b, α) =0\),求得
對b求偏導得
將 w 和 b 代入 L 得
合並(8)(9)(10)可得原問題的對偶問題:
此時的目標函數僅與 \(α\) 有關, 當求解出了各個\(α_ i\)的值,根據公式(9)可進而求出w, $$w=\sum^m_{i=1}α_ix^{(i)}y^{(i)}$$ 設超平面兩邊的支持向量分別為\(x^+\)和\(x^-\),那么有:
因此\(b=-{1\over 2}(w^Tx^+ + w^Tx^-)\), 即:
實際上這里可以用一種叫序列最小優化算法
(Sequential minimal optimization, SMO)[3] 的快速學習算法來求解這個對偶問題.SMO目前被廣泛使用於SVM的訓練過程中,並在通行的SVM庫LIBSVM中得到實現。[4]
這個算法在下文介紹, 此時先不用考慮。
分類超平面與決策函數
訓練完成之后就可以使用分類超平面 \(w^T x + b=0\) 來對新樣本進行分類了,
決策函數為\(f(x)=\rm{sgn}(w^T x + b)\)
此時的SVM僅能處理線性的數據,對\(w^T x + b\)的形式稍作變化可以引入核函數來推廣到非線性分類問題:
所有的非支持向量的\(α=0\),因此內積操作只需計算少量的支持向量.
核函數
用於將數據映射到高維,從而更好得擬合模型並且還可以解決線性不可分的情況。 核技巧的基本思想是通過非線性變換將輸入空間(歐式空間或離散集合)對應到特征空間(希爾伯特空間),使得在輸入空間的超曲面模型對應於特征空間中的超平面模型, 這樣可以在特征空間中求解線性支持向量機。 利用核函數升維后不一定線性可分,但是投射到的維度越高,變為線性的可能性就越大。通過核函數在低維空間中計算避免了直接在高維空間中的復雜計算。 示意圖如下:[5]
舉例,y與x的關系可能是3次多項式關系,因此需要將特征x擴展到三維\((x, x ^2 , x ^3)\),然后尋找特征和結果之間的模型.
我們需要將SVM公式\(w^T x + b\) 中的內積從\(< x ^{(i)} , z >\),映射到\(< φ(x ^{(i)} ), φ(z) >\).定義映射后的內積為核函數$K(x,z)= φ(x )^T φ(z) $.
然而如果直接計算高維數據的內積,顯然計算量級比原始數據的內積高.如果核函數仍然是計算低維數據,則可以不增加計算量.
核技巧舉例:設\(\mathbf x_1=(x_1,y_1),\mathbf x_2=(x_2,y_2)\)為二維空間中的兩個點,利用映射\((x,y)\mapsto (x^2,y^2,\sqrt 2xy)\)將其映射到一個三維特征空間中的點\(\mathbf x_1',\mathbf x_2'\).內積\(\langle \mathbf x_1',\mathbf x_2'\rangle=x_1^2x_2^2+y_1^2y_2^2+2x_1y_1x_2y_2=(x_1x_2+y_1y_2)^2=(\langle\mathbf x_1,\mathbf x_2\rangle)^2\)
可見,只要將這兩點的原始空間中的內積取平方,無需構造新的特征向量(高維特征)便可得到新空間中對應的內積.直接根據原始空間中的向量來計算新特征空間中內積的函數稱為核函數.在這個例子中核函數為\(\kappa(\mathbf x_1,\mathbf x_2)=(\langle\mathbf x_1,\mathbf x_2\rangle)^2\).
對核函數的選擇,現在還缺乏指導原則,實驗觀察結果表明,某些問題用某些核函數效果很好,用另一些就很差,但是一般來講,徑向基核函數是不會出太大偏差的一種首選方法.采用核方法,能夠很方便地產生非線性分類邊界。核函數要滿足Mercer's定理,常見的核函數有以下幾種。
- linear,線性核,會產生線性分類邊界。一般來說它的計算效率最高,而且需要數據最少。(相當於沒有核)
- poly ,多項式核,\(K(x, z) = (x^T z+c)^ d\),會產生多項式分類邊界,映射后特征維度為\({n+d\choose d}\)。
- rbf,是根據與每一個支持向量的距離來決定分類邊界的。\(K(x, z) = \exp\big(-{\|x-z\|^2\over 2\sigma^2}\big)\),類似於高斯分布,因此稱為高斯核函數,也叫做徑向基函數(Radial Basis Function 簡稱 RBF),它能夠把原始特征映射到無窮維。它是最靈活的方法,但是也需要最多的數據。比較相似的還有sigmoid 核函數等等。高斯核很靈活,而且對於訓練數據效果是最好的。但是要擔心過擬合。高斯核函數可以看做是對x與z的相似度的衡量.
- laplace,\(K(x,z)=\exp\big(-{\|x-z\|\over \sigma}\big)\)
- sigmoid: \(K(x,z)=\tanh(ax^T z-b)\)
- 組合: 上述核函數的線性組合或乘積.
對新樣本進行分類時將式(12)中的內積用核函數計算即可.
核函數有效性判定: K 是有效的核函數 等價於 核函數矩陣 K 是對稱半正定的。
svm核函數的選擇:[6]
如果數據比較簡單,是線性可分的,那么自然是不用核函數(參數設置為線性核函數), 並且使用非線性核函數速度會變慢,且容易過擬合. 通常要按照情況選擇:
- 如果特征維數較高(遠超樣本個數),那么選擇線性核.
- 如果特征少,樣本很多. 需要添加更多特征並繼續使用線性核.
- 如果特征少(10^0 - 10^3),樣本量適中(10^1 - 10^4), 使用非線性核.
非線性核通常使用高斯核, 高斯核可以映射到無窮維,解釋:
指數項 \(e^{x}\) 可以通過泰勒展開映射到無窮多項
相應的高斯核也是指數形式:
將泰勒展開式帶入高斯核,我們得到了一個無窮維度的映射。
核函數推廣: 核函數不僅僅用在 SVM 上, 只要在一個模型算法中出現了 \(\langle x, z \rangle\) 內積形式, 我們都可以嘗試使用核函數 \(K(x, z)\) 去替換, 這可能會改善我們的算法。這在后文核方法/核技巧
中作介紹。
正則化與非線性可分
在將數據映射到高維后可能仍然不是線性可分的, 即使是線性可分的,超平面也易受離群點的影響,難以確定這個超平面是否是我們想要的.
這時候我們應該允許一些點游離並且在模型中違背限制條件(原先的函數間隔大於 1)。對式(7)進行改變,在限制條件中加入軟間隔,目標函數中加入軟間隔的L1正則項作為懲罰項,得到新的模型如下:
目標函數控制了離群點的數目和程度,使大部分樣本點仍然遵守限制條件。
用拉格朗日函數轉化為無約束問題:
其中,\(\mu_i \geq 0, \alpha_i \geq 0\)均為拉格朗日系數。令 \({\partial L\over \partial w}={\partial L\over \partial b}={\partial L\over \partial \mu}=0\), 解得:
代入 \(L(w,b,\xi,\alpha,\mu)\), 得:
通過求解器或SMO求出\(\alpha\), 進而得到w. 這個求解過程與不帶軟間隔的差別僅僅是\(0 \leq \alpha_i\) 變為 \(0 \leq \alpha_i \leq C\). 此時只剩對 b 的求解.
由於軟間隔的引入,造成支持向量的增加. 原本b僅由兩個支持向量確定: \(b=-(\max_{i:y^{(i)}=-1}w^Tx^{(i)}+\min_{i:y^{(i)}=1}w^Tx^{(i)})/2\).
現在需要找出滿足\(0<α_s<C\)的所有S個支持向量\((x_s,y_s)\). 支持向量滿足\(y_s(\sum\limits_{i=1}^{S}\alpha_iy_ix_i^Tx_s+b) = 1\), 兩邊同乘以\(y_s\), 得\(b_s^{*} = y_s - \sum\limits_{i=1}^{S}\alpha_iy_ix_i^Tx_s\), 計算所有的\(b^∗_s\)對應的平均值即為最終的 \(b^{*} = \frac{1}{S}\sum\limits_{i=1}^{S}b_s^{*}\).[7]
KKT
對軟間隔支持向量機, KKT 條件要求:
損失函數 hinge loss
上式soft margin SVM的目標優化問題中的 \(\xi_i\) 可以理解為 loss,問題等價於
其中\(\mathcal l(\cdot)\)是損失函數, 常見的是 hinge loss, \(\mathcal l(z)=\max(0,1-z)\). 將上式除以C,得到形式為
此目標函數可以看作是加 L2 regularization 的 hinge loss.
對於軟間隔SVM,margin <=1 的都是支持向量.
SVM 參數: C 與 gamma
\(\sigma\)是高斯分布的幅寬,\(\sigma\)越小,高斯分布約窄高,只對支持向量附近樣本有作用,對未知樣本分類效果差,因此越容易過擬合;\(\sigma\)越大,平滑效應越大。而核系數\(\gamma={1\over 2\sigma^2}\).
C
是軟間隔的權重,默認值為1。如果C值很大,松弛變量\(ξ_i\)會很小,允許的誤差也就很小,將會得到一個小間距的超平面,可能出現過擬合現象。如果數據難以區分,可以減小C值來增大軟間隔。
- C較大時,可能會過擬合(Low bias, high variance);
- C較小時,可能會欠擬合(High bias, low variance);
- σ較大時,可能會欠擬合(High bias, low variance);
- σ較小時,可能會過擬合(Low bias, high variance);
SMO 優化算法 與 坐標上升
上文提到, 我們的軟間隔分類器的優化目標是(公式14):
即在受約束的情況下求解
我們容易聯想到坐標下降(min)與坐標上升(max)方法, 使用坐標上升方法求解的思路是:
這樣,每次更新時沿着某一個分量進行更新,而不是選擇總體的最優方向. 但是由於約束條件 \(\sum^m_{i=1}α_ i y ^{(i) }=0\) 的存在, 當其它分量固定時 \(\alpha_i=-\sum^m_{j\ne i}α_j y ^{(j)}\) 的值也是確定的, 使得這個分量無法更新.
既然無法只更新一個參數, 那更新兩個即可. 這正是SMO算法的思想來源:
重復下面過程直到收斂(滿足KKT條件){
(1)選擇一對拉格朗日乘子 \(α_ i\) 和 \(α_ j\);由於組合方式有 m(m-1)/2 種, 大數據之下通常需要加速收斂. 選擇的方式可以是: 選擇最有可能需要優化(也就是違反KKT條件最嚴重)的\(α_ i\),第二個變量 \(α_ j\)的選擇標准是讓|E1−E2|有足夠大的變化。(E表示預測輸出與期望值的差: \(E_i = g(x_i)-y_i = \sum\limits_{j=1}^{m}\alpha_j y_jK(x_i, x_j)+ b - y_i\)) 。[3:1]
(2)固定其他拉格朗日乘子,只對 \(α_ i\) 和 \(α_ j\) 優化 ;
(3)根據優化后的 \(α_ i\) 和 \(α_ j\) ,更新截距 b 的值
}
支持向量
在通過優化算法求解對偶問題之后得到與每個訓練樣本對應的 \(α_i\), 而 \(α\) 向量比較稀疏, 其中的非零值所對應的訓練樣本即支持向量.[8] 因此可以說 SVM 的訓練過程是一個尋找支持向量及其權重 \(α\) 的過程, 決策邊界函數可由支持向量與 \(α\) 計算得到. 尋找支持向量需要遍歷一遍所有樣本, 所以計算量與支持向量的個數無關. 而測試階段是支持向量與未知樣本參與運算, 測試計算量與支持向量的個數有關.
SVM + 梯度下降
SVM 是否可用 SGD?
linear SVM 原始問題(損失函數+L2正則項) 可以很容易使用SGD[9].
通常將SVM的原問題轉為對偶問題后使用核方法, SMO求解該對偶問題速度相比SGD更快.
但是原始問題也可以不經過對偶問題而使用核方法. 方式與邏輯回歸/線性回歸等廣義線性模型一樣, 設 \(\mathbf w = \phi(\mathbf x)\cdot \mathbf u,\; \mathbf K = \phi(\mathbf x)^t\phi(\mathbf x)\),
對原問題加核方法得到:
這樣我們便可以對(u,b)進行SGD梯度下降做優化了.[10][11]
那么使用SGD與SMO孰優孰劣?
- SMO是EM算法/坐標上升的思想, 不一定得到全局最優解. 速度更快些.
- SGD 也容易陷入局部最優, 相比SMO可能更穩定, 速度慢.
- 為什么感覺都是在用SMO呢? 也許是歷史原因吧. 用SVM的人是不是越來越少了? 不清楚.
LR是否可用類似SMO的優化方式? 即能否使用坐標上升/下降.
答案是可以的, 但不一定效果好. 對於一個函數的求解,如果梯度計算很復雜, 那么適合用坐標上升/下降. 如果梯度計算簡單,那么適合梯度下降.[12]
多分類
可以使用兩種方式將二分類擴展到多分類(n類):
-
一對一(one-over-one)的方式,在任意兩類樣本之間設計一個SVM,因此n個類別的樣本就需要設計n(n-1)/2個模型.當對一個未知樣本進行分類時,最后得票最多的類別即為該未知樣本的類別.
-
一對多(one-vs-the-rest)將訓練 n 個模型,與一對一結果相近,但運行時間較短。對於未知樣本,若僅一個模型輸出為正類,則輸出該類別,否則選擇置信度最大的正類對應的類別。雖然一對一的方式訓練的模型更多(存儲開銷和測試時間開銷更大),但是每一個模型的訓練都只用了2個類別的數據,而一對多方式需要用到全部訓練樣例,因此當類別數很多的時候一對一開銷通常更小(只要訓練復雜度高於O(N)即可得到此結果)。而測試時的速度性能取決於具體的數據分布,多數情況下兩者差不多.[13]
-
使用多類hinge loss, 由於復雜度較高,因此很少采用.
-
DAGSVM(Platt et al., 2000)。對於 K 個類別,DAGSVM共有 K(K−1)/2 個分類器。每次對新的測試點分類時,只需要 K−1 對分類器進行計算。選定的分類器是根據遍歷圖的路徑確定的。
DAG的結點(分類器)從上到下依次為1,2,3,…,k-1個。構造如下的二叉樹判別結構:[14](第1類 vs 第k類) (2類 vs k類) (1類 vs k-1類)
(3類 vs k 類) (2類 vs k-1類) (1類 vs k-2類) (2類 vs -1類)
分類時,可以先分1類和k類,如果分類器回答屬於k類就往左判斷2類和k類,否則向右,依次類推。這樣的話,每次向下走一步都排除掉一類,最后留下的類別即為所屬類別。沿着二叉樹從根走到葉子節點共比較k-1次.
優點:分類速度快,沒有分類重疊現象或者分類不可分現象。
缺點:分類錯誤累積(前面分類器分類錯誤,后面分類器無法糾正),從上到下節點的選取技巧(參照置信度)。
回歸與聚類[15][16]
SVR(回歸)與SVC(分類)的區別是使用遠離預測中心的值。分類是找一個平面,使得平面邊界上的點到平面的距離最遠,回歸是讓每個點到回歸線的距離最小。
單類的SVM(OneClassSVM)可用於密度估計,特殊點檢測(novelty detection),給一個樣本集合,得到一個軟邊界使得新的樣本可被判斷出是否屬於這個集合。屬於無監督學習。
核方法
分類/回歸模型的優化目標的通用形式[17]
其中 X 是 m x n 的數據矩陣, y是標簽, w 是參數, L是損失函數, λ ≥ 0 是正則化參數, 這里采用L2正則項,目的是為了能夠使用核函數(而L1不能夠使用, 這算是L2相比於L1的一個優勢吧).
最優解 w 可以由 X 空間線性變換得到: \(\mathbf w =\mathbf X\mathbf v\), 這里用到了表示定理(Representer Theorem)
我們的優化目標轉換為:
即可運用kernel matrix: \(K = X^TX\), \((K_{ij} = x^ T_i x_j)\) 進行求解. 最終的模型相當於關於 v 的線性模型了,核函數K 就相當於特征轉換.
核技巧可以運用到線性回歸(采用均方差損失); 邏輯回歸(采用logistic loss); SVM (采用Hinge loss) 及 SVR 等模型之中.
概率值校准(calibration)
SVC 得到的輸出值並非概率, 其相對值相當於分類間隔, 輸出值分布不均勻, 而是集中在兩側,類似sigmoid概率密度分布曲線. 因此不能直接歸一化輸出值當作概率值.
有兩個流行的calibration methods: Platt’s scaling(sigmoid,有參數) 與 Isotonic regression(保序回歸,階梯式函數,無參).
Platt’s scaling
在訓練SVM分類器之后將SVM分類的輸出值與真實類別標簽作為數據訓練一個額外的邏輯回歸模型.[18]
設分類器的輸出為 f(x), 使用帶參數的邏輯回歸得到概率值:
式子中參數A,B均是標量, 可以通過極大似然估計進行參數估計.
另外, 由於幾乎很少出現0,1這種理想的結果(以隨機森林為例, 很難讓所有決策樹都預測正確), 該方法的提出者 Platt 建議將標簽\(y\in \{-1,+1\}\) 替換為\(\{t_-,t_+\}\). 其中 \(t_+>0.5,\ t_-<0.5\)
Isotonic regression
與Platt’s scaling區別在於擬合函數不同, isotonic regression 擬合的是分段非遞減常量函數(piecewise-constant non-decreasing function), 即階梯式上升的形狀. 保序回歸求解的如下的二次規划問題:
Isotonic Regression的一種求解算法是pair-adjacent violators algorithm(簡稱PAV算法),時間復雜度是O(N),主要思想是通過不斷合並、調整違反單調性的局部區間,使得最終得到的區間滿足單調性。
保序回歸法:從該序列的首元素往后觀察,一旦出現亂序現象停止該輪觀察,從該亂序元素開始逐個吸收元素組成一個序列,直到該序列所有元素的平均值小於或等於下一個待吸收的元素。
舉例:[19]
原始序列:<9, 14, 10>
結果序列:<9, 12, 12>
原始序列:<14, 9, 10, 15>
結果序列:<11, 11, 11, 15>
保序回歸可用於 CTR 預估模型的校准上.
在SVC上運用Platt’s scaling 與 isotonic regression 的結果相當. 見下圖:
而對於高斯朴素貝葉斯來說, isotonic regression 的結果很好, 而 Platt’s scaling 表現很一般, 因為朴素貝葉斯的輸出的分布並非sigmoid曲線的形式.
校准方法選擇
對於兩種方法的選擇也很簡單: 如果模型是像SVM或者boosted trees(隨機森林等)這種使得樣本預測值的分布曲線是sigmoid形狀的,而是sigmoid的一種轉置形式,那么可以使用Platt’s scaling. 否則使用isotonic regression,因為它可以擬合任意形狀. 在有足夠多的數據的情況下, 通常isotonic regression表現地更好一些.
對於多分類的情況, 使用one-vs-rest方式對每一個類別進行calibration.[20]
SVM 優缺點
優點:
- 在高維空間有效
- 在維度高於樣本數量時也有效,在樣本量少的情況下,比神經網絡的效果好。
- 節省內存:在決策函數中僅使用部分樣本(支持向量)
- 可以指定多種核函數
缺點:
- 如果特征數遠比樣本數多,需要精心挑選核函數和正則約束項來減輕過擬合。
- SVM並不能得到概率值(需要接邏輯回歸,再使用5-折交叉驗證得到,比較耗時,且這種方法得到的概率值與score可能不一致,即argmax的結果可能不同)
- SVM 對異常點比較敏感[21], 異常點容易影響決策邊界. 對於SVM來說, 異常點出現在中間間隔以內才會對決策邊界有影響, 但是一旦受影響,影響程度會很大. 雖然有軟間隔,但還是有很大可能受影響.
而對LR來說 , 所有樣本共同決定擬合的結果, 每個樣本點都會影響決策, 但是少量的異常點不會使全局發生太大變化.
SVM vs Softmax
- score
SVM 和 softmax 均能完成多類別的分類任務,但其分類輸出的打分值意義不同。其中 SVM 輸出的數值大小僅僅表示所屬類別的概率排序結果,該數字的絕對值大小沒有物理意義。而 softmax 分類器的打分值被正則化到[0,1]之間,可以看作是各類別的概率。但是這里的概率值受參數W的正則項系數λ的影響, λ越大則權重W越接近於0,那么softmax之后各個類別的結果數值更不易區分. 因此同SVM一樣,score的相對大小順序更有意義,而絕對值意義不大. - 優化方式
SVM 的處理樣本時是只考慮支持向量去學習分類器, 並且當樣本的分類結果中正確類別比其它類別超出margin的時候loss為0, svm不再加以優化; 而 softmax 通過非線性映射的方式減小了遠離分類平面的樣本點的權重,相對提升了近分類樣本點的權重,二者本質思路上是一致的。
SVM 和 softmax 並沒有孰優孰劣的區分,但 SVM 將原問題轉化為對偶問題后只需要計算支持向量的樣本點。對於復雜的問題,利用核函數能夠極大的簡化模型,減少計算量。[22]
SVM vs 邏輯回歸
SVM 模型可以看作邏輯回歸加L2正則項, 並使用了不同的損失函數. 預測結果的概率值可以通過 Platt's scaling 得到.
線性核SVM通常和線性邏輯回歸效果相當.SVM的最大化間隔的方式在某些情形下可能會比線性回歸/邏輯回歸模型要好一點點.
SVR vs 線性回歸
- 優化方式不同, SVR將原始問題轉換為對偶問題的求解. 損失函數不同.
- SVR可使用核函數增加非線性, 原始線性回歸不可以(當然也可以加入核函數).
線性SVR與LinearRegression孰優孰略, 並沒有特別明確的說法. 有人更喜歡LinearRegression的可解釋性.
與神經網絡的結合
在訓練階段訓練 VGG、AlexNet 等模型時在最后層采用 softmax 分類器。
測試時將網絡模型的最后的特征作為樣本單獨訓練一個 SVM 分類器。
對未知樣本進行分類預測時先經過網絡提取特征再將特征經過SVM分類。
目前主流的模型中也沒有沒有明確的指出 SVM 和 softmax 分類器的絕對優勢。因此在不追求絕對精度的情況下,二者均可以作為模型的分類器使用。
SVM的時間復雜度[23]
對於線性SVM,在訓練時需要通過求解二次問題(quadratic problem)得到w與b,在測試時與特征數量線性相關.對於具有核函數的SVM,訓練時需要選擇支持向量,測試時與支持向量的個數線性相關,也與特征數量線性相關.求解二次問題涉及求矩陣的逆,時間復雜度為\(O(n^3)\),而通常不需要求得最優解,只需要迭代求解得到泛化能力較好的解,因此時間復雜度可認為是\(O(n^2)\).具體的線性SVM時間復雜度\(O(\text{n_sample * n_features})\), RBF核函數並使用SMO求解器的SVM時間復雜度\(O(\text{n_samples^2 * n_features})\).
參考
Machine Learning Course,CS229 ↩︎
支持向量機通俗導論(理解SVM的三層境界) https://blog.csdn.net/v_july_v/article/details/7624837 ↩︎
Platt, John, Sequential Minimal Optimization: A Fast Algorithm for Training Support Vector Machines, 1998 ↩︎ ↩︎
https://stackoverflow.com/questions/20566869/where-is-it-best-to-use-svm-with-linear-kernel ↩︎
線性支持向量機的軟間隔最大化模型 https://www.cnblogs.com/pinard/p/6100722.html ↩︎
https://www.quora.com/Does-anyone-have-an-idea-on-how-to-find-support-vectors-in-1-hard-Margin-linear-SVM-2-Soft-Margin-Linear-SVM-and-3-Non-Linear-SVM ↩︎
https://stats.stackexchange.com/questions/46457/kernel-svm-in-primal-training-with-stochastic-gradient-descent ↩︎
https://stats.stackexchange.com/questions/215524/is-gradient-descent-possible-for-kernelized-svms-if-so-why-do-people-use-quadr ↩︎
https://stats.stackexchange.com/questions/146317/coordinate-vs-gradient-descent ↩︎
機器學習. 周志華. 多分類學習. ↩︎
將SVM用於多類分類 http://www.lining0806.com/將svm用於多類分類/ ↩︎
支持向量機svc和svr回歸和分類具體的區別 https://www.zhihu.com/question/45113186/answer/236300626 ↩︎
Lecture 7: Kernels for Classification and Regression https://people.eecs.berkeley.edu/~russell/classes/cs194/f11/lectures/CS194 Fall 2011 Lecture 07.pdf ↩︎
http://fastml.com/classifier-calibration-with-platts-scaling-and-isotonic-regression/ ↩︎
保序回歸舉例 https://blog.csdn.net/fsz521/article/details/7706250 ↩︎
Breakdown Point of Robust Support Vector Machine https://arxiv.org/abs/1409.0934 ↩︎
svm vs softmax. http://cs231n.github.io/linear-classify/#svmvssoftmax ↩︎