1. 程式人生 > >8、支援向量機SVM

8、支援向量機SVM

支援向量機

1、支援向量機的應用領域:

支援向量機可用於迴歸、分類和異常檢驗,前者即為支援向量機迴歸,後者為支援向量機分類。支援向量機應用在許多領域,包括手寫數字識別、物件識別、演說人識別,以及基準時間序列預測檢驗;基因分組;文字分類(比如每篇文件的主題);檢測一些很少發生但很重要的事件,比如內燃機引擎故障,地震,security breach。

SVM訓練速度較慢;SVM能夠對複雜的非線性邊界建模,不容易過分擬合;SVM總能發現全域性最優解。

在實踐中,不可能事先判定一個數據集是否線性可分,因此可以先假設資料可分並驗證,如果不成立再假設資料不可分。

SVM的研究目標主要是提高訓練和檢驗速度,使得SVM

可以成為超大型資料集更可行的選擇。其他問題包括,為給定的資料集確定最佳核函式,為多類問題找出更有效的方法。

SVM使用非線性分類器的優勢,而邏輯模式以及決策樹模式都是使用了直線方法。

1、SVM思想和原理

1)SVM的主要思想可以概括為兩點:

①它是針對線性可分情況進行分析,對於線性不可分的情況,通過使用非線性對映演算法將低維輸入空間線性不可分的樣本轉化為高維特徵空間使其線性可分,從而使得高維特徵空間採用線性演算法對樣本的非線性特徵進行分析成為可能。

②SVM方法是通過一個非線性對映p,把樣本空間對映到一個高維乃至無窮維的特徵空間中(Hilbert空間),使得在原來的樣本空間中非線性可分的問題轉化為在特徵空間中的線性可分問題。簡單地說,就是升維和線性化

。升維,就是把樣本向高維空間做對映,一般情況下這會增加計算的複雜性,甚至會引起“維數災難”,因而人們很少問津。但是作為分類、迴歸等問題來說,很可能在低維樣本空間無法線性處理的樣本集,在高維特徵空間中卻可以通過一個線性超平面實現線性劃分(或迴歸)。一般的升維都會帶來計算的複雜化,SVM方法巧妙的解決了這個難題;應用核函式的展開定理,就不需要知道非線性對映的顯式表示式;由於是在高維特徵空間中建立線性學習機,所以與線性模型相比,不但幾乎不增加計算的複雜性,而且在某種程度上避免了“維數災難”。這一切要歸功於核函式的展開和計算理論。

2)SVM可以想象成為一個曲面邊界將各種點在多維空間中利用點的特徵值進行分割。SVM

的目標就是尋找一個超平面,來將點分類。二維空間的超平面是一條直線;三維空間的超平面是一個平面。尋找類間最大區分的那個平面,能更好的對將來的新資料進行區分。

支援向量機:是一種二類分類模型,其基本模型定義為特徵空間上的間隔最大的線性分類器,其學習策略便是間隔最大化,最終可轉化為一個凸二次規劃問題的求解

線性情況下的支援向量機,它通過尋找一個線性的超平面來達到對資料進行分類的目的。不過,由於是線性方法,所以對非線性的資料就沒有辦法處理了。因為這樣的資料本身就是線性不可分的。SVM的一般做法是:將所有待分類的點對映到“高維空間”,然後在高維空間中找到一個能將這些點分開的“超平面”。僅僅找到超平面是不夠的,因為在通常的情況下,滿足條件的“超平面”的個數不是唯一的。SVM 需要的是利用這些超平面,找到這兩類點之間的“最大間隔”。

資料點是n維空間中的點,把這些點通過一個n-1維的超平面分開,通常這個被稱為線性分類器。找到分類最佳的平面,即屬於兩個不同類的資料點間隔最大的那個面,該面亦稱為最大間隔超平面,那麼這個分類器就稱為最大間隔分類器。

支援向量機將向量對映到一個更高維的空間裡,在這個空間裡建立有一個最大間隔超平面。在分開資料的超平面的兩邊建有兩個互相平行的超平面。建立方向合適的分隔超平面使兩個與之平行的超平面間的距離最大化。為什麼要找到最大間隔呢?幾何間隔越大的解,它的誤差上界越小。因此最大化幾何間隔成了我們訓練階段的目標。


H是分類面,而H1和H2是平行於H,且過離H最近的兩類樣本的直線,H1與H,H2與H之間的距離就是幾何間隔。

幾何間隔與樣本的誤分次數間存在關係:

其中的δ是樣本集合到分類面的間隔,R=max ||xi|| i=1,...,n,即R是所有樣本中(xi是以向量表示的第i個樣本)向量長度最長的值(也就是說代表樣本的分佈有多麼廣)。先不必追究誤分次數的具體定義和推導過程,只要記得這個誤分次數一定程度上代表分類器的誤差。而從上式可以看出,誤分次數的上界由幾何間隔決定!(當然,是樣本已知的時候)

