smo演算法matlab
Ⅰ SMO演算法為什麼要選兩個變數
SMO演算法由Microsoft Research的John C. Platt在1998年提出,並成為最快的二次規劃優化演算法,特別針對線性SVM和數據稀疏時性能更優。關於SMO最好的資料就是他本人寫的《Sequential Minimal Optimization A Fast Algorithm for Training Support Vector Machines》了。
我拜讀了一下,下面先說講義上對此方法的總結。
首先回到我們前面一直懸而未解的問題,對偶函數最後的優化問題:
要解決的是在參數上求最大值W的問題,至於和都是已知數。C由我們預先設定,也是已知數。
按照坐標上升的思路,我們首先固定除以外的所有參數,然後在上求極值。等一下,這個思路有問題,因為如果固定以外的所有參數,那麼將不再是變數(可以由其他值推出),因為問題中規定了
因此,我們需要一次選取兩個參數做優化,比如和,此時可以由和其他參數表示出來。這樣回帶到W中,W就只是關於的函數了,可解。
這樣,SMO的主要步驟如下:
意思是,第一步選取一對和,選取方法使用啟發式方法(後面講)。第二步,固定除和之外的其他參數,確定W極值條件下的,由表示。
SMO之所以高效就是因為在固定其他參數後,對一個參數優化過程很高效。
下面討論具體方法:
假設我們選取了初始值滿足了問題中的約束條件。接下來,我們固定,這樣W就是和的函數。並且和滿足條件:
由於都是已知固定值,因此為了方面,可將等式右邊標記成實數值。
當和異號時,也就是一個為1,一個為-1時,他們可以表示成一條直線,斜率為1。如下圖:
橫軸是,縱軸是,和既要在矩形方框內,也要在直線上,因此
,
同理,當和同號時,
,
然後我們打算將用表示:
然後反代入W中,得
展開後W可以表示成。其中a,b,c是固定值。這樣,通過對W進行求導可以得到,然而要保證滿足,我們使用表示求導求出來的,然而最後的,要根據下面情況得到:
這樣得到後,我們可以得到的新值。
下面進入Platt的文章,來找到啟發式搜索的方法和求b值的公式。
這邊文章使用的符號表示有點不太一樣,不過實質是一樣的,先來熟悉一下文章中符號的表示。
文章中定義特徵到結果的輸出函數為
與我們之前的實質是一致的。
原始的優化問題為:
求導得到:
經過對偶後為:
s.t.
這里與W函數是一樣的,只是符號求反後,變成求最小值了。和是一樣的,都表示第i個樣本的輸出結果(1或-1)。
經過加入鬆弛變數後,模型修改為:
由公式(7)代入(1)中可知,
這個過程和之前對偶過程一樣。
重新整理我們要求的問題為:
與之對應的KKT條件為:
這個KKT條件說明,在兩條間隔線外面的點,對應前面的系數為0,在兩條間隔線裡面的對應為C,在兩條間隔線上的對應的系數在0和C之間。
將我們之前得到L和H重新拿過來:
之前我們將問題進行到這里,然後說將用表示後代入W中,這里將代入中,得
其中
這里的和代表某次迭代前的原始值,因此是常數,而和是變數,待求。公式(24)中的最後一項是常數。
由於和滿足以下公式
因為的值是固定值,在迭代前後不會變。
那麼用s表示,上式兩邊乘以時,變為:
其中
代入(24)中,得
這時候只有是變數了,求導
如果的二階導數大於0(凹函數),那麼一階導數為0時,就是極小值了。
假設其二階導數為0(一般成立),那麼上式化簡為:
將w和v代入後,繼續化簡推導,得(推導了六七行推出來了)
我們使用來表示:
通常情況下目標函數是正定的,也就是說,能夠在直線約束方向上求得最小值,並且。
那麼我們在(30)兩邊都除以可以得到
這里我們使用表示優化後的值,是迭代前的值,。
與之前提到的一樣不是最終迭代後的值,需要進行約束:
那麼
在特殊情況下,可能不為正,如果核函數K不滿足Mercer定理,那麼目標函數可能變得非正定,可能出現負值。即使K是有效的核函數,如果訓練樣本中出現相同的特徵x,那麼仍有可能為0。SMO演算法在不為正值的情況下仍有效。為保證有效性,我們可以推導出就是的二階導數,,沒有極小值,最小值在邊緣處取到(類比),時更是單調函數了,最小值也在邊緣處取得,而的邊緣就是L和H。這樣將和分別代入中即可求得的最小值,相應的還是也可以知道了。具體計算公式如下:
至此,迭代關系式出了b的推導式以外,都已經推出。
b每一步都要更新,因為前面的KKT條件指出了和的關系,而和b有關,在每一步計算出後,根據KKT條件來調整b。
b的更新有幾種情況:
來自羅林開的ppt
這里的界內指,界上就是等於0或者C了。
前面兩個的公式推導可以根據
和對於有的KKT條件推出。
這樣全部參數的更新公式都已經介紹完畢,附加一點,如果使用的是線性核函數,我們就可以繼續使用w了,這樣不用掃描整個樣本庫來作內積了。
w值的更新方法為:
根據前面的
公式推導出。
12 SMO中拉格朗日乘子的啟發式選擇方法
終於到了最後一個問題了,所謂的啟發式選擇方法主要思想是每次選擇拉格朗日乘子的時候,優先選擇樣本前面系數的作優化(論文中稱為無界樣例),因為在界上(為0或C)的樣例對應的系數一般不會更改。
這條啟發式搜索方法是選擇第一個拉格朗日乘子用的,比如前面的。那麼這樣選擇的話,是否最後會收斂。可幸的是Osuna定理告訴我們只要選擇出來的兩個中有一個違背了KKT條件,那麼目標函數在一步迭代後值會減小。違背KKT條件不代表,在界上也有可能會違背。是的,因此在給定初始值=0後,先對所有樣例進行循環,循環中碰到違背KKT條件的(不管界上還是界內)都進行迭代更新。等這輪過後,如果沒有收斂,第二輪就只針對的樣例進行迭代更新。
在第一個乘子選擇後,第二個乘子也使用啟發式方法選擇,第二個乘子的迭代步長大致正比於,選擇第二個乘子能夠最大化。即當為正時選擇負的絕對值最大的,反之,選擇正值最大的。
最後的收斂條件是在界內()的樣例都能夠遵循KKT條件,且其對應的只在極小的范圍內變動。
至於如何寫具體的程序,請參考John C. Platt在論文中給出的偽代碼。
13 總結
這份SVM的講義重點概括了SVM的基本概念和基本推導,中規中矩卻又讓人醍醐灌頂。起初讓我最頭疼的是拉格朗日對偶和SMO,後來逐漸明白拉格朗日對偶的重要作用是將w的計算提前並消除w,使得優化函數變為拉格朗日乘子的單一參數優化問題。而SMO裡面迭代公式的推導也著實讓我花費了不少時間。
對比這么復雜的推導過程,SVM的思想確實那麼簡單。它不再像logistic回歸一樣企圖去擬合樣本點(中間加了一層sigmoid函數變換),而是就在樣本中去找分隔線,為了評判哪條分界線更好,引入了幾何間隔最大化的目標。
之後所有的推導都是去解決目標函數的最優化上了。在解決最優化的過程中,發現了w可以由特徵向量內積來表示,進而發現了核函數,僅需要調整核函數就可以將特徵進行低維到高維的變換,在低維上進行計算,實質結果表現在高維上。由於並不是所有的樣本都可分,為了保證SVM的通用性,進行了軟間隔的處理,導致的結果就是將優化問題變得更加復雜,然而驚奇的是鬆弛變數沒有出現在最後的目標函數中。最後的優化求解問題,也被拉格朗日對偶和SMO演算法化解,使SVM趨向於完美。
Ⅱ 支持向量機學習演算法
支持向量機學習演算法主要有以下五種:
(1)獲取學習樣本(xi,yi),i=1,2…,其中xi∈Rn,y∈任 {1,-1}l,對樣本進行預處理;
(2)選擇進行非線性變換的核函數及對錯分(誤差)進行懲罰的懲罰因子c;
(3)形成二次優化問題用優化方法(如:Chuknlng演算法、內點演算法、SMO演算法);
(4)獲得a,a*及b0的值,代入方程中,獲得分類或函數擬合的支持向量機;
(5)將需預測或分類的數據代入支持向量機方程中獲得結果。
基坑降水環境影響評價參數選取降水方式、岩土性質、水文地質邊界、基坑側壁狀態、邊載分布、後續使用年限、基礎型式、差異沉降8級,目標輸出模式對應4個級別:優等級(Ⅰ)、良好級(Ⅱ)、中等級(Ⅲ)、差級(Ⅳ)。
用一對多多類支持向量機水質分類法:有四類等級要劃分,於是在抽取訓練集的時候,分別抽取I所對應的向量作為正集,其餘所對應的向量作為負集;Ⅱ所對應的向量作為正集,其餘所對應的向量作為負集……,這四個訓練集分別進行訓練得到四個分類器。然後,利用這四個訓練結果文件對測試集分別進行測試,最後每個測試都有一個結果,最終的結果便是這四個值中最大的一個。
利用支持向量機進行基坑降水環境影響評價就是尋找影響基坑降水環境系統和孕災環境系統的指標和基坑降水環境影響等級之間的關系,可建立以下四個分類函數:
基坑降水工程的環境效應與評價方法
Ⅲ 機器學習實戰 SMO演算法是否寫錯了
我確定,里頭的完整版SMO演算法是寫錯了。在尋找第二個變數時,每次只找了一個,優化失敗後就放棄了,重新挑選第一個變數。這樣最後演算法結束後,還有不少變數不滿足KKT條件。我一度以為這個演算法不能收斂到全局最優。而且每次運行結果都不一樣。後來,我把代碼改了一下,在尋找第二個變數時,把所有可能符合條件的變數都嘗試一遍。這樣,演算法就能收斂了。運行結束後,所有變數都能滿足KKT條件。
Ⅳ svm演算法是什麼
SVM(Support Vector Machine)中文名為支持向量機,是常見的一種判別方法。
支持向量機(Support Vector Machine, SVM)是一類按監督學習(supervised learning)方式對數據進行二元分類的廣義線性分類器(generalized linear classifier),其決策邊界是對學習樣本求解的最大邊距超平面(maximum-margin hyperplane)。
數值求解特點:
SVM的求解可以使用二次凸優化問題的數值方法,例如內點法和序列最小優化演算法,在擁有充足學習樣本時也可使用隨機梯度下降。
在二次凸優化問題中,SMO的每步迭代都嚴格地優化了SVM的對偶問題,且迭代會在有限步後收斂於全局極大值。SMO演算法的迭代速度與所選取乘子對KKT條件的偏離程度有關,因此SMO通常採用啟發式方法選取拉格朗日乘子。
在每次迭代時,SGD首先判定約束條件,若該樣本不滿足約束條件,則SGD按學習速率最小化結構風險;若該樣本滿足約束條件,為SVM的支持向量,則SGD根據正則化系數平衡經驗風險和結構風險,即SGD的迭代保持了SVM的稀疏性。
Ⅳ svm中smo演算法解決對偶問題第二個alpha的選擇的原則是什麼
alpha>0 才會有y(wx+b)=0這個條件存在,所以確定分割超平面y=wx+b之後,才可以找到那些使得alpha>0的點也即支撐向量啊~
Ⅵ 支持向量機基本原理 matlab程序及其應用
支持向量機
1 簡介
支持向量機基本上是最好的有監督學習演算法了。最開始接觸SVM是去年暑假的時候,老師要求交《統計學習理論》的報告,那時去網上下了一份入門教程,裡面講的很通俗,當時只是大致了解了一些相關概念。這次斯坦福提供的學習材料,讓我重新學習了一些SVM知識。我看很多正統的講法都是從VC 維理論和結構風險最小原理出發,然後引出SVM什麼的,還有些資料上來就講分類超平面什麼的。這份材料從前幾節講的logistic回歸出發,引出了SVM,既揭示了模型間的聯系,也讓人覺得過渡更自然。
2 重新審視logistic回歸
Logistic回歸目的是從特徵學習出一個0/1分類模型,而這個模型是將特性的線性組合作為自變數,由於自變數的取值范圍是負無窮到正無窮。因此,使用logistic函數(或稱作sigmoid函數)將自變數映射到(0,1)上,映射後的值被認為是屬於y=1的概率。
形式化表示就是
假設函數
其中x是n維特徵向量,函數g就是logistic函數。
的圖像是
可以看到,將無窮映射到了(0,1)。
而假設函數就是特徵屬於y=1的概率。
當我們要判別一個新來的特徵屬於哪個類時,只需求 ,若大於0.5就是y=1的類,反之屬於y=0類。
再審視一下 ,發現 只和 有關, >0,那麼 ,g(z)只不過是用來映射,真實的類別決定權還在 。還有當 時, =1,反之 =0。如果我們只從 出發,希望模型達到的目標無非就是讓訓練數據中y=1的特徵 ,而是y=0的特徵 。Logistic回歸就是要學習得到 ,使得正例的特徵遠大於0,負例的特徵遠小於0,強調在全部訓練實例上達到這個目標。
圖形化表示如下:
中間那條線是 ,logistic回顧強調所有點盡可能地遠離中間那條線。學習出的結果也就中間那條線。考慮上面3個點A、B和C。從圖中我們可以確定A是×類別的,然而C我們是不太確定的,B還算能夠確定。這樣我們可以得出結論,我們更應該關心靠近中間分割線的點,讓他們盡可能地遠離中間線,而不是在所有點上達到最優。因為那樣的話,要使得一部分點靠近中間線來換取另外一部分點更加遠離中間線。我想這就是支持向量機的思路和logistic回歸的不同點,一個考慮局部(不關心已經確定遠離的點),一個考慮全局(已經遠離的點可能通過調整中間線使其能夠更加遠離)。這是我的個人直觀理解。
3 形式化表示
我們這次使用的結果標簽是y=-1,y=1,替換在logistic回歸中使用的y=0和y=1。同時將 替換成w和b。以前的 ,其中認為 。現在我們替換 為b,後面替換 為 (即 )。這樣,我們讓 ,進一步 。也就是說除了y由y=0變為y=-1,只是標記不同外,與logistic回歸的形式化表示沒區別。再明確下假設函數
上一節提到過我們只需考慮 的正負問題,而不用關心g(z),因此我們這里將g(z)做一個簡化,將其簡單映射到y=-1和y=1上。映射關系如下:
4 函數間隔(functional margin)和幾何間隔(geometric margin)
給定一個訓練樣本 ,x是特徵,y是結果標簽。i表示第i個樣本。我們定義函數間隔如下:
可想而知,當 時,在我們的g(z)定義中, , 的值實際上就是 。反之亦然。為了使函數間隔最大(更大的信心確定該例是正例還是反例),當 時, 應該是個大正數,反之是個大負數。因此函數間隔代表了我們認為特徵是正例還是反例的確信度。
繼續考慮w和b,如果同時加大w和b,比如在 前面乘個系數比如2,那麼所有點的函數間隔都會增大二倍,這個對求解問題來說不應該有影響,因為我們要求解的是 ,同時擴大w和b對結果是無影響的。這樣,我們為了限制w和b,可能需要加入歸一化條件,畢竟求解的目標是確定唯一一個w和b,而不是多組線性相關的向量。這個歸一化一會再考慮。
剛剛我們定義的函數間隔是針對某一個樣本的,現在我們定義全局樣本上的函數間隔
說白了就是在訓練樣本上分類正例和負例確信度最小那個函數間隔。
接下來定義幾何間隔,先看圖
假設我們有了B點所在的 分割面。任何其他一點,比如A到該面的距離以 表示,假設B就是A在分割面上的投影。我們知道向量BA的方向是 (分割面的梯度),單位向量是 。A點是 ,所以B點是x= (利用初中的幾何知識),帶入 得,
進一步得到
實際上就是點到平面距離。
再換種更加優雅的寫法:
當 時,不就是函數間隔嗎?是的,前面提到的函數間隔歸一化結果就是幾何間隔。他們為什麼會一樣呢?因為函數間隔是我們定義的,在定義的時候就有幾何間隔的色彩。同樣,同時擴大w和b,w擴大幾倍, 就擴大幾倍,結果無影響。同樣定義全局的幾何間隔
5 最優間隔分類器(optimal margin classifier)
回想前面我們提到我們的目標是尋找一個超平面,使得離超平面比較近的點能有更大的間距。也就是我們不考慮所有的點都必須遠離超平面,我們關心求得的超平面能夠讓所有點中離它最近的點具有最大間距。形象的說,我們將上面的圖看作是一張紙,我們要找一條折線,按照這條折線折疊後,離折線最近的點的間距比其他折線都要大。形式化表示為:
這里用 =1規約w,使得 是幾何間隔。
到此,我們已經將模型定義出來了。如果求得了w和b,那麼來一個特徵x,我們就能夠分類了,稱為最優間隔分類器。接下的問題就是如何求解w和b的問題了。
由於 不是凸函數,我們想先處理轉化一下,考慮幾何間隔和函數間隔的關系, ,我們改寫一下上面的式子:
這時候其實我們求的最大值仍然是幾何間隔,只不過此時的w不受 的約束了。然而這個時候目標函數仍然不是凸函數,沒法直接代入優化軟體里計算。我們還要改寫。前面說到同時擴大w和b對結果沒有影響,但我們最後要求的仍然是w和b的確定值,不是他們的一組倍數值,因此,我們需要對 做一些限制,以保證我們解是唯一的。這里為了簡便我們取 。這樣的意義是將全局的函數間隔定義為1,也即是將離超平面最近的點的距離定義為 。由於求 的最大值相當於求 的最小值,因此改寫後結果為:
這下好了,只有線性約束了,而且是個典型的二次規劃問題(目標函數是自變數的二次函數)。代入優化軟體可解。
到這里發現,這個講義雖然沒有像其他講義一樣先畫好圖,畫好分類超平面,在圖上標示出間隔那麼直觀,但每一步推導有理有據,依靠思路的流暢性來推導出目標函數和約束。
接下來介紹的是手工求解的方法了,一種更優的求解方法。
6 拉格朗日對偶(Lagrange ality)
先拋開上面的二次規劃問題,先來看看存在等式約束的極值問題求法,比如下面的最優化問題:
目標函數是f(w),下面是等式約束。通常解法是引入拉格朗日運算元,這里使用 來表示運算元,得到拉格朗日公式為
L是等式約束的個數。
然後分別對w和 求偏導,使得偏導數等於0,然後解出w和 。至於為什麼引入拉格朗日運算元可以求出極值,原因是f(w)的dw變化方向受其他不等式的約束,dw的變化方向與f(w)的梯度垂直時才能獲得極值,而且在極值處,f(w)的梯度與其他等式梯度的線性組合平行,因此他們之間存在線性關系。(參考《最優化與KKT條件》)
然後我們探討有不等式約束的極值問題求法,問題如下:
我們定義一般化的拉格朗日公式
這里的 和 都是拉格朗日運算元。如果按這個公式求解,會出現問題,因為我們求解的是最小值,而這里的 已經不是0了,我們可以將 調整成很大的正值,來使最後的函數結果是負無窮。因此我們需要排除這種情況,我們定義下面的函數:
這里的P代表primal。假設 或者 ,那麼我們總是可以調整 和 來使得 有最大值為正無窮。而只有g和h滿足約束時, 為f(w)。這個函數的精妙之處在於 ,而且求極大值。
因此我們可以寫作
這樣我們原來要求的min f(w)可以轉換成求 了。
我們使用 來表示 。如果直接求解,首先面對的是兩個參數,而 也是不等式約束,然後再在w上求最小值。這個過程不容易做,那麼怎麼辦呢?
我們先考慮另外一個問題
D的意思是對偶, 將問題轉化為先求拉格朗日關於w的最小值,將 和 看作是固定值。之後在 求最大值的話:
這個問題是原問題的對偶問題,相對於原問題只是更換了min和max的順序,而一般更換順序的結果是Max Min(X) <= MinMax(X)。然而在這里兩者相等。用 來表示對偶問題如下:
下面解釋在什麼條件下兩者會等價。假設f和g都是凸函數,h是仿射的(affine, )。並且存在w使得對於所有的i, 。在這種假設下,一定存在 使得 是原問題的解, 是對偶問題的解。還有 另外, 滿足庫恩-塔克條件(Karush-Kuhn-Tucker, KKT condition),該條件如下:
所以如果 滿足了庫恩-塔克條件,那麼他們就是原問題和對偶問題的解。讓我們再次審視公式(5),這個條件稱作是KKT al complementarity條件。這個條件隱含了如果 ,那麼 。也就是說, 時,w處於可行域的邊界上,這時才是起作用的約束。而其他位於可行域內部( 的)點都是不起作用的約束,其 。這個KKT雙重補足條件會用來解釋支持向量和SMO的收斂測試。
這部分內容思路比較凌亂,還需要先研究下《非線性規劃》中的約束極值問題,再回頭看看。KKT的總體思想是將極值會在可行域邊界上取得,也就是不等式為0或等式約束里取得,而最優下降方向一般是這些等式的線性組合,其中每個元素要麼是不等式為0的約束,要麼是等式約束。對於在可行域邊界內的點,對最優解不起作用,因此前面的系數為0。
7 最優間隔分類器(optimal margin classifier)
重新回到SVM的優化問題:
我們將約束條件改寫為:
從KKT條件得知只有函數間隔是1(離超平面最近的點)的線性約束式前面的系數 ,也就是說這些約束式 ,對於其他的不在線上的點( ),極值不會在他們所在的范圍內取得,因此前面的系數 .注意每一個約束式實際就是一個訓練樣本。
看下面的圖:
實線是最大間隔超平面,假設×號的是正例,圓圈的是負例。在虛線上的點就是函數間隔是1的點,那麼他們前面的系數 ,其他點都是 。這三個點稱作支持向量。構造拉格朗日函數如下:
注意到這里只有 沒有 是因為原問題中沒有等式約束,只有不等式約束。
下面我們按照對偶問題的求解步驟來一步步進行,
首先求解 的最小值,對於固定的 , 的最小值只與w和b有關。對w和b分別求偏導數。
並得到
將上式帶回到拉格朗日函數中得到,此時得到的是該函數的最小值(目標函數是凸函數)
代入後,化簡過程如下:
最後得到
由於最後一項是0,因此簡化為
這里我們將向量內積 表示為
此時的拉格朗日函數只包含了變數 。然而我們求出了 才能得到w和b。
接著是極大化的過程 ,
前面提到過對偶問題和原問題滿足的幾個條件,首先由於目標函數和線性約束都是凸函數,而且這里不存在等式約束h。存在w使得對於所有的i, 。因此,一定存在 使得 是原問題的解, 是對偶問題的解。在這里,求 就是求 了。
如果求出了 ,根據 即可求出w(也是 ,原問題的解)。然後
即可求出b。即離超平面最近的正的函數間隔要等於離超平面最近的負的函數間隔。
關於上面的對偶問題如何求解,將留給下一篇中的SMO演算法來闡明。
這里考慮另外一個問題,由於前面求解中得到
我們通篇考慮問題的出發點是 ,根據求解得到的 ,我們代入前式得到
也就是說,以前新來的要分類的樣本首先根據w和b做一次線性運算,然後看求的結果是大於0還是小於0,來判斷正例還是負例。現在有了 ,我們不需要求出w,只需將新來的樣本和訓練數據中的所有樣本做內積和即可。那有人會說,與前面所有的樣本都做運算是不是太耗時了?其實不然,我們從KKT條件中得到,只有支持向量的 ,其他情況 。因此,我們只需求新來的樣本和支持向量的內積,然後運算即可。這種寫法為下面要提到的核函數(kernel)做了很好的鋪墊。這是上篇,先寫這么多了。
7 核函數(Kernels)
考慮我們最初在「線性回歸」中提出的問題,特徵是房子的面積x,這里的x是實數,結果y是房子的價格。假設我們從樣本點的分布中看到x和y符合3次曲線,那麼我們希望使用x的三次多項式來逼近這些樣本點。那麼首先需要將特徵x擴展到三維 ,然後尋找特徵和結果之間的模型。我們將這種特徵變換稱作特徵映射(feature mapping)。映射函數稱作 ,在這個例子中
我們希望將得到的特徵映射後的特徵應用於SVM分類,而不是最初的特徵。這樣,我們需要將前面 公式中的內積從 ,映射到 。
至於為什麼需要映射後的特徵而不是最初的特徵來參與計算,上面提到的(為了更好地擬合)是其中一個原因,另外的一個重要原因是樣例可能存在線性不可分的情況,而將特徵映射到高維空間後,往往就可分了。(在《數據挖掘導論》Pang-Ning Tan等人著的《支持向量機》那一章有個很好的例子說明)
將核函數形式化定義,如果原始特徵內積是 ,映射後為 ,那麼定義核函數(Kernel)為
到這里,我們可以得出結論,如果要實現該節開頭的效果,只需先計算 ,然後計算 即可,然而這種計算方式是非常低效的。比如最初的特徵是n維的,我們將其映射到 維,然後再計算,這樣需要 的時間。那麼我們能不能想辦法減少計算時間呢?
先看一個例子,假設x和z都是n維的,
展開後,得
這個時候發現我們可以只計算原始特徵x和z內積的平方(時間復雜度是O(n)),就等價與計算映射後特徵的內積。也就是說我們不需要花 時間了。
現在看一下映射函數(n=3時),根據上面的公式,得到
也就是說核函數 只能在選擇這樣的 作為映射函數時才能夠等價於映射後特徵的內積。
再看一個核函數
對應的映射函數(n=3時)是
更一般地,核函數 對應的映射後特徵維度為 。(這個我一直沒有理解)。
由於計算的是內積,我們可以想到IR中的餘弦相似度,如果x和z向量夾角越小,那麼核函數值越大,反之,越小。因此,核函數值是 和 的相似度。
再看另外一個核函數
這時,如果x和z很相近( ),那麼核函數值為1,如果x和z相差很大( ),那麼核函數值約等於0。由於這個函數類似於高斯分布,因此稱為高斯核函數,也叫做徑向基函數(Radial Basis Function 簡稱RBF)。它能夠把原始特徵映射到無窮維。
既然高斯核函數能夠比較x和z的相似度,並映射到0到1,回想logistic回歸,sigmoid函數可以,因此還有sigmoid核函數等等。
下面有張圖說明在低維線性不可分時,映射到高維後就可分了,使用高斯核函數。
來自Eric Xing的slides
注意,使用核函數後,怎麼分類新來的樣本呢?線性的時候我們使用SVM學習出w和b,新來樣本x的話,我們使用 來判斷,如果值大於等於1,那麼是正類,小於等於是負類。在兩者之間,認為無法確定。如果使用了核函數後, 就變成了 ,是否先要找到 ,然後再預測?答案肯定不是了,找 很麻煩,回想我們之前說過的
只需將 替換成 ,然後值的判斷同上。
Ⅶ SVM演算法,包括演算法原理、演算法實現、核函數參數的選取、優化、系數調整,能通俗地說明下嗎謝謝
SVM 原理,在一個超空間找一個 切分的超平面,
SVM 演算法實現,主要是解決SVM公式對偶問題,常用的是SMO,
SVM 核參數,隱含的將特徵映射到高維空間,有興趣可學習 learn with kernel.
SVM 參數調整分兩部分,1 參數調整,用上述SMO演算法,2 模型選擇。
太累,不想寫太多
Ⅷ SVM中的對偶問題,KKT條件以及對拉格朗日乘子求值得SMO演算法
拉格朗日乘子法 拉格朗日乘子(Lagrange multiplier) 基本的拉格朗日乘子法(又稱為拉格朗日乘數法),就是求函數f(x1,x2,...)在g(x1,x2,...)=0的約束條件下的極值的方法。其主要思想是引入一個新的參數λ(即拉格朗日乘子),將約束條件函數與原
Ⅸ 如何用python實現smo演算法
在ml中常見的優化演算法基本都是: sgd 這種對每個單變數進行同步更新 als(交替最小二乘)/smo(序列最小優化)這種交替(固定一個單變數,優化另一個單變數)思路。如果你熟悉smo,那麼als就也可以理解了。 其它(希望更多的人補充)
Ⅹ 深度學習為什麼會出現局部最優問題
對於二次規劃的求解可採用SMO演算法。對於回歸問題,需要依靠不敏感損失函數。
SVM在解決小樣本、非線性及高維模式識別中表現出許多特有的優勢。
支持向量機方法是在機器學習理論指導下專門針對有限樣本設計的學習方法,不僅對於小樣本問題可以得到最優解,而且SVM模型具有很強的泛化能力。更
為突出的是SVM最終轉化為求解一個凸二次規劃問題,在理論上可以得到全局最優解,克服了一些傳統方法(如神經網路方法)可能陷入局部極值的不足。雖然
SVM與神經網路相比有明顯優勢,但在實際應用中還存在一些問題,比如對於大規模的數據集,由於SVM要解凸二次規劃而使演算法效率很低,甚至無法進
行;SVM對奇異值的穩健性不高;SVM的解不具有稀疏性,存在著大量冗餘支撐向量;其參數沒有好的選擇策略。