SVM | 支持向量機原理講解(一)

2021-02-12 磐創AI


翻譯 | Ray

編輯 | 安可

介紹

支持向量機(Support Vector Machine,以下簡稱SVM),作為傳統機器學習的一個非常重要的分類算法,它是一種通用的前饋網絡類型,最早是由Vladimir N.Vapnik 和 Alexey Ya.Chervonenkis在1963年提出,目前的版本(soft margin)是Corinna Cortes 和 Vapnik在1993年提出,1995年發表。深度學習(2012)出現之前,如果不考慮集成學習的算法,不考慮特定的訓練數據集,在分類算法中的表現SVM說是排第一估計是沒有什麼異議的。

 SVM本來是一種線性分類和非線性分類都支持的二元分類算法,但經過演變,現在也支持多分類問題,也能應用到了回歸問題。本篇文章重點講解線性支持向量機的模型原理和目標函數優化原理。

目錄

一、感知機模型


在講解SVM模型之前,我們可以先簡單了解感知機模型的原理,因為這兩個模型有一些相同的地方。在二維平面中,感知機模型是去找到一條直線,儘可能地將兩個不同類別的樣本點分開。同理,在三維甚至更高維空間中,就是要去找到一個超平面。定義這個超平面為wTx+b=0(在二維平面中,就相當於直線w_1*x+w_1*y+b=0),而在超平面上方的點,定義為y=1,在超平面下方的點,定義為y=-1。而這樣的超平面可能是不唯一的,那麼感知機是怎麼定期最優超平面呢?從感知機模型的目標函數中,我們了解到它是希望讓所有誤分類的點(定義為M)到超平面的距離和最小。其目標函數如下:

(註:加入y_i是因為點若在超平面下,w*x_i+b為負數,需要乘上對應的y)

當w和b成比例增加了之後,比如都擴大N倍,會發現,分子和分母都會同時擴大N倍,這對目標函數並不影響。因此,當我們將W擴大或縮小一定倍數使得,||w||=1,分子也會相應的擴大或縮小,這樣,目標函數就能簡化成以下形式:

這個思想將會應用到支持向量機的目標函數優化上,後文將會詳細講解。

二、理解線性支持向量機

2.1線性支持向量機思想

正如上文所說,線性支持向量機的思想跟感知機的思想很相似。其思想也是對給定的訓練樣本,找到一個超平面去儘可能的分隔更多正反例。不同的是其選擇最優的超平面是基於正反例離這個超平面儘可能遠。

線性支持向量機模型

從上圖可以發現,其實只要我們能保證距離超平面最近的那些點離超平面儘可能遠,就能保證所有的正反例離這個超平面儘可能的遠。因此,我們定義這些距離超平面最近的點為支持向量(如上圖中虛線所穿過的點)。並且定義正負支持向量的距離為Margin。


2.2函數間隔和幾何間隔

對SVM思想有一定理解之後,設超平面為wTx+b=0。我們講解一下函數間隔和幾何間隔的區別。

給定一個樣本x,|wTx+b|表示點x到超平面的距離。通過觀察wTx+b和y是否同號,我們判斷分類是否正確。所以函數間隔定義γ』為:

而函數間隔不能正常反應點到超平面的距離,因為當我們等比例擴大w和b的時候,函數間隔也會擴大相應的倍數。因此,我們引入幾何間隔。

幾何間隔就是在函數間隔的基礎下,在分母上對w加上約束(這個約束有點像歸一化),定義為γ:

其實參考點到直線的距離,我們可以發現幾何間隔就是高維空間中點到超平面的距離,才能真正反映點到超平面的距離。

2.3 SVM目標函數及優化

根據SVM的思想,我們可以知道是要取最大化支持向量到超平面的幾何間隔,所以目標函數可以表示為:

在感知機模型最後,我們知道當同時擴大w和b,分子分母都會同樣擴大,對目標函數不影響,所以在這裡我們將分子(支持向量到超平面的函數間隔)擴大或壓縮等於1,則目標函數可以轉化為:

但是上式並不是凸函數,不好求解,再進一步轉化為:

上式就是一個凸函數,並且不等式約束為仿射函數,因此可以使用拉格朗日對偶去求解該問題。

根據拉格朗日乘子法,引入拉格朗日乘子α,且α≥0我們可以知道,先不考慮min,(2)問題等價於:

然後再考慮min,則有:

應用拉格朗日對偶性,通過求解對偶問題得到最優解,則對偶問題的目標函數為:

這就是線性可分條件下支持向量機的對偶算法。這樣做的優點在於:

