SVM-1

**支持向量機(Support Vector Machine)**是Cortes和Vapnik於1995年首先提出的,它在解決小樣本、非線性及高維模式識別中表現出許多特有的優勢,並能夠推廣應用到函數擬合等其他機器學習問題中。
支持向量機方法是建立在統計學習理論的VC 維理論和結構風險最小原理基礎上的,根據有限的樣本信息在模型的複雜性(即對特定訓練樣本的學習精度,Accuracy)和學習能力(即無錯誤地識別任意樣本的能力)之間尋求最佳折衷,以期獲得最好的推廣能力(或稱泛化能力)。

所謂VC維是對函數類的一種度量,可以簡單的理解爲問題的複雜程度,VC維越高,一個問題就越複雜。正是因爲SVM關注的是VC維,後面我們可以看到,SVM解決問題的時候,和樣本的維數是無關的(甚至樣本是上萬維的都可以,這使得SVM很適合用來解決文本分類的問題,當然,有這樣的能力也因爲引入了核函數)。
結構風險
機器學習本質上就是一種對問題真實模型的逼近(我們選擇一個我們認爲比較好的近似模型,這個近似模型就叫做一個假設),但毫無疑問,真實模型一定是不知道的。既然真實模型不知道,那麼我們選擇的假設與問題真實解之間究竟有多大差距,我們就沒法得知。比如說我們認爲宇宙誕生於150億年前的一場大爆炸,這個假設能夠描述很多我們觀察到的現象,但它與真實的宇宙模型之間還相差多少?誰也說不清,因爲我們壓根就不知道真實的宇宙模型到底是什麼。
這個與問題真實解之間的誤差,就叫做風險(更嚴格的說,誤差的累積叫做風險)。我們選擇了一個假設之後(更直觀點說,我們得到了一個分類器以後),真實誤差無從得知,但我們可以用某些可以掌握的量來逼近它。最直觀的想法就是使用分類器在樣本數據上的分類的結果與真實結果(因爲樣本是已經標註過的數據,是準確的數據)之間的差值來表示。這個差值叫做經驗風險Remp(w)以前的機器學習方法都把經驗風險最小化作爲努力的目標,但後來發現很多分類函數能夠在樣本集上輕易達到100%的正確率,在真實分類時卻一塌糊塗(即所謂的推廣能力差,或泛化能力差)此時的情況便是選擇了一個足夠複雜的分類函數(它的VC維很高),能夠精確的記住每一個樣本,但對樣本之外的數據一律分類錯誤。回頭看看經驗風險最小化原則我們就會發現,此原則適用的大前提是經驗風險要確實能夠逼近真實風險纔行,但實際上能逼近麼?答案是不能,
統計學習因此而引入了泛化誤差界的概念,就是指***真實風險應該由兩部分內容刻畫,一是經驗風險,代表了分類器在給定樣本上的誤差;二是置信風險,代表了我們在多大程度上可以信任分類器在未知文本上分類的結果***。很顯然,第二部分是沒有辦法精確計算的,因此只能給出一個估計的區間,也使得整個誤差只能計算上界,而無法計算準確的值(所以叫做泛化誤差界,而不叫泛化誤差)。
置信風險與兩個量有關,一是樣本數量,顯然給定的樣本數量越大,我們的學習結果越有可能正確,此時置信風險越小;二是分類函數的VC維,顯然VC維越大,推廣能力越差,置信風險會變大。
泛化誤差界的公式爲:
R(w)≤Remp(w)+Ф(n/h)
公式中R(w)就是真實風險,Remp(w)就是經驗風險,Ф(n/h)就是置信風險。統計學習的目標從經驗風險最小化變爲了尋求經驗風險與置信風險的和最小,即結構風險最小。
SVM正是這樣一種努力最小化結構風險的算法
SVM其他的特點就比較容易理解了。
**小樣本,**並不是說樣本的絕對數量少(實際上,對任何算法來說,更多的樣本幾乎總是能帶來更好的效果),而是說與問題的複雜度比起來,SVM算法要求的樣本數是相對比較少的。
**非線性,**是指SVM擅長應付樣本數據線性不可分的情況,主要通過鬆弛變量(也有人叫懲罰變量)和核函數技術來實現,這一部分是SVM的精髓,以後會詳細討論。多
高維模式識別是指樣本維數很高,例如文本的向量表示,如果沒有經過另一系列文章(《文本分類入門》)中提到過的降維處理,出現幾萬維的情況很正常,其他算法基本就沒有能力應付了,SVM卻可以,主要是因爲SVM 產生的分類器很簡潔,用到的樣本信息很少(僅僅用到那些稱之爲“支持向量”的樣本,此爲後話),使得即使樣本維數很高,也不會給存儲和計算帶來大麻煩(相對照而言,kNN算法在分類時就要用到所有樣本,樣本數巨大,每個樣本維數再一高,這日子就沒法過了……)。

在這裏插入圖片描述
SVM算法認爲圖1中的分類器A在性能上優於分類器B,其依據是A的分類間隔比B要大。這裏涉及到第一個SVM獨有的概念“分類間隔”。在保證決策面方向不變且不會出現錯分樣本的情況下移動決策面,會在原來的決策面兩側找到兩個極限位置(越過該位置就會產生錯分現象),如虛線所示。虛線的位置由決策面的方向和距離原決策面最近的幾個樣本的位置決定。而這兩條平行虛線正中間的分界線就是在保持當前決策面方向不變的前提下的最優決策面。兩條虛線之間的垂直距離就是這個最優決策面對應的分類間隔。顯然每一個可能把數據集正確分開的方向都有一個最優決策面(有些方向無論如何移動決策面的位置也不可能將兩類樣本完全分開),而不同方向的最優決策面的分類間隔通常是不同的,那個具有“最大間隔”的決策面就是SVM要尋找的最優解。而這個真正的最優解對應的兩側虛線所穿過的樣本點,就是SVM中的支持樣本點,稱爲“支持向量”。對於圖1中的數據,A決策面就是SVM尋找的最優解,而相應的三個位於虛線上的樣本點在座標系中對應的向量就叫做支持向量。
從表面上看,我們優化的對象似乎是這個決策面的方向和位置。但實際上最優決策面的方向和位置完全取決於選擇哪些樣本作爲支持向量。而在經過漫長的公式推導後,你最終會發現,其實與線性決策面的方向和位置直接相關的參數都會被約減掉,最終結果只取決於樣本點的選擇結果。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章