機器學習 深入SVM原理及模型推導(一)

2022-01-10 22:31:03 字數 2700 閱讀 9092

svm模型大家可能非常熟悉,可能都知道它是面試的常客,經常被問到。它最早誕生於上世紀六十年代。那時候雖然沒有機器學習的概念,也沒有這麼強的計算能力,但是相關的模型和理論已經提出了不少,svm就是其中之一。

svm完全可以說是通過數學推導出來的模型,由於當時還沒有計算機,所以模型當中的引數都是數學家們用手來算的。它有乙個巨大的應用就是前蘇聯的計畫經濟體系,我們知道在計畫經濟當中,國家有多少社會資源,每樣商品需要生產多少都是國家統籌規劃的。

但是國家和社會不是一成不變的,去年消耗了多少糧食不意味著今年也會消耗這麼多,很多因素會影響。所以當時前蘇聯的科學家們用當時最先進的方法來計算引數**各項商品的消耗來完成社會資源的排程,這個最先進的方法就是svm。

廢話說了這麼多,下面我們就來看看這個模型實際的原理吧。

svm的英文全稱是support vector machine,翻譯過來的意思是支援向量機。無論是英文還是中文,我們直觀上有些難以理解。

難以理解沒有關係,我們先把支援向量這個概念放一放,先來介紹一下它整體的原理。

svm最基本的原理就是尋找乙個分隔「平面」將樣本空間一分為二,完成二分類。進一步我們可以知道,對於二維的平面,我們要分隔資料需要一條線。對於三維的空間我們要分開需要乙個面,發散開去對於乙個n維的空間,我們要將它分開需要乙個n-1的超平面。

svm尋找的就是這樣的超平面,為了方便理解,我們以最簡單的二維場景為例。

我們觀察一下上圖,很明顯圖中的資料可以分成兩個部分。對於上圖的資料而言理論上來說我們有無數種劃分的方法,我們既可以像左邊這樣隨意的劃分,也可以像右邊這樣看起來嚴謹許多的劃分,在這麼多劃分方法當中究竟哪一種是最好的呢?我們怎麼來定義劃分方法的好和壞呢?

svm對這個問題的回答很乾脆,右圖的劃分是最好的,原因是它的間隔最大

從圖中我們可以看到,間隔也就是被劃分成兩個部分之間最接近的距離,間隔正中的這條紅線就是svm找到的用來劃分的超平面。

我們進一步觀察可以發現,對於間隔這個事情來說,絕大多數樣本都不起作用,能夠起作用的只有在落在虛線上也就是間隔邊緣的樣本。是這些樣本確定了間隔,從而間接確定了分隔平面,支撐起了模型。

所以svm當中把這些落在邊緣上的樣本成為支援向量,這也是svm得名的由來。

我們首先來考慮最簡單的情況,即線性可分,也就是說所有樣本都可以被正確的劃分。這樣劃分出來得到的間隔是實實在在的,所以我們把線性可分的情況下的間隔稱為硬間隔

首先我們先寫出這個分隔平面的公式:

\[\omega^tx+b = 0

\]其中x表示一條n維的樣本特徵組成的向量,\(\omega\)是平面的n維法向量,決定平面的方向。雖然從公式上來看和線性回歸很像,但是它們之間的本質區別是線性回歸是用來擬合label的,而svm的平面方程是用來確定平面方向的。這裡的b就是簡單的偏移量,表示平面距離原點的距離。

表示出來分隔平面之後,我們就可以表示出每乙個樣本距離平面的距離:

\[\gamma = \frac

\]這個公式看起來好像不太明白,其實它是由二維的點到平面的距離公式演化得到的:\(d = \frac\)

這裡的\(||\omega||\)是乙個l2範數,我們把它也展開可以寫成:\(||\omega|| = \sqrt^k \omega_i^2}\)

這裡我們做一點假設,對於樣本當中的點,在分隔平面上方的類別為1,在分隔平面下方的類別為-1。那麼我們可以進一步得到\(\omega x_i +b\)應該和\(y_i\)同號。所以我們可以寫成:\(y(\omega^t x + b) > 0\)。

我們來觀察支援向量,也就是剛好在間隔邊緣的點,它們到分割平面的距離剛好是間隔的一半。我們假設這個點的函式值是\(\gamma\),我們把它表示出來可以得到:

\[\begin

y_i(\omega^t x_i + b)&=\gamma\\

y_i(\fracx_i + \frac) &= 1

\end

\]我們令新的\(\hat = \frac\),新的\(\hat= \frac\)。也就是說我們通過變形可以將函式值縮放到1,為了方便計算,我們選取恰當的引數,使得間隔剛好為1。既然如此,對於所有的樣本點,我們都可以得到\(y_i(\omega^tx_i + b) \ge 1\),對於支援向量來說\(y_i(\omega^tx_i + b)\)=1。

利用這點,我們可以表示出間隔:

\[\gamma = 2\frac = \frac

\]接下來我們要做的就是在滿足約束的前提下找到使得\(\frac||\omega||^2\)最小的\(\omega\),這個式子看起來非常麻煩,又有不等式摻和在裡面,那麼我們應該怎麼辦呢?

機器學習模型 SVM

liblinear libsvm 台灣的 線性可分的svm max s.t.yi wxi b w i 1,2 n代入 w 於是得到 max w s.t.yi w xi b i 1,2 n 其中 是幾何距離,是函式距離。的取值對上述優化問題沒有影響,因為如果 按比例增加,那麼目標函式和約束中的w 和 ...

機器學習 Adaboost演算法流程及原理推導

adaboost演算法是一種迭代演算法。其用法是將對於訓練同一訓練集的多個弱分類器集合,成為乙個強分類器。adaboost演算法實現步驟如下 輸入 其中xi x,yi 初始化d1 i 1n,i 1,2.n for t 1,2 t adaboost演算法原理 從最後的計算公式,可以理解為adaboos...

機器學習模型 如何口述機器學習模型原理

重磅乾貨,第一時間送達 有時碰到跟別人聊起模型的熟悉時,不免要闡述下模型的原理,但一般口頭交流都比較難,因為腦海裡面都是一些公式,似乎從功利角度有必要把模型原理用文字表達一遍,所以自己整理了下機器學習的部分,有遺漏或者不對的地方也請多多指教 線性回歸 首先我們會定乙個函式假定y和x的關係,如y wx...