無法確定分類線(線性超平面)時該怎麼辦?

此時可以將資料點投影到一個高維空間,在高維空間中它們可能就變得線性可分了。其目的是為了最大化兩個類的邊界之間的距離。

我的資料點多於兩個類時該怎麼辦?

此時支援向量機仍將問題看做一個二元分類問題,但這次會有多個支援向量機用來兩兩區分每一個類,直到所有的類之間都有區別。

2、核函式的本質   

對於非線性可分的情況:SVM利用kernel來完成非線性空間的分類。

1. 實際中,我們會經常遇到線性不可分的樣例,此時,我們的常用做法是把樣例特徵對映到高維空間中去;維度大小是會高到可怕的。那咋辦呢?

2. 此時,核函式就隆重登場了,核函式的價值在於將特徵進行從低維到高維的轉換,但核函式事先在低維上進行計算,而將實質上的分類效果表現在了高維上,避免了直接在高維空間中的複雜計算。

4、VC維和outlier

分類函式的VC維,顯然VC維越大,推廣能力越差,置信風險會變大。

VC維(Vapnik-Chervonenkis Dimension)的概念是為了研究學習過程一致收斂的速度和推廣性,由統計學習理論定義的有關函式集學習效能的一個重要指標。

傳統的定義是:對一個指標函式集,如果存在H個樣本能夠被函式集中的函式按所有可能的2的K次方種形式分開,則稱函式集能夠把H個樣本打散;函式集的VC維就是它能打散的最大樣本數目H。若對任意數目的樣本都有函式能將它們打散,則函式集的VC維是無窮大,有界實函式的VC維可以通過用一定的閥值將它轉化成指示函式來定義。

VC維反映了函式集的學習能力,VC維越大則學習機器越複雜(容量越大),遺憾的是,目前尚沒有通用的關於任意函式集VC維計算的理論,只對一些特殊的函式集知道其VC維。例如在N維空間中線形分類器和線形實函式的VC維是n+1。

對於這種偏離正常位置很遠的資料點,我們稱之為 outlier ,在我們原來的 SVM 模型裡,outlier的存在有可能造成很大的影響,因為超平面本身就是隻有少數幾個 supportvector 組成的,如果這些 support vector 裡又存在 outlier 的話,其影響就很大了。

5、SVM特點

SVM訓練速度較慢;SVM能夠對複雜的非線性邊界建模,不容易過分擬合;SVM總能發現全域性最優解。

(1)非線性對映是SVM方法的理論基礎,SVM利用內積核函式代替向高維空間的非線性對映;

(2)對特徵空間劃分的最優超平面是SVM的目標,最大化分類邊界的思想是SVM方法的核心;

(3)支援向量是SVM的訓練結果,在SVM分類決策中起決定作用的是支援向量。

(4)SVM是一種有堅實理論基礎的新穎的小樣本學習方法。它基本上不涉及概率測度及大數定律等,因此不同於現有的統計方法。從本質上看,它避開了從歸納到演繹的傳統過程,實現了高效的從訓練樣本到預測樣本的“轉導推理”,大大簡化了通常的分類和迴歸等問題。

(5)SVM 的最終決策函式只由少數的支援向量所確定,計算的複雜性取決於支援向量的數目,而不是樣本空間的維數,這在某種意義上避免了“維數災難”。

(6)少數支援向量決定了最終結果,這不但可以幫助我們抓住關鍵樣本、“剔除”大量冗餘樣本,而且註定了該方法不但演算法簡單,而且具有較好的“魯棒”性。這種“魯棒”性主要體現在:(魯棒性又稱健壯性)

①  增、刪非支援向量樣本對模型沒有影響;

②支援向量樣本集具有一定的魯棒性;

③有些成功的應用中,SVM 方法對核的選取不敏感

SVM的優點:可以同時用於分類和預測;不會過多受噪聲資料影響,也不易overfitting。

支援向量機不足

(1)SVM訓練過程較慢,尤其在大量特徵或者樣本時

    由於SVM是藉助二次規劃來求解支援向量,而求解二次規劃將涉及m階矩陣的計算(m為樣本的個數),當m數目很大時該矩陣的儲存和計算將耗費大量的機器記憶體和運算時間。 (2) 用SVM解決多分類問題存在困難

經典的支援向量機演算法只給出了二類分類的演算法,而在資料探勘的實際應用中,一般要解決多類的分類問題。可以通過多個二類支援向量機的組合來解決。主要有一對多組合模式、一對一組合模式和SVM決策樹;再就是通過構造多個分類器的組合來解決。主要原理是克服SVM固有的缺點,結合其他演算法的優勢,解決多類問題的分類精度。如:與粗集理論結合,形成一種優勢互補的多類問題的組合分類器。

(3)尋找最佳模型需要嘗試不同的kernel以及模型引數;

(4)模型複雜,黑盒模型,結果不易解釋。