1. 程式人生 > >SVM演算法原理

SVM演算法原理

簡介 支援向量機(support vector machines)是一個二分類的分類模型(或者叫做分類器)。如圖:
它分類的思想是,給定給一個包含正例和反例的樣本集合,svm的目的是尋找一個超平面來對樣本根據正例和反例進行分割。 各種資料對它評價甚高,說“ 它在解決小樣本、非線性及高維模式識別中表現出許多特有的優勢,並能夠推廣應用到函式擬合等其他機器學習問題中 SVM之線性分類器 如果一個線性函式能夠將樣本完全正確的分開,就稱這些資料是線性可分的,否則稱為非線性可分的。 什麼叫線性函式呢?在一維空間裡就是一個點,在二維空間裡就是一條直線,三維空間裡就是一個平面,以此類推。 如果不關注空間的維數,這種線性函式就是前言中所說的那個統一的名稱——超平面(Hyper Plane)!
在樣本空間中,劃分超平面可通過如下線性方程來描述:
假設它已經完成了對樣本的分隔,且兩種樣本的標籤分別是{+1,-1},那麼對於一個分類器來說,g(x)>0和個g(x)<0就可以分別代表兩個不同的類別,+1和-1。 但光是分開是不夠的,SVM的核心思想是盡最大努力使分開的兩個類別有最大間隔,這樣才使得分隔具有更高的可信度。而且對於未知的新樣本才有很好的分類預測能力(在機器學習中叫泛化能力) 那麼怎麼描述這個間隔,並且讓它最大呢?SVM的辦法是:讓離分隔面最近的資料點具有最大的距離。 為了描述離分隔超平面最近的資料點,需要找到兩個和這個超平面平行和距離相等的超平面: H1: y = 
wT+ b=+1 和 H2: y = wT+ b=-1
如圖所示:
在這兩個超平面上的樣本點也就是理論上離分隔超平面最近的點,是它們的存在決定了H1和H2的位置,支撐起了分界線,它們就是所謂的支援向量,這就是支援向量機的由來 有了這兩個超平面就可以順理成章的定義上面提到的間隔(margin)了 二維情況下 ax+by=c1和ax+by=c兩條平行線的距離公式為:
可以推出H1和H2兩個超平面的間隔為2/||w||,即現在的目的是要最大化這個間隔。 所以support vector machine又叫Maximum margin hyper plane classifier 等價於最小化||w||
為了之後的求導和計算方便,進一步等價於最小化
假設超平面能將樣本正確分類,則可令:
兩個式子綜合一下有:
這就是目標函式的約束條件。現在這個問題就變成了一個最優化問題:
而且這是一個凸二次規劃問題,一般的解決方法有兩種1是用現成的優化工具包直接求解,2是使用Lagrange Duality找到一種更有效的方法求解。 其中方法2具有兩個優點: a、更好解 b、可以自然地引入核函式,推廣到非線性分類 所以這裡選用了第二種方法。 對偶優化問題 對於上述的最優化問題先需要構造拉格朗日函式:
分別對w和b求導得到:
然後再代入拉格朗日函式後得到原問題的對偶問題:
現在已經完成了對這個問題的建模過程。 當要對一個數據點分類是,只需要把待分類的資料點帶入g(x)中,把結果和正負號對比。又由上面計算得到的w,帶入g(x)得到:
這個式子表示:對x的預測只需要求它與訓練點的內積,這是用kernal進行線性推廣的基本前提。並且並不是滅個訓練點都要用到,只需要用到支援向量,非支援向量的係數a為0。 到這裡剩下的是怎麼解目前這個最優化問題。 但是目前這分類器還是比較若的分類器,只適合線性的情況,而且沒什麼容錯性。 所以現在先不急著求解,先討論容錯性和非線性情況的推廣(泛化) 核函式 前述方法對線性不可分的樣本集無能為力。 但是一個低維的樣本集對映到高維則可以變成線性可分(如圖所示),那樣才能使用SVM工作。 》》》》  設對映函式為Φ(•),則對映後的空間分類函式變成
但是,如果拿到低維資料直接對映到高維的話,維度的數目會呈現爆炸性增長。 所以這裡需要引入核函式(kernal function)。 核函式的思想是尋找一個函式,這個函式使得在低維空間中進行計算的結果和對映到高維空間中計算內積<Φ(x­1), Φ(x2)>的結果相同。 這樣就避開直接在高維空間中進行計算,而最後的結果卻是等價的。 現在,分類函式就變成了這樣:
其中k就是核函式 由於對任意資料集找到它合適的對映是困難的且沒有必要,所以通常會從常用核函式中選擇。 常用核函式例如:
  • 多項式核函式
  • 高斯核核函式
  • 線性核函式
  • 字串核函式
