1. 程式人生 > >機器學習之深入理解SVM

機器學習之深入理解SVM

在瀏覽本篇部落格之前,最好先檢視一下我寫的另一篇文章機器學習之初識SVM(點選可查閱哦),這樣可以更好地為了結以下內容做鋪墊!

支援向量機學習方法包括構建由簡至繁的模型:線性可分支援向量機、線性支援向量機及非線性支援向量機。當訓練資料線性可分時,通過硬間隔最大化,學習一個線性的分類器,即線性可分支援向量機,又稱為硬間隔支援向量機;當訓練資料近似線性可分時,通過軟間隔最大化,也學習一個線性的分類器,即線性支援向量機,又稱為軟間隔支援向量機;當訓練資料線性不可分時,通過使用核技巧及軟間隔最大化,學習非線性支援向量機。

給定訓練樣本集D=(x1,y1),(x2,y2),.....

.(xm,ym),y1,+1,分類學習最基本的想法就是基於訓練集D在樣本空間中找到一個超平面,將不同類別的樣本分開。但是正如下圖所示,能將訓練樣本分開的超平面可能有很多,那我們應該選擇哪一個呢?

直觀上看,我們應該去找位於兩類訓練樣本“正中間”的超平面,也就是樣本點與直線的距離最大那條直線。因為該超平面對訓練樣本區域性擾動的容忍性最好。

這裡寫圖片描述

在樣本空間中,超平面可用如下方程來描述:

wTx+b=0,

其中w=(w1,w2,...wd)為法向量,決定了超平面的方向;b為位移項,是超平面與遠點之間的距離。顯然超平面可由法向量w和位移b唯一確定。

一般來說,一個點距離超平面的距離d的大小可以表示分類預測的確信程度。在超平面w

Tx+b=0確定的情況下,

d=|wTx+b|||w||

其中,||w||為w的範數。

當點A表示某一例項xi,其類標記為yi=+1。點A與超平面的距離記作di,那麼

di=wTxi+b||w||

當點A表示某一例項xi,其類標記為yi=1。點A與超平面的距離記作di,那麼

di=wTxi+b||w||

一般地,點xi與超平面的距離是

di=yiwTxi+b||w||

公式(4)也被稱為超平面關於樣本點xi的幾何間隔。

最大間隔分離超平面

這裡寫圖片描述

如上圖所示,距離超平面最近的這幾個訓練樣本點被稱為支援向量,兩個異類支援向量(即分別位於超平面兩側的點)到超平面的距離之和為

d=2||w||
上面(5)的d稱為間隔(margin)。

要求得最大間隔(即最大化2w),就是要滿足:

這裡寫圖片描述

顯然,為了最大化間隔,僅需最大化||w||1,這等價於最小化||w||2,於是上式可以重寫為:

這裡寫圖片描述

這就是支援向量機的基本模型。

因為現在的目標函式是二次的,約束條件是線性的,所以它是一個凸二次規劃問題。這個問題可以用現成的QP (Quadratic Programming) 優化包進行求解。一言以蔽之:在一定的約束條件下,目標最優,損失最小。

此外,由於這個問題的特殊結構,還可以通過拉格朗日對偶性(Lagrange Duality)變換到對偶變數 (dual variable) 的優化問題,即通過求解與原問題等價的對偶問題(dual problem)得到原始問題的最優解,這就是線性可分條件下支援向量機的對偶演算法,這樣做的優點在於:一者對偶問題往往更容易求解;二者可以自然的引入核函式,進而推廣到非線性分類問題。

那什麼是拉格朗日對偶性呢?簡單來講,通過給每一個約束條件加上一個拉格朗日乘子(Lagrange multiplier),定義拉格朗日函式(通過拉格朗日函式將約束條件融合到目標函式裡去,從而只用一個函式表示式便能清楚的表達出我們的問題):

這裡寫圖片描述

然後令

這裡寫圖片描述

