1. 程式人生 > >支援向量機的常見問題和推導

支援向量機的常見問題和推導

一.問題:

1.      Svm是什麼

2.      什麼是支援向量

3.      什麼是最優間隔分類法

4.      最優間隔分類法與最小二乘、最大似然法的比較

5.      什麼是拉格朗日

6.      什麼是對偶

7.      為什麼要做對偶

8.      什麼是KKT條件

9.      為什麼滿足KKT條件強對偶成立

10.  Svm如何解決非線性問題?神經網路呢?

11.  什麼是核函式

12.  Svm如何面對噪音問題

13.  什麼是鬆弛變數

14.  鬆弛變數項vs權重懲罰項

15.  什麼是結構風險、期望風險、經驗風險、置信範圍

16.  Svm如何體現結構風險最小化的?

17.  Svm如何做經驗風險和置信範圍的平衡的?

18.  什麼是座標下降法?(not梯度下降)

19.  什麼是SMO演算法

20.  SMO演算法如何求解

二.思路

Svm是一個有監督的模型,那麼在模型訓練的過程中,一定是有一個評價標準的,或者叫做目標函式,也就是按照什麼樣的目標來訓練,像我們之前用過的有最小二乘法、最大似然法

對於svm來說,目標函式是怎麼得到的什麼呢,是通過一個叫最優間隔的方法,何為最優間隔,最優間隔指的是能夠使正負樣本分開,並且分開的間隔最大,思考一下,如果資料是線性可分的,那麼可以讓資料分開的超平面有很多,那麼到底選擇哪個超平面呢,就是選擇那個使得資料分開的間隔最大的超平面,在這種思路的指導下,我們就得到了目標函式。其實這裡體現的就是結構風險最小化

的原則,能將資料分開代表的是經驗風險,也就是分類誤差,最大化間隔代表的是置信範圍,結構風險最小化和經驗風險與置信範圍之間的權衡在模型含有噪音的情況下體現的更加淋漓盡致,賣個關子,後面看。

有了目標函式,如何求解呢,這個時候就需要最優化理論來幫忙了,具體來說,這個問題是不等式約束的最優化問題,我們的思路就是構造拉格朗日函式,將有約束的問題轉化為無約束的問題,構造完了之後我們發現這個問題是不好求解的,進而我們將這個原始問題轉化為對偶問題,這個時候我們就會有疑問,原始問題和對偶問題的解是一樣的麼,或者什麼情況下兩者的解是一樣的,答案是在滿足KKT條件的時候。構造了目標函式,有了優化方法,是不是將這個問題一股腦的交給數值優化演算法就可以了。等等,好像不是這樣的,前面只是在處理線性可分的問題。

線性不可分的情況應該怎麼處理呢,如果讓我們回到那個年代,把這個問題交給我們,我們會採取什麼樣的思路呢,我覺得比較好想的一種方法就是人多力量大的方法,一個線性的分類器不行那麼組合多個線性的分類器,當然,如果簡簡單單的組合線性分類器還是處理不了非線性問題,那麼就線上性分類器的輸出上加一個非線性的函式是不是就可以了,恩,是的,這種思路的代表就是神經網路,也就是在拓撲結構上下功夫。那麼還有別的方法麼,有,但是可能不太好想,所以發明這種演算法的人確實很牛,其中一種方法就是SVM,SVM的思路我覺得並不是很好想,我猜這也是SVM比神經網路來的稍晚一些的原因。

SVm處理非線性問題的思路是什麼呢,資料在低維空間中不可分,那麼在高維空間中是不是就線性可分了呢,是的,不然就不會說了,svm就是將低維空間不可分的資料對映到高維從而使得資料可以線性可分,線性可分之後就可以用到前面的最優間隔法了。