上述方法叫做核方法。事實上,任何將計算表示為資料點內積的方法都可以用核方法進行非線性擴充套件 容錯性: Outliers 由於噪音的存在,有可能有偏離正常位置很遠的資料點存在,甚至類別1出現雜了類別2的區域中這樣的異常值叫outliers. 為處理這種情況,SVM允許資料點在一定程度上偏離超平面,約束就變成了:
其中,稱為鬆弛變數(slack variable) 這就引入了容錯性 如果任意大的話,那任意的超平面都是符合條件的了 所以需要在原目標函式中加入損失函式,可以用  或者   用前者的話,叫一階軟間隔分類器;用後者的話就叫二階軟間隔分類器。 還需要一個懲罰因子C(cost),它代表了對離群點帶來的損失的重視程度,它的值越大,對目標函式的損失越大,意味著你非常不願意放棄這些點。 它是由使用者指定的一個值(libsvm中的引數C),是引數調優的重點所在。 原來的優化問題就變成了下面這樣:
同樣用Lagrange方法得到對偶問題:
這才是一個可以處理線性和非線性情況並能容忍噪音和outlier的SVM! SVM用於多類分類 svm本身是一種典型的二分類器,那如何處理現實中的多分類問題呢? 常用的有三種方法: 一、一對多 也就是“一對其餘”(One-against-All) 的方式,就是每次仍然解一個兩類分類的問題。 這樣對於n個樣本會得到n個分類器。 但是這種方式可能會出現分類重疊現象或者不可分類現象 而且由於“其餘”的資料集過大,這樣其實就人為造成了“資料偏斜”的問題 二、一對一 每次選擇一個類作為正樣本,負樣本只用選其餘的一個類,這樣就避免了資料偏斜的問題。 很明顯可以看出這種方法訓練出的分類個數是k*(k-1)/2,雖然分類器的個數比上面多了,但是訓練階段所用的總時間卻比“一類對其餘”方法少很多。 這種方法可能使多個分類器指向同一個類別,所以可以採用“投票”的方式確定哪個類別:哪個分類器獲得的票數多就是哪個分類器。 這種方式也會有分類重疊的現象,但是不會有不可分類的情況,因為不可能所有類別的票數都是0。 但是也很容易發現這種方法是分類器的數目呈平方級上升。 、DAG SVM 假設有1、2、3、4、5五個類,那麼可以按照如下方式訓練分類器( 這是一個有向無環圖,因此這種方法也叫做DAG SVM 這種方式減少了分類器的數量,分類速度飛快,而且也沒有分類重疊和不可分類現象。 但是假如一開始的分類器回答錯誤,那麼後面的分類器沒有辦法糾正,錯誤會一直向下累積。 為了減少這種錯誤累積,根節點的選取至關重要。 小結 本文從整個流程上理清了SVM是個什麼東西 首先,支援向量機是一個十分流行的針對二分類線性分類器,分類的方式是找到一個最優的超平面把兩個類別分開。定義“最優”的方式是使離分隔面最近的資料點到分隔面的距離最大,從而把這個問題轉化成了一個二次優化問題 然後,我們選擇了拉格朗日方法來對這個二次優化問題進行簡化,即轉化成它的對偶問題。雖然我們沒有進一步討論這個優化問題的解法,但這已經形成了SVM的初步模型 隨後我們對這個簡單的分類器進行泛華,用核方法把這個線性模型擴充套件到非線性的情況,具體方法是把低維資料集對映到高維特徵空間。以及,討論了怎麼增強分類器的容錯效能。 最後討論了怎麼把這個二分類器用於多分類問題。 參考文獻 【4】《機器學習 》,周志華著 【5】《統計學習方法》,李航著 【6】《機器學習實戰》Peter Harrington著

相關推薦

SVM演算法原理及Python實現

Svm(support Vector Mac)又稱為支援向量機,是一種二分類的模型。當然如果進行修改之後也是可以用於多類別問題的分類。支援向量機可以分為線性核非線性兩大類。其主要思想為找到空間中的一個更夠將所有資料樣本劃開的超平面,並且使得本本集中所有資料到這個超平面的距離最

帶你搞懂支援向量機SVM演算法原理

一、原理 1. 線性可分支援向量機 問題的輸入輸出 X = {x1,x2,...,xnx1,x2,...,xn} Y = {+1, -1} 模型: 感知機的目的是找到一個可以正確分類資料的超平面S:ω⋅x+b=0ω⋅x+b=0, 得到感知機

機器學習——SVM演算法原理(1)

(1)線性可分支援向量機與硬間隔最大化 考慮一個二分類問題,假設輸入空間與特徵空間為兩個不同的空間,輸入空間為歐式空間或離散集合,特徵空間為歐式空間或希伯特空間。線性支援向量機假設這兩個空間的元素一一

[機器學習]機器學習筆記整理08- SVM演算法原理及實現

<html> 1 背景 最早是由 Vladimir N. Vapnik 和 Alexey Ya. Chervonenkis 在1963年提出 目前的版本(so

SVM演算法原理

簡介 支援向量機(support vector machines)是一個二分類的分類模型(或者叫做分類器)。如圖: 它分類的思想是,給定給一個包含正例和反例的樣本集合,svm的目的是尋找一個超平面

Svm演算法原理及實現

      Svm(support Vector Mac)又稱為支援向量機,是一種二分類的模型。當然如果進行修改之後也是可以用於多類別問題的分類。支援向量機可以分為線性核非線性兩大類。其主要思想為找到空間中的一個更夠將所有資料樣本劃開的超平面,並且使得本本集中所有資料到這個超

SVM演算法原理以及sklearn例項

今天重新學習了一遍SVM的內容,發現好多以前看不懂的推導公式都能理解了,趕緊記錄下來。作者屬於菜鳥級別,文中如有錯誤認識還請大家不吝賜教! SVM(support vector machine,支援向量

SVM演算法原理分析

SVM演算法: 演算法背景:支援向量機方法是建立在統計學習理論的VC 維理論和結構風險最小原理基礎上的,根據有限的樣本資訊在模型的複雜性(即對特定訓練樣本的學習精度,Accuracy)和學習能力(即無錯誤地識別任意樣本的能力)之間尋求最佳折衷,以期獲得最好的推

【支援向量機SVM演算法原理 公式推導 python程式設計實現

1.前言     如圖,對於一個給定的資料集,通過直線A或直線B(多維座標系中為平面A或平面B)可以較好的將紅點與藍點分類。那麼線A與線B那個更優呢?                   在SVM演算法中,我們認為線A是優於線B的。因為A的‘分類間隔’大於B。

2.常用演算法(推導) 演算法分類,演算法原理演算法設計,推導---SVM,DTree,樸素貝葉斯,線性迴歸等;

演算法: 以wx+b=0為基礎的演算法: 感知機->誤分點(xi,yi | i->m)到wx+b的距離和最小,求最優解; 支援向量機->最大間隔; 邏輯迴歸->將wx+b的值作為邏輯函式輸入,進行分類; 線性迴歸->勾畫線性曲線,對

資料探勘十大演算法——支援向量機SVM(四):SMO演算法原理

首先感謝“劉建平pinard”的淵博知識以及文中詳細準確的推導!!! 支援向量機原理SVM系列文章共分為5部分: (一)線性支援向量機 (二)線性支援向量機的軟間隔最大化模型 (三)線性不可分支援向量機與核函式 (四)SMO演算法原理 (五)線性支援迴歸

SVM 支援向量機演算法-原理

> **公號:碼農充電站pro** > **主頁:** 本篇來介紹**SVM 演算法**,它的英文全稱是 *Support Vector Machine*,中文翻譯為**支援向量機**。 之所以叫作支援向量機,是因為該演算法最終訓練出來的模型,由一些**支援向量**決定。所謂的支援向量,也就是能夠決定最終

OpenCV學習筆記(31)KAZE 演算法原理與原始碼分析(五)KAZE的原始碼優化及與SIFT的比較

  KAZE系列筆記: 1.  OpenCV學習筆記(27)KAZE 演算法原理與原始碼分析(一)非線性擴散濾波 2.  OpenCV學習筆記(28)KAZE 演算法原理與原始碼分析(二)非線性尺度空間構建 3.  Op

OpenCV學習筆記(30)KAZE 演算法原理與原始碼分析(四)KAZE特徵的效能分析與比較

      KAZE系列筆記: 1.  OpenCV學習筆記(27)KAZE 演算法原理與原始碼分析(一)非線性擴散濾波 2.  OpenCV學習筆記(28)KAZE 演算法原理與原始碼分析(二)非線性尺度空間構

Raid5資料恢復演算法原理- raid5資料恢復案例

Raid 5資料恢復演算法原理 要理解 raid 5資料恢復原理首先要先認識raid5,分散式奇偶校驗的獨立磁碟結構(也就是我們稱之為的raid 5)資料恢復有一個“奇偶校驗”概念需要理解。我們可以把它簡單的理解成為二進位制運算中的“異或運算”,通常使用的標識是xor。這個用運算的規則就是若二者

樸素貝葉斯演算法原理

(作者:陳玓玏) 1. 損失函式 假設我們使用0-1損失函式,函式表示式如下: Y Y Y為真實

通俗易懂的Adaboost演算法原理分析和例項+程式碼

   【尊重原創,轉載請註明出處】 http://blog.csdn.net/guyuealian/article/details/70995333     本人最初瞭解AdaBoost演算法著實是花了幾天時間,才明白他的基本原理。也許是自己能力有限吧,很多資

SURF演算法原理與原始碼分析

如果說SIFT演算法中使用DOG對LOG進行了簡化,提高了搜尋特徵點的速度,那麼SURF演算法則是對DoH的簡化與近似。雖然SIFT演算法已經被認為是最有效的,也是最常用的特徵點提取的演算法,但如果不借助於硬體的加速和專用影象處理器的配合,SIFT演算法以現有的計算機仍然很難達到實時的程度。對於需要

十三種基於直方圖的影象全域性二值化演算法原理、實現、程式碼及效果。

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

1. 支援向量機(SVM原理

1. 前言 在我沒有學習接觸機器學習之前,我就已經聽說了SVM這個機器學習的方法。SVM自它誕生以來就以優秀的分類效能牢牢佔據了霸主地位。 2. SVM原理 支援向量機(Support Vector Machine, SVM)的基本模型是在特徵空間上找到最佳的分離超平面使得訓練集上正負樣本間隔最大。SV