一是原問題的對偶問題往往更容易求解;

二者可以自然的引入核函數,進而推廣到非線性分類問題。

 

從(4)中,我們可以先求目標函數對於w和b的極小值,再求拉格朗日乘子α的極大值。首先,分別對w和b分別求偏導數,並令為0:

將(5)和(6)代入(4)得到:

對(7)取反得到:

只要我們可以求出(8)中極小化的α向量,那麼我們就可以對應的得到w和b,而求解α需要使用SMO算法,由於該算法比較複雜,我們將在下一篇文章專門講解。假設我們現在已經使用SMO算法得到了最優的α值,記為α_*。

再求b:

對於任一樣本(x_s, y_s)有:

注意到任一樣本都有y_s^2=1,則將右式的1用y_s^2代:

將(9)代入上式,可以得到:

這樣,我們就能夠求解得到線性支持向量機的目標函數的各個參數,進而得到最優的超平面,將正負樣本分隔開。但是在上文中我們沒有講解求α向量的SMO算法,在下篇文章,將會詳細講解SMO算法,歡迎繼續關注。

【磐創粉絲福利】加磐小仙好友(微信號:cellerai)並發送關鍵字「python基礎」即可 0元學習七月在線精品課程《Python基礎課程升級版》

你也許還想

  ● 領域綜述 | 知識圖譜概論(一)

  ● DL|CNN可視化研究綜述(一)

  ● 選機器學習課程怕踩雷?有人幫你選出了top 5優質課

歡迎掃碼關注:

覺得贊你就點在看,多謝大佬

