機器學習 SVM演算法(二) 支援向量機的實現

2021-08-20 03:35:39 字數 1185 閱讀 7787

前導:svm的推導:

本篇blog將介紹svm的實現。

//更新斷斷續續,有空就填坑,沒空就先留坑。

smo的引入

svm最後會轉化到乙個二次優化問題,這個東西可以使用牛頓法或梯度下降法之類的方法解決,但是當樣本數量較多的時候執行起來顯得較為低效。

所以2023年有人提出了一種專門用於解決svm的演算法,叫做序列最小最優化演算法,也就是smo演算法。

二次規劃問題

svm最終被我們轉化為了這樣乙個二次規劃問題

我們要最小化g(λ)=(σσλi*λj*yi*yj*(xi*xj))/2-σλi

其中有約束條件σλi*yi=0還有c>=λi>=0

smo演算法的簡單步驟

我們現列出smo的步驟,下面再進行推導

1、選取向量λ的兩個維度,記做λ1和λ2。

2、將λ1和λ2設為變數,其它設為常數,將原問題轉化為乙個雙變數最優化問題。

3、求解該雙變數最優化問題,並更新λ。

4、如果滿足收斂就跳出,不然重複1。

最優化函式

我們提取出兩個變數λ1和λ2,列出函式

w(λ1,λ2)=(k11*λ1^2)/2+(k22*λ2^2)/2+y1*y2*k12*λ1*λ2-(λ1+λ2)+y1*λ1*σyi*λi*k1i+y2*λ2*σyi*λi*k2i

其中λ1y1+λ2y2=-σλiyi0<=λi<=c i=1,2

λ1y1+λ2y2=-σλiyi是乙個雙變數方程,我們將λ1用λ2表示得到λ1=-y1*(λ2y2+σλiyi)

然後帶回w(λ1,λ2),可以得到乙個只含λ2的函式。

對於這個函式可以直接求極值,並得到對應的λ1和λ2,然後帶回更新λ。

經過一波推導可以得到

λ2『=λ2+y2*(e2-e1)/n

其中n=k11+k22-2*k12

ei=g(xi)-yi=(σaj*yj*k(xi,xj))-yi ei表示**值與真實值的差

//具體推導過程以後有空再回來寫吧

//留坑,之後填

機器學習總結6 支援向量機 SVM

1.july大神的支援向量機通俗導論 理解svm的三層境界 2.台灣大學 機器學習技法 第一講到第六講。台灣大學的 機器學習基石 和 機器學習技法 這兩門課真的值得用心去看看的。關於kkt條件,當對偶問題的解滿足kkt條件時,就可以說對偶問題的解和原始問題的解相同,同時都是最優解。問題來了,在對偶問...

機器學習(5) 支援向量機 SVM(一)

線性可區分 svm support vector machine 考慮如下分類問題 可以看到,黑色和白色的點分別為兩類,那麼可以在平面找一條線,將兩種點分割在直線的兩端,如圖的藍色和紅色的直線就是例子。這兩個直線對資料集表現的都很好,不像綠色的線甚至無法分清訓練資料的類別。那麼對於新來的資料,我們可...

機器學習筆記(二 支援向量機)

本次筆記基於mooc平台浙江大學的機器學習課程 對於乙個訓練樣本集,i 1 n,若存在 w,b 使得使得滿足下式,則是線性可分問題。要求這樣的乙個超平面 在二維平面中是一條直線 則要滿足以下公式 證明過程如下 首先要確認兩個事實,即 和 則可以根據線性可分問題的滿足式,用a來縮放 w,b 使得找到某...