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