支持向量机(SVM)简介
支持向量機(support vector machine, SVM):是監督學習中最有影響力的方法之一。類似于邏輯回歸,這個模型也是基于線性函數wTx+b的。不同于邏輯回歸的是,支持向量機不輸出概率,只輸出類別。當wTx+b為正時,支持向量機預測屬于正類。類似地,當wTx+b為負時,支持向量機預測屬于負類。
支持向量機的一個重要創新是核技巧(kernel trick)。核技巧觀察到許多機器學習算法都可以寫成樣本間點積的形式。例如,支持向量機中的線性函數可以重寫為:
其中,x(i)是訓練樣本,α是系數向量。學習算法重寫為這種形式允許我們將x替換為特征函數?(x)的輸出,點積替換為被稱為核函數(kernel function)的函數k(x,x(i))= ?(x)??(x(i))。運算符?表示類似于?(x)T?(x(i))的點積。對于某些特征空間,我們可能不會書面地使用向量內積。在某些無限維空間中,我們需要使用其他類型的內積,如基于積分而非加和的內積。
使用核估計替換點積之后,我們可以使用如下函數進行預測:
這個函數關于x是非線性的,關于?(x)是線性的。α和f(x)之間的關系也是線性的。核函數完全等價于用?(x)預處理所有的輸入,然后在新的轉換空間學習線性模型。
核技巧十分強大有兩個原因:首先,它使我們能夠使用保證有效收斂的凸優化技術來學習非線性模型(關于x的函數)。這是可能的,因為我們可以認為?是固定的,僅優化α,即優化算法可以將決策函數視為不同空間中的線性函數。其二,核函數k的實現方法通常比直接構建?(x)再算點積高效很多。
在某些情況下,?(x)甚至可以是無限維的,對于普通的顯示方法而言,這將是無限的計算代價。在很多情況下,即使?(x)是難算的,k(x,x’)卻會是一個關于x非線性的、易算的函數。
支持向量機不是唯一可以使用核技巧來增強的算法。許多其他的線性模型也可以通過這種方式來增強。使用核技巧的算法類別被稱為核機器(kernel machine)或核方法(kernel method)。
核機器的一個主要缺點是計算決策函數的成本關于訓練樣本的數目是線性的。因為第i個樣本貢獻αik(x,x(i))到決策函數。支持向量機能夠通過學習主要包含零的向量α,以緩和這個缺點。那么判斷新樣本的類別僅需要計算非零αi對應的訓練樣本的核函數。這些訓練樣本被稱為支持向量(support vector)。
當數據集很大時,核機器的計算量也會很大。
在機器學習中,支持向量機(support vector machine,常簡稱為SVM,又名支持向量網絡)是在分類與回歸分析中分析數據的監督式學習模型與相關的學習算法。給定一組訓練實例,每個訓練實例被標記為屬于兩個類別中的一個或另一個,SVM訓練算法創建一個將新的實例分配給兩個類別之一的模型,使其成為非概率二元線性分類器。SVM模型是將實例表示為空間中的點,這樣映射就使得單獨類別的實例被盡可能寬的明顯的間隔分開。然后,將新的實例映射到同一空間,并基于它們落在間隔的哪一側來預測所屬類別。
除了進行線性分類之外,SVM還可以使用所謂的核技巧有效地進行非線性分類,將其輸入隱式映射到高維特征空間中。
當數據未被標記時,不能進行監督式學習,需要用非監督式學習,它會嘗試找出數據到簇的自然聚類,并將新數據映射到這些已形成的簇。將支持向量機改進的聚類算法被稱為支持向量聚類,當數據未被標記或者僅一些數據被標記時,支持向量聚類經常在工業應用中用作分類步驟的預處理。
動機:分類數據是機器學習中的一項常見任務。 假設某些給定的數據點各自屬于兩個類之一,而目標是確定新數據點將在哪個類中。對于支持向量機來說,數據點被視為p維向量,而我們想知道是否可以用(p-1)維超平面來分開這些點。這就是所謂的線性分類器。可能有許多超平面可以把數據分類。最佳超平面的一個合理選擇是以最大間隔把兩個類分開的超平面。因此,我們要選擇能夠讓到每邊最近的數據點的距離最大化的超平面。如果存在這樣的超平面,則稱為最大間隔超平面,而其定義的線性分類器被稱為最大間隔分類器,或者叫做最佳穩定性感知器。
定義:更正式地來說,支持向量機在高維或無限維空間中構造超平面或超平面集合,其可以用于分類、回歸或其他任務。直觀來說,分類邊界距離最近的訓練數據點越遠越好,因為這樣可以縮小分類器的泛化誤差。盡管原始問題可能是在有限維空間中陳述的,但用于區分的集合在該空間中往往線性不可分。為此,有人提出將原有限維空間映射到維數高得多的空間中,在該空間中進行分離可能會更容易。為了保持計算負荷合理,人們選擇適合該問題的核函數 k(x,y)來定義SVM方案使用的映射,以確保用原始空間中的變量可以很容易計算點積。高維空間中的超平面定義為與該空間中的某向量的點積是常數的點的集合。定義超平面的向量可以選擇在數據基中出現的特征向量xi的圖像的參數αi的線性組合。通過選擇超平面,被映射到超平面上的特征空間中的點集x由以下關系定義:Σiαik(xi,x)=constant。注意,如果隨著y逐漸遠離x,k(x,y)變小,則求和中的每一項都是在衡量測試點x與對應的數據基點xi的接近程度。這樣,上述內核的總和可以用于衡量每個測試點相對于待分離的集合中的數據點的相對接近度。
應用:(1)、用于文本和超文本的分類,在歸納和直推方法中都可以顯著減少所需要的有類標的樣本數;(2)、用于圖像分類。實驗結果顯示:在經過三到四輪相關反饋之后,比起傳統的查詢優化方案,支持向量機能夠獲取明顯更高的搜索準確度。這同樣也適用于圖像分區系統,比如使用Vapnik所建議的使用特權方法的修改版本SVM的那些圖像分區系統;(3)、用于手寫字體識別;(4)、用于醫學中分類蛋白質,超過90%的化合物能夠被正確分類。基于支持向量機權重的置換測試已被建議作為一種機制,用于解釋的支持向量機模型。支持向量機權重也被用來解釋過去的SVM模型。
線性SVM:考慮以下形式的n點測試集:(x’1,y1),…,(x’n,yn),其中yi是1或者-1,表明點x’i所屬的類。x’1中每個都是一個p維實向量。我們要求將yi=1的點集x’1與yi=-1的點集分開的”最大間隔超平面”,使得超平面與最近的點x’i之間的距離最大化。任何超平面都可以寫作滿足下面方程的點集x’:w’?x’-b=0,其中w’(不必是歸一化的)是該法向量。參數b/‖w’‖決定從原點沿法向量w’到超平面的偏移量。
硬間隔:如果這些訓練數據是線性可分的,可以選擇分離兩類數據的兩個平行超平面,使得它們之間的距離盡可能大。在這兩個超平面范圍內的區域稱為”間隔”,最大間隔超平面是位于它們正中間的超平面。這些超平面可以由方程族:w’?x’-b=1或是w’?x’-b=1來表示。通過幾何不難得到這兩個超平面之間的距離是2/‖w’‖,因此要使兩平面間的距離最大化,我們需要最小化‖w’‖。同時為了使得樣本數據點都在超平面的間隔區以外,我們需要保證對于所有的i滿足其中的一個條件:w’?x’-b≥1,若yi=1 或是 w’?x’-b≤1, 若yi=-1。這些約束表明每個數據點都必須位于間隔的正確一側。這兩個式子可以寫作:yi(w’?x’-b) ≥1, for all 1≤i≤n。可以用這個式子一起來得到優化問題:”在yi(w’?x’-b)≥1條件下,最小化‖w’‖,對于i=1,…,n”。這個問題的解w’與b決定了我們的分類器x’→sgn(w’?x’-b)。此幾何描述的一個顯而易見卻重要的結果是,最大間隔超平面完全是由最靠近它的那些x’i確定的,這些x’i叫做支持向量。
軟間隔:為了將SVM擴展到數據線性不可分的情況,我們引入鉸鏈損失函數:max(0,1- yi(w’?x’-b))。當約束條件yi(w’?x’-b)≥1, for all 1≤i≤n滿足時(也就是如果x’i位于邊距的正確一側)此函數為零。對于間隔的錯誤一側的數據,該函數的值與距間隔的距離成正比。然后我們希望最小化:
其中參數λ用來權衡增加間隔大小與確保x’i位于間隔的正確一側之間的關系。因此,對于足夠小的λ值,如果輸入數據是可以線性分類的,則軟間隔SVM與硬間隔SVM將表現相同,但即使不可線性分類,仍能學習出可行的分類規則。
用于找到SVM分類器的最近的算法包括次梯度下降和坐標下降。當處理大的稀疏數據集時,這兩種技術已經被證明有著顯著的優點:當存在許多訓練實例時次梯度法是特別有效的,并且當特征空間的維度高時,坐標下降特別有效。
SVM屬于廣義線性分類器的一族,并且可以解釋為感知器的延伸。它們也可以被認為是提克洛夫規范化的特例。它們有一個特別的性質,就是可以同時最小化經驗誤差和最大化幾何邊緣區;因此它們也被稱為最大間隔分類器。
參數選擇:SVM的有效性取決于核函數、核參數和軟間隔參數C的選擇。通常會選只有一個參數γ的高斯核。C和γ的最佳組合通常通過在 C 和γ為指數增長序列下網格搜索來選取。通常情況下,使用交叉驗證來檢查參數選擇的每一個組合,并選擇具有最佳交叉驗證精度的參數。或者,最近在貝葉斯優化中的工作可以用于選擇C和γ,通常需要評估比網格搜索少得多的參數組合。或者,貝葉斯優化的最近進展可以用于選擇C和γ,通常需要計算的參數組合比網格搜索少得多。然后,使用所選擇的參數在整個訓練集上訓練用于測試和分類新數據的最終模型。
SVM的潛在缺點包括以下方面:需要對輸入數據進行完全標記、未校準類成員概率、SVM僅直接適用于兩類任務,因此,必須應用將多類任務減少到幾個二元問題的算法;解出的模型的參數很難理解。
多元分類支持向量機:SVM算法最初是為二值分類問題設計的,實現多分類的主要方法是將一個多分類問題轉化為多個二分類問題。常見方法包括”一對多法”和”一對一法”,一對多法是將某個類別的樣本歸為一類,其他剩余的樣本歸為另一類,這樣k個類別的樣本就構造出了k個二分類SVM;一對一法則是在任意兩類樣本之間設計一個SVM。
實現:最大間隔超平面的參數是通過求解優化得到的。有幾種專門的算法可用于快速解決由SVM產生的QP(Quadratic programming,二次規劃)問題,它們主要依靠啟發式算法將問題分解成更小、更易于處理的子問題。另一種方法是使用內點法,其使用類似牛頓法的迭代找到卡羅需-庫恩-塔克條件下原型和對偶型的解。這種方法不是去解決一系列分解問題,而是直接完全解決該問題。為了避免求解核矩陣很大的線性系統,在核技巧中經常使用矩陣的低秩近似。另一個常見的方法是普萊特的序列最小優化算法(SMO),它把問題分成了若干個可以解析求解的二維子問題,這樣就可以避免使用數值優化算法和矩陣存儲。
線性支持向量機的特殊情況可以通過用于優化其類似問題邏輯回歸的同類算法更高效求解;這類算法包括次梯度下降法和坐標下降法。
一般的核SVM也可以用次梯度下降法更快求解,在允許并行化時求解速度尤其快。
支持向量機(SVM)是一項功能強大的分類和回歸技術,可最大化模型的預測準確度,而不會過度擬合訓練數據。SVM特別適用于分析預測變量字段非常多的數據。
SVM的工作原理是將數據映射到高維特征空間,這樣即使數據不是線性可分,也可以對該數據點進行分類。找到類別之間的分隔符,然后以將分隔符繪制成超平面的方式變換數據。之后,可用新數據的特征預測新記錄所屬的組。除了類別之間的分隔線,分類SVM模型還會查找用于定義兩個類別之間的空間的邊際線。位于邊距上的數據點稱為支持向量。兩個類別之間的邊距越寬,模型在預測新記錄所屬的類別方面性能越佳。為了增加邊界的寬度,可以接受少量的誤分類。
支持向量機是基于統計學習理論和結構風險最小化(Structual Risk Minimization, SRM)原則發展出的一種新的通用學習方法。支持向量機使用間隔最大化的學習策略,通過尋找定義的特征空間中的最大的分類間隔,實現對不同類別的準確分類。對于非線性情況,可以通過核函數映射的方式將其轉化為線性分類。相比其它傳統學習算法,SVM算法能夠有效避免局部最優解和維數災難的問題。
SVM是在統計學習理論基礎上提出的機器學習方法,它建立在VC維理論(Vapnik-Chervonenkis Dimension,在統計學習理論中,VC維反映了函數集的實際學習能力,VC維越大,則學習機器越復雜。另外,VC維還影響學習機的泛化能力)和結構風險最小化原理基礎上,且根據有效樣本信息尋求在模型復雜度與學習能力之間的最佳折中,達到最小的實際風險。通過引入核函數,其能很好的解決線性不可分的問題,從而對不同數據集都有很好的效果。
若超平面可以直接將訓練集中的樣本分開,則這種分類問題為線性可分問題。在分類器中,樣本分別位于超平面的兩邊,不會出現混疊,這樣得到的SVM分類器被稱之為硬間隔(hardmargin)線性支持向量機。當面對非線性的情況時,支持向量機處理的方法是選擇核函數,通過核函數將其訓練樣本映射到高維空間中,從而在高維空間中求得最佳的超平面。使用核函數的好處是,在獲得最優超平面的同時,其計算量并沒有比原來復雜很多。
非線性分類中常見的核函數包括:齊次多項式、非齊次多項式、雙曲正切、高斯核(Gaussiankernel)、線性核、徑向基函數(radialbasis function, RBF)核和、Sigmoid核。
SVM算法在對非線性、小樣本、高維數的問題解決上有較大的優勢。
核函數的機理就是將原始非線性的樣本通過非線性映射映射至高維特征空間,使得在新的空間里樣本線性可分,進而可用線性樣本的分類理論解決此類問題。
OpenCV和libsvm庫中都提供了支持SVM的相關接口。
以上內容主要摘自:《深度學習中文版》?和 ?維基百科?
GitHub:https://github.com/fengbingchun/NN_Test
總結
以上是生活随笔為你收集整理的支持向量机(SVM)简介的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++/C++11中std::runti
- 下一篇: log库spdlog简介及使用