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

2021-07-12 00:48:52 字數 2915 閱讀 4122

1.july大神的支援向量機通俗導論(理解svm的三層境界)

2.台灣大學《機器學習技法》,第一講到第六講。(台灣大學的《機器學習基石》和《機器學習技法》這兩門課真的值得用心去看看的。)

關於kkt條件,當對偶問題的解滿足kkt條件時,就可以說對偶問題的解和原始問題的解相同,同時都是最優解。問題來了,在對偶問題求解的過程中,是怎麼滿足kkt條件的?換句話說,為什麼對偶問題求出來的解是滿足kkt條件的?這個問題困擾了我好長好長時間。

kkt條件:

相信你如果看過svm,你會對這4個條件感到很熟悉。

回去翻一翻svm的講解文章,你會發現在對偶問題的求解中,只有第二個和第三個條件作為對偶問題的約束條件一直在伴隨左右,而第乙個和第四個條件在對偶問題的求解中一直都沒有出現。第乙個和第四個條件在對偶問題的求解中並沒有作為約束條件出現,那又怎麼保證對偶問題的解就一定會滿足這兩個條件呢?

先看對偶問題的式子:

先看括號裡面的最小化: mi

nb,w

1/2w

tw+∑

nn=1

an(1

−yn(

wtzn

+b))

,這裡只有an

>=

0 這乙個條件,沒有關於w和b的約束條件。

可以想一下這個最小化的結果裡,(1

−yn(

wtzn

+b))

一定要取

的盡量小

,這時候又因為沒有關於w和b的約束條件,所以不可能出現(1

−yn(

wtzn

+b))

大於0的情況。這個最小化的結果應該是:1/

2wtw

+∑nn

=1an

(−∞)

。然後再對這個結果求最大值,接著就要保證an

(1−y

n(wt

zn+b

))=0

才能求出最大值(0顯然是比負數要大的)。

總結一下:你就會發現kkt的第乙個和第四個條件隱藏在了最優化的過程中,即(1

−yn(

wtzn

+b))

<=

0 和an

(1−y

n(wt

zn+b

))=0

。這個只是大概的說明,並不算是嚴格的證明,甚至說明的都有點牽強了。非常歡迎有人能對這個問題提出自己的理解。

這個真的是乙個非常強大的工具,而且它也具有很強的啟發性和擴充套件性。

核技巧的重點就是核函式,通過核函式,可以在樣本的原始特徵空間中直接計算樣本對映到高維特徵空間後之間的內積。

關於核技巧: 《機器學習技法》做了詳細的說明。

我覺得對核技巧的理解可以有兩種:

1. 我們可以把它理解成一種特徵空間的對映,從低維特徵空間對映到高維特徵空間。

2. 我更喜歡把它理解成是重構樣本的過程。

這兩種理解並不矛盾,只是角度不同。

我說一下第二點:

這種理解的最關鍵一點就是:明確內積可以一定程度表示相似度。

!!!兩個向量的內積可以在一定程度上去衡量這兩個向量的相似度。仔細想想是不是有點道理。

現在每乙個樣本看成乙個向量,我們可以從所有樣本中均勻的選取一些關鍵樣本,然後用每個樣本和這些關鍵樣本的內積去重新表示這個樣本。

舉個例子:

現在有10個樣本x1,。。。。x10

我從這10個樣本中,選出了3個關鍵樣本,x2,x5,x9

這個時候樣本x1就可以表示成 ( (x1,x2), (x1,x5), (x1,x9) )這樣乙個三維向量了,這個時候x1的特徵就變成了3維的了。這個時候的樣本的特徵個數就是由你選擇的關鍵點的個數決定的了。

同樣x2可以表示成( (x2,x2), (x2,x5), (x2,x9) )這樣乙個三維向量。這就是通過樣本之間的相似性去重構樣本的特徵空間。

而核函式實際上就是計算樣本直接的內積的。所以我們就可以通過核函式對樣本空間進行重構。同樣是假設現在有10個樣本x1,。。。。x10

我從這10個樣本中,選出了3個關鍵樣本,x2,x5,x9

這個時候樣本x1就可以表示成 ( k(x1,x2), k(x1,x5), k(x1,x9) )這樣乙個三維向量了,這個時候x1的特徵就變成了3維的了。

同樣x2可以表示成( k(x2,x2), k(x2,x5), k(x2,x9) )這樣乙個三維向量。

我看到過很多篇用這種方法對特徵空間進行重構的**,而且我也在自己的**中用到了這種技巧。通過kmeans演算法選取關鍵點,然後通過核函式重構樣本空間。

這種技巧真正強大的地方是在,假設你現在有個線性回歸的實現**,你不需要對線性回歸的**做任何更改,只需要通過高斯核函式對樣本的特徵空間進行重構,就可以實現在無窮維的特徵空間中學習回歸模型。對最原始的樣本來說,現在所學習到的模型就不是線性模型了。

(平時如果我們想做乙個二次回歸,大部分時候都是對樣本先做二次變換,然後再跑一遍線性回歸,所做出來的模型就是二次回歸模型了)

!!始終明確一點:核函式計算的是兩個向量的內積,內積可以一定程度表示相似度。

!!始終明確一點:核函式計算的是兩個向量的內積,內積可以一定程度表示相似度。

!!始終明確一點:核函式計算的是兩個向量的內積,內積可以一定程度表示相似度。

這樣就是說在你所優化的式子中並沒有出現向量內積的時候,你也可以把核技巧加入進去。(因為w始終可以表示成樣本的線性組合)

很難把這種理解講的非常清楚,你可以帶著這種理解去看一下《機器學習技法》。特別是如果你正在為**發愁,你非常有必要去看一下,看能不能尋找到一些啟發。

慣例,先挖坑,有空再仔細改。

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

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

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

前導 svm的推導 本篇blog將介紹svm的實現。更新斷斷續續,有空就填坑,沒空就先留坑。smo的引入 svm最後會轉化到乙個二次優化問題,這個東西可以使用牛頓法或梯度下降法之類的方法解決,但是當樣本數量較多的時候執行起來顯得較為低效。所以1998年有人提出了一種專門用於解決svm的演算法,叫做序...

02 37 支援向量機總結

目錄更新 更全的 機器學習 的更新 更有python go 資料結構與演算法 爬蟲 人工智慧教學等著你 支援向量機中有線性可分支援向量機 線性支援向量機 非線性支援向量機 線性支援回歸等演算法,算是前期比較繁瑣的乙個內容,如果感覺自己還是對間隔最大化 支援向量等知識點不太了解的,可以對著簡單的感知機...