維度增高了,計算量也就隨著增大了,如何解決計算量的問題呢,按照前面的思路,由低維對映到高維,維度增加的速度是恐怖的,例如2維會對映到5維,3維會對映到19維,這樣在向量內積的計算上會帶來很大複雜度,工程上使用的模型要求簡單、可解釋啊。如此高的複雜度怎麼能滿足工程上的要求,作為一個在學術界和工業界都混得開的模型來說,解決這個問題自然不在話下,這個問題如果交給我們,我們如何思考,向量先從低維對映到高維再計算內積,那能不能先計算內積再做對映呢,很多好的想法都是從這種疑問中產生的,我覺得這種思維我們也是具備的,這裡的關鍵問題就是計算完內積時如何做對映,這個其實需要根據資料的分佈來做,例如通過資料分析發現數據的正負樣本是成橢圓形的,那麼就構造一個橢圓形的對映曲線,說起來簡單,對於高維資料,如何發現這樣一個對映函式呢,很難,不過人們在實際運用的過程中發現了幾個函式,在實際的資料中的效果還不錯,所以就用這些發現的函式來做對映,這些函式就叫做核函式。這個時候我們的問題看似解決了,回顧一下我們的思路,對於線性可分的資料,我們直接用最優間隔法來訓練,對於線性不可分的,我們對映到高維從而達到了線性可分,對於計算量的問題,採用核函式。

那麼有沒有在高維依然線性不可分的情況呢,當然有,例如資料中的噪音,特徵完全一樣,但是類標籤不一樣,當然這是一種極端的情況,不管怎麼做對映都不能做到線性可分,這個時候怎麼辦呢,退一步海闊天空麼,別那麼嚴肅,放鬆一下限制條件,允許錯分,也就是允許經驗風險不為0,這樣做的好處就是會增加分類間隔,從而減小置信範圍,所以這是一個經驗風險置信範圍權衡的問題,具體怎麼做呢,就是加一個叫做鬆弛變數的因子,下面的問題就剩求解了,可以使用數值優化的演算法,不過,svm沒有使用通用的梯度下降、牛頓法等來進行引數的計算,而是採用了類似座標下降法的演算法,具體的演算法在下面的推導上看。

總結一下svm的思路,svm就是這樣一個一環扣一環的模型,有問題,有解決方案。

線性可分=>最優間隔法

線性不可分=>對映到高維空間

對映到高維空間中計算量大=>核技巧

資料含有有噪音=>鬆弛變數

加快求解速度=>SMO演算法

三.推導

1.      最優間隔分類器

最優分類器主要有幾點,

一是理解一下什麼是最優間隔法,體現出的是什麼思想

二是瞭解怎麼由最優間隔法得到目標函式

三是跟最小二乘法、最大似然法做一下比較。



2.      最優化方法

在求解目標函式的時候,使用了最優化方法,主要有幾點

一是體會解決不等式約束最優化問題的思路

二是理解原始問題的表達

三是理解為什麼要將原始問題變為對偶問題

四是理解什麼是KKT條件

五是理解為什麼滿足KKT條件時原始問題跟對偶問題的解是一樣的

六是理解支援向量的真正含義






3.      核

核技巧,這裡主要是做一下介紹,這個部分如果要研究應該可以研究的很深,主要有幾個問題

一是低維到高維對映的思路

二是理解核函式的作用




4.      噪音

有噪音的情況是svm比較精彩的地方,主要精彩的地方就是結構風險最小化中經驗風險和置信範圍的權衡問題。

我們訓練模型的目的其實就是希望模型的期望風險最小,期望風險最小指的是模型在預測未知樣本的時候誤差最小,遺憾的是,因為是未知樣本,這個誤差我們是得不到的,那怎麼辦呢,有人得到了期望風險的上界,既然不能最小化期望風險,那麼我們就最小化期望風險的上界吧,這個上界是什麼呢,就叫做結構風險。

結構風險是有兩部分構成的,一是經驗風險,這是大多數模型採用的優化目標,二是vc置信範圍,vc置信範圍與兩個因素有關,一是樣本數量,二是vc維,vc維表示的是模型複雜程度

在本問題當中,||w||表示的是置信範圍,而表示的是經驗風險,C表示的是誤差的權重,當C越大時,表示經驗風險越重要,相對的置信範圍就沒那麼重要,這個時候容易造成過擬合,當C越小時,表示的是經驗風險沒那麼重要,相對的置信範圍顯得更加重要,那麼這個時候就要考慮是否會造成過擬合。想想我們之前在做線性迴歸和邏輯迴歸時加的權重懲罰項,是不是就是考慮了結構風險最小化原則。




5.      SMO演算法

SMO是一個求解方法,主要理解幾個問題

一是座標下降法的思路

二是KKT條件在選擇alpha的作用

三是具體的推導過程。









6.      程式碼演示

四.參考文件

4.        《統計學習方法》