相關焦點

  • 支持向量機(SVM)原理剖析
    這顯示出支持向量機的一個重要性質:「訓練完成後,大部分的訓練樣本都不需要保留,最終模型僅與支持向量有關」。對於輸入空間中的非線性分類問題,可以通過非線性變換將它轉化為某個維特徵空間中的線性分類問題,在高維特徵空間中學習線性支持向量機。
  • 支持向量機SVM原理(參數解讀和python腳本)
    這是線性支持向量機,LSVM非線性SVM可以轉換為多維空間支持向量機支持向量缺點:1.如果數據特徵(維度)大於樣本量,支持向量機表現很差2.支持向量機不提供概率區間估計支持向量機,在sklearn裡面,有兩種,SVC支持向量分類,用於分類問題,SVR,支持向量回歸,用於回歸問題。
  • 關於支持向量機(SVM)的原理,你了解多少?(萬字長文 速收)
    可以參閱《支持向量機導論》一書,此書精簡而有趣。本節完。 讀者評論   本文發表後,微博上的很多朋友給了不少意見,以下是節選的一些精彩評論: 1.「壓力」陡增的評論→//@藏了個鋒:我是看著July大神的博文長大的啊//@zlkysl:就是看了最後那一篇才決定自己的研究方向為SVM的。
  • 支持向量機(SVM)算法總結
    但很多算法工程師以外的人對這一算法了解不多。今天我們就聊一聊支持向量機算法。要理解svm我們需要先理解什麼是間隔最大化,首先從簡單的線性二分類開始開始說起。要想對不用的樣本空間分開來,如下如所示,需要找出一條線將不同分類的樣本隔離開。
  • 支持向量機SVM來預測晶片未知信息
    本文是用支持向量機SVM的方法去預測未知樣本的信息。
  • 經典算法解讀:一文看懂支持向量機以及推導
    還有一個更加強大的算法廣泛的應用於工業界和學術界,它被稱為支持向量機(Support Vector Machine)。與邏輯回歸和神經網絡相比,支持向量機,或者簡稱SVM,在學習複雜的非線性方程時提供了一種更為清晰,更加強大的方式。因此,在接下來的視頻中,我會探討這一算法。在稍後的課程中,我也會對監督學習算法進行簡要的總結。
  • 機器學習算法筆記-SVM支持向量機簡介及JAVA小實現
    前言最近開始學習一些機器學習裡的主要算法,SVM支持向量機是我目前產品裡用到的核心算法,想在這裡把我學到的一些東西記錄下來。
  • 如何學習SVM(支持向量機)以及改進實現SVM算法程序?
    MLNLP」,選擇「星標」公眾號重磅乾貨,第一時間送達編輯:憶臻https://www.zhihu.com/question/31211585/answer/640501555本文僅作為學術分享,如果侵權,會刪文處理如何學習SVM(支持向量機
  • 支持向量機(SVM)說明及示例
    支持向量機(SVM)可以解決支持分類和回歸問題,這兩個問題的解決都是通過構造函數h來實現的,該函數將輸入向量x與輸出y進行匹配:y = h(x )優缺點優點:該算法可以基於內核對線性和非線性問題的極限進行建模。它對於「過擬合」也非常可行,尤其是在大空間中。
  • 機器學習算法入門之「支持向量機」
    本文要介紹的支持向量機,也是在分類問題中被廣泛應用的一種算法,先來看一下它的定義。在機器學習領域,支持向量機(Support Vector Machine,簡稱SVM)屬於一種監督學習算法,可以用來解決分類和回歸問題,其中,在分類問題中的應用更加廣泛。
  • 機器學習測試筆記(13)——支持向量機
    2 支持向量機原理支持向量機(Support Vector Machine,以下簡稱SVM),作為傳統機器學習的一個非常重要的分類算法,它是一種通用的前饋網絡類型,最早是由Vladimir支持向量機通過某非線性變換 φ( x) ,將輸入空間映射到高維特徵空間。特徵空間的維數可能非常高。如果支持向量機的求解只用到內積運算,而在低維輸入空間又存在某個函數 K(x, x') ,它恰好等於在高維空間中這個內積,即K( x, x') =<φ( x) ⋅φ( x') > 。
  • 【典型算法】SVM算法
    小編認為,精通機器學習一些典型的算法,包括算法的原理、算法的演變、算法的優劣、算法的應用等。從今日起,【R語言】公眾號會陸續推出機器學習典型算法一系列文章。這些文章的來源,要麼是轉載,要麼是翻譯,要麼是投稿,要麼是眾包等。從多個途徑,多個維度,利用R語言來理解和實現機器學習中典型算法。歡迎夥伴們參與進來,你可以分享你所認為的機器學習典型算法是什麼?
  • 機器學習實戰 | 支持向量機·sklearn 參數詳解
    接上篇的內容「一文帶你了解什麼是支持向量機」,相信大家已經對 SVM 已有些了解,關於 SVM 的公式推導可參考李航《統計學習方法
  • sklearn學習(五):支持向量機原理實現及簡單參數優化(附代碼)
    我們可以看到上圖中的三條線全都將數據點完全分開了,但哪一條線最好呢,我們再來看下面這張圖支持向量機的核心在於他的優化目標,其通俗解釋為找到一條線,使得離最近的點的距離能夠最遠。現在回到我們的距離公式。
  • 從零推導支持向量機 (SVM) | 雷鋒網
    儘管現在深度學習十分流行,了解支持向量機的原理,對想法的形式化、簡化,及一步步使模型更一般化的過程,及其具體實現仍然有其研究價值。另一方面,支持向量機仍有其一席之地。相比深度神經網絡,支持向量機特別擅長於特徵維數多於樣本數的情況,而小樣本學習至今仍是深度學習的一大難題。1.
  • 機器學習的分類算法之SVM(支持向量機)
    引言SVM(Support Vector Machine,支持向量機)是機器學習中的有監督線性分類算法
  • 【機器學習基礎】數學推導+純Python實現機器學習算法8-9:線性可分支持向量機和線性支持向量機
    為了處理非線性的情況,在感知機模型的基礎上有了兩個方向,一個就是上一講說到的神經網絡,大家也看到了,現在深度學習大放異彩,各種網絡功能強大。但實際上在神經網絡興起之前,基於感知機的另一種模型——支持向量機,同樣可以解決非線性問題。     支持向量機一般來說有三種任務類型:線性可分情況,近似線性可分情況以及線性不可分情況。
  • 一文讀懂支持向量機SVM(附實現代碼、公式)
    *label)'*data;%記錄支持向量位置index_sup = find(alphas ~= 0);%計算預測結果predict = (alphas.*label)'*data;%記錄支持向量位置index_sup = find(alphas ~= 0);%計算預測結果predict = (alphas.
  • 動手寫機器學習算法:SVM支持向量機(附代碼)
    ,其中:線性可分的,指定核函數為linear:'''data1——線性分類'''data1 = spio.loadmat('data1.mat')X = data1['X']y = data1['y']y = np.ravel(y)plot_data(X,y)model = svm.SVC
  • 一文掌握sklearn中的支持向量機
    前面兩節已經介紹了線性SVC與非線性SVC的分類原理。本節將在理論的基礎上,簡單介紹下sklearn中的支持向量機是如何實現數據分類的。並參照理論中的概念對應介紹重要參數的含義,以及如何調節參數,使得模型在數據集中得到更高的分數。