容易驗證,當某個約束條件不滿足時,例如yi(wTxi+b)<1,那麼顯然有θ(w)=(只要令αi=即可)。而當所有約束條件都滿足時,則最優值為θ(w)=12||w||2,亦即最初要最小化的量。

因此,在要求約束條件得到滿足的情況下最小化

相關推薦

機器學習深入理解SVM

在瀏覽本篇部落格之前,最好先檢視一下我寫的另一篇文章機器學習之初識SVM(點選可查閱哦),這樣可以更好地為了結以下內容做鋪墊! 支援向量機學習方法包括構建由簡至繁的模型:線性可分支援向量機、線性支援向量機及非線性支援向量機。當訓練資料線性可分時,通過

機器學習深入理解神經網路理論基礎、BP演算法及其Python實現

  人工神經網路(Artificial Neural Networks,ANN)系統是 20 世紀 40 年代後出現的。它是由眾多的神經元可調的連線權值連線而成,具有大規模並行處理、分散式信 息儲存、良

機器學習用Hog+Svm人臉檢測、交通標誌和字元識別等(初學者)

首先宣告,這裡主要用svm進行一個簡單的二分類,最後得到結果,我們把正樣本設為1,負樣本設為0。 這裡只是一個簡單的介紹,後面會有相關詳細介紹的連結,個人認為比較好的,對我們比較有幫助的連結,有興趣的可以去看看。當然,本文對初學者有點幫助,也特別歡迎大神來拍!

C++學習深入理解虛擬函式--虛擬函式表解析

前言 C++中的虛擬函式的作用主要是實現了多型的機制。關於多型,簡而言之就是用父類型別的指標指向其子類的例項,然後通過父類的指標呼叫實際子類的成員函式。這種技術可以讓父類的指標有“多種形態”,這是一種泛型技術。所謂泛型技術,說白了就是試圖使用不變的程式碼來實現可變的演算

機器學習深入理解 LSTM 網路 (一)

Recurrent Neural Network Long Short Term Memory Networks (LSTMs) 最近獲得越來越多的關注,與傳統的前向神經網路 (feedforward network)不同,LSTM 可以對之前的輸入有選擇的記

整理OD學習深入理解訊息迴圈

今天我們一起深入探討下帶有對話方塊的訊息迴圈。先看下圖:今天我們就來研究這個圖!! 為了方便研究,我就選用看雪例項裡的一個程式。從圖上你可以看出一個主視窗,還有一個訊息框。為了程式介面的簡單,還請暫時把你看到的這個訊息框當成對話方塊。這樣一來你所看到的2個元素分別就是:主

機器學習旅:支援向量機通俗導論(理解SVM的三層境界)

 支援向量機通俗導論(理解SVM的三層境界)作者:July、pluskid ;致謝:白石、JerryLead出處:結構之法演算法之道blog。前言    動筆寫這個支援向量機(support vector machine)是費了不少勁和困難的,原因很簡單,一者這個東西本身就並

機器學習 SVM VC維度、樣本數目與經驗風險最小化的關系

能力 pan dsm 過擬合 引入 div 不但 機器 con VC維在有限的訓練樣本情況下,當樣本數 n 固定時。此時學習機器的 VC 維越高學習機器的復雜性越高。VC 維反映了函數集的學習能力,VC 維越大則學習機器越復雜(容量越大)。

機器學習SVM初解與淺析(一):最大距離

機器學習 svm 最大距離 2 / ||w|| 這段時間在看周誌華大佬的《機器學習》,在看書的過程中,有時候會搜搜其他人寫的文章,對比來講,周教授講的內容還是比較深刻的,但是前幾天看到SVM這一章的時候,感覺甚是晦澀啊,第一感覺就是比較抽象,特別是對於像本人這種I

機器學習SVM初解與淺析(一):

機器學習 svm 最大距離 2 / ||w||sdsshngshan‘gccha 這段時間在看周誌華大佬的《機器學習》,在看書的過程中,有時候會搜搜其他人寫的文章,對比來講,周教授講的內容還是比較深刻的,但是前幾天看到SVM這一章的時候,感覺甚是晦澀啊,第一感覺就

