SVM的提出
一般講SVM時都是與感知機為基礎的,這是因為二者中對數據的模擬都是f(x)=wx+b,很相似。
但是,感知機的缺點在于:一、只能對線性可分的數據集建模,若數據集線性不可分,則算法無法收斂;二、感知機算法的結果與選取的初值有關,即結果不是穩(wěn)定的,也不能保證是最優(yōu)的。
SVM其實相當于是對感知機算法的改進,在SVM中,對感知機算法的兩個缺點都有相應的解決方法,并得到了較好的實驗結果,因此,感知機算法基本只是作為了解和學習SVM(或ANN)的基礎存在,實際中很少有直接使用的。
SVM中,如何保證結果最優(yōu)呢?這在于SVM中引入了“間隔”的概念,這是與感知機的重要區(qū)別。不要小看這個區(qū)別,在感知機中,評價函數是使用分類錯誤率來表示的。這是最原始和最基本的想法,但缺點是:分類錯誤率中,只要是將數據點分類錯誤,那么,不管這個數據與分類面之間的距離是多是少,是錯了一點點還是錯了很多,其表示結果都是一樣的。這樣的表示是很粗糙的,因為,從人的角度來看,把一個離分類面很遠的點錯分要比把很近的點錯分嚴重的多。因此,在SVM中通過引入了間隔的概念,不再使用分類錯誤率而是使用分類面與數據點之間的總間隔作為評價函數,這樣,將“粗糙”的分類錯誤率表示變成了“精細”總間隔距離表示,從而保證了在總間隔最小時,得到的分類面是最優(yōu)的解。
SVM中,可以克服感知機的缺點,對不是線性可分的數據集分類嗎?答案是可以的。對于線性可分的數據集,如上個問題描述,通過總錯分間隔最大化,我們可以得到硬間隔支持向量機(此時與感知機的區(qū)別在與使用了總錯分間隔作為評價函數);而對與近似線性可分數據集(即,除了數據集中有個別的噪聲點,其他數據點線性可分),通過引入了松弛變量的概念,從而對SVM進行了擴展,不再是需要將全部點分類正確,而是可以容忍將個別點分類錯誤,只需要保證全局的總間隔是最小的就可以了。這一個從“只能分類正確”到“可以容忍部分錯誤”是一個很大的進步,稱為軟間隔最大化,得到的SVM叫做軟間隔SVM。但是,這還是不夠,如果說數據集線性不可分呢?這時候,就需要引入一個高維空間的概念,通過將數據點映射到高維空間,我們在高維空間中,通過使用軟間隔最大化來得到SVM,從而對數據點進行分類。這樣就可以解決線性不可分數據集的問題了。然而,這樣又引入了一個新的問題,就是,我們把數據點映射到什么樣的高維空間呢?在高維空間中如何進行計算呢?問題變多了。。。不過不急,在這里,我們發(fā)現,在計算間隔的時候,我們根本用不到高維空間的坐標什么的,我們需要的只是數據點在高維空間中的內積。換句話說,我們根本不需要知道所映射到的高維空間是什么樣的,也不用管在高維空間中是怎么計算的,只需要知道數據點之間在高維空間中的內積的結果就行了。那么,不知到高維空間是什么樣的,也不知道高維空間怎么計算,這樣可以知道高維空間中的內積嗎?答案是可以,我們只需要引入一個“核函數”的概念,設為k(x1,x2)=z(x1)*z(x2),其中,z(x)表示x在高維空間的表示,等號右邊表示兩個數據點x1,x2在高維空間中的表示的內積,左邊表示核函數k(x1,x2),這樣,就可以通過核函數計算高維空間中的間隔,從而在高維空間中使用軟間隔最大化,得到數據點的分類了。
PS:SVM與感知機的區(qū)別還有一點,在于:SVM中,定義得到的最佳分類面只與最相近的“支持向量”有關,也就是說,在最終得到的最優(yōu)分類面的位置進行上下平移,所碰到的第一批(并不一定是一個)數據點就決定了最優(yōu)分類點的位置(即為:上下第一批分類點的位置中間),這個最優(yōu)分類面的位置與其他點無關。這也是“支持向量機”這個名字的由來。
總結
- 上一篇: 使用Decision Tree对MNIS
- 下一篇: 凸优化中如何改进GD方法以防止陷入局部最