機器學習支持向量機(三):核函數和KKT條件的理解

麻煩 ron 現在 調整 所有 核函數 多項式 err ges 註:關於支持向量機系列文章是借鑒大神的神作,加以自己的理解寫成的;若對原作者有損請告知,我會及時處理。轉載請標明來源。 序: 我在支持向量機系列中主要講支持向量機的公式推導,第一部分講到推出拉格朗日對偶函數的對

機器學習SVM

人工 lane 三維 分享 局限 優化問題 道理 原理 AS 一、線性分類器: 首先給出一個非常非常簡單的分類問題(線性可分),我們要用一條直線,將下圖中黑色的點和白色的點分開,很顯然,圖上的這條直線就是我們要求的直線之一(可以有無數條這樣的直線)

菜鳥路——機器學習HierarchicalClustering層次分析及個人理解

features clu 機器 層次 節點類 均值 成了 range n) 這個算法。我個人感覺有點雞肋。最終的表達也不是特別清楚。 原理很簡單,從所有的樣本中選取Euclidean distance最近的兩個樣本,歸為一類,取其平均值組成一個新樣本,總樣本數少1;不斷的重

[四]機器學習支援向量機SVM

4.1 實驗資料 本資料集來源於UCI的Adult資料集,並對其進行處理得到的。資料集下載地址:http://archive.ics.uci.edu/ml/datasets/Adult。本實驗使用LIBSVM包對該資料進行分類。 原始資料集每條資料有14個特徵,分別為age,workc

深入瞭解機器學習降低損失:迭代方法

迭代學習可能會讓您想到“Hot and Cold”這種尋找隱藏物品(如頂針)的兒童遊戲。在我們的遊戲中,“隱藏的物品”就是最佳模型。剛開始,您會胡亂猜測(“w1 的值為 0。”),等待系統告訴您損失是多少。然後,您再嘗試另一種猜測(“ 的值為 0.5。”),看看損失是多少。哎呀,這次更接

深入瞭解機器學習降低損失 (Reducing Loss):梯度下降法

迭代方法圖(圖 1)包含一個標題為“計算引數更新”的華而不實的綠框。現在,我們將用更實質的方法代替這種華而不實的演算法。 假設我們有時間和計算資源來計算 的所有可能值的損失。對於我們一直在研究的迴歸問題,所產生的損失與 的圖形始終是凸形。換言之,圖形始終是碗狀圖,如下所示: 圖 2

讀書筆記深入理解Java虛擬機器

深入理解Java虛擬機器 2.2 執行時資料區域 2.2.1.程式計數器 可以看做是當前執行緒所執行的位元組碼的 行號指示器。 每個執行緒都需要一個 獨立的程式計數器。(這類記憶體區域為"執行緒私有"的記憶體

機器學習SVM詳解

支援向量機簡介 支援向量機(SVM)是一種有監督的機器學習演算法,既可以用於分類,也可以用於迴歸。然而,它主要用於分類問題。在這個演算法中,我們將每個資料項繪製為n維空間中的一個點(其中n是您擁有的特徵數),每個特徵的值是特定座標的值。然後,我們通過找到區分這兩個類的超平面來執行分類(請看下

深入瞭解機器學習降低損失 (Reducing Loss):學習速率

梯度向量具有方向和大小。梯度下降法演算法用梯度乘以一個稱為學習速率(有時也稱為步長)的標量,以確定下一個點的位置。例如,如果梯度大小為 2.5,學習速率為 0.01,則梯度下降法演算法會選擇距離前一個點

深入瞭解機器學習使用 TensorFlow 的起始步驟 (First Steps with TensorFlow):工具包

下圖顯示了 TensorFlow 工具包的當前層次結構: 圖 1. TensorFlow 工具包層次結構。 下表總結了不同層的用途: TensorFlow 由以下兩個元件組成: 圖協議緩衝區 執行(分散式)圖的執行時 這兩個元件類似於 Java 編譯器和