1. 程式人生 > >SVM 支援向量機 介紹與原理

SVM 支援向量機 介紹與原理

SVM 支援向量機

  • By Scarb
  • 資料探勘課程的期末作業。學期末的時候太忙了,所以沒有寫部落格發上來。隔了這麼久終於想起來這個於是發一下。

1. 什麼是支援向量機(SVM)

1.1 一個故事

在介紹SVM是什麼之前,先來看一個故事……
我在網路上看到這個故事,通過它很快地理解了SVM的作用。
好吧,故事是這樣子的:
在很久以前的情人節,大俠要去救他的愛人,但魔鬼和他玩了一個遊戲。
魔鬼在桌子上似乎有規律放了兩種顏色的球,說:“你用一根棍分開它們?要求:儘量在放更多球之後,仍然適用。”

SVM_1

於是大俠這樣放了。

SVM_2

SVM就是試圖把棍放在最佳位置,好讓在棍的兩邊有儘可能大的間隙。
魔鬼看到大俠已經解決了一個難題,於是魔鬼給了大俠一個新的挑戰;這也是SVM中另一個更加重要的難題:

SVM_3

現在,大俠沒有棍可以很好幫他分開兩種球了,現在怎麼辦呢?當然像所有武俠片中一樣大俠桌子一拍,球飛到空中。然後,憑藉大俠的輕功,大俠抓起一張紙,插到了兩種球的中間。

SVM_4

現在,從魔鬼的角度看這些球,這些球看起來像是被一條曲線分開了。

SVM_5

再之後,無聊的大人們,把這些球叫做 「資料」,把棍子 叫做 「分類器」, 找到最大間隙的方法叫做「最優化」, 拍桌子叫做「核方法」, 那張紙叫做「超平面」。

1.2 SVM 是什麼

看了上面這個故事,基本能理解SVM大致是做什麼的。它的本質是一個線性分類器。
支援向量機是用來解決分類問題的,它找到一條線將兩個特徵劃分開來,新的資料線上的哪邊就可以直接把資料劃分進這一類中。所以它是一種對現形和非線性資料進行分類的方法。
簡單地說,SVM是一種演算法,它使用一種非線性對映,把原訓練資料對映到較高的維上(就是大俠用輕功把球打飛起來)。在新的維上,它搜搜最佳分離超平面(即插入一張紙)。使用到足夠高維上的、合適的非線性對映,兩個類的資料總可以被超平面分開。

2. SVM 的原理

2.1 資料線性可分的情況

2.1.1 超平面以及點到平面的距離

線性分類器用一個超平面 wx + b = 0 將空間劃分為兩個部分,wx + b > 0 和 wx + b < 0,w的方向和超平面方向垂直。

SVM_6

那麼如何求空間上一點到這個超平面的距離呢?經過數學推導可以得到下面的結論

SVM_7

這個距離就等於g(x)的絕對值比w的模。所以原點到超平面的距離是b的絕對值比w的模。
這個結論在後面將會用到。

2.1.2 margin、Support Vecotrs 間隔和支援向量

超平面向上或者向下平移,直到遇到某一個點時停下。能夠向上和向下平移距離的和就是margin(間隔)。而SVM就是要讓這個超平面的margin最大。
Support Vecotrs(支援向量),就是超平面平移時最先遇到的點。這個名字比較形象,支援向量就好像它託著這個面一樣。來看一張圖:

SVM_8

在SVM中有一些新的定義:把分介面定為wx + b = 0,分介面的上邊緣定為 wx + b = 1,分介面的下邊緣定為 wx + b = -1。超過上邊界的資料點記為1,超過下邊界的資料點記為-1。
所以可以把SVM的問題轉換成求最大margin的問題。那麼margin如何得到?通過剛才得出的求某一點到分介面的公式可以得到計算margin的公式,如下圖所示:

SVM_9

2.1.3 求解最大邊緣超平面

接下來就是研究如何把margin最大化。在這之前有一個前提條件就是把資料分類分對。

SVM_A

經過數學計算得出:

SVM_B
SVM_C

2.2 資料線性不可分的情況

在某些情況中,兩種資料混合呈現線性不可分的狀態,不可能找到一條將這些類分開的直線,上面研究的線性SVM不可能找到可行解,這時怎麼辦?
SVM的解決方法是把資料對映到更高維的空間,這個時候就仍然可以用一條線將這些資料分隔開了。

SVM_D

那麼到底應該如何去做對映呢?實際上我們不需要為每個問題設計特別的對映。它實際上使用幾種固定的對映方法,對映到一個高維的空間。
但是對映到高維的空間做計算味著計算量會相當大,這不是自討苦吃嗎?
實際上SVM最精妙的地方就在於此。
假設我們將資料對映到高維空間,然後做內積,就變成:

SVM_E

在高維空間做內積的計算量非常大,但是在這有一個驚奇的發現:

SVM_F

在這個公式中可以看到在高維空間中的做的操作就等價於在m維空間上的操作。
這就是SVM中的核函式K(Kernel):這個函式在原始空間上計算出來的值就等於在高維空間上計算出來的值。核函式還有一些其他的型別。

最後仍然要求出w 和b,得到最大邊緣超平面:

SVM_G

其實最後的結果和線性可分情況下的公式差不多,區別就在於xi · x 變成了核函式。
SVM的功能十分強大,而它的表示式又十分簡潔,這極大地推動了SVM的應用。它能夠處理線性不可分的問題,核函式功不可沒。

3. SVM的優缺點

3.1 優點

  • 可以解決高維問題,即大型特徵空間
  • 能夠處理非線性特徵的相互作用
  • 無需依賴整個資料
  • 可以提高泛化能力

3.2 缺點

  • 當觀測樣本很多時,效率並不是很高
  • 對非線性問題沒有通用解決方案,有時候很難找到一個合適的核函式
  • 對缺失資料敏感

4. 參考資料

  1. 資料探勘:理論與演算法 線上課程——清華大學 深圳研究生院 袁博
  2. 《資料探勘 概念與技術》——韓家煒、Micheline Kamber、裴健
  3. 《Support Vector Machines explained well》—— Iddo

相關推薦

SVM 支援向量 介紹原理

SVM 支援向量機 By Scarb 資料探勘課程的期末作業。學期末的時候太忙了,所以沒有寫部落格發上來。隔了這麼久終於想起來這個於是發一下。 1. 什麼是支援向量機(SVM) 1.1 一個故事 在介紹SVM是什麼之前,先來看一個故事…

[機器學習]svm支援向量介紹

1 什麼是支援向量機 支援向量機是一種分類器,之所以稱為 機 是因為它會產生一個二值決策結果,即它是一個決策機。 ​​​Support Vector Machine, 一個普通的SVM就是一條直線罷了,用來完美劃分linearly separable的兩類。但這又不是一條

SVM-支援向量原理詳解實踐之一

SVM-支援向量機原理詳解與實踐 前言 去年由於工作專案的需要實際運用到了SVM和ANN演算法,也就是支援向量機和人工神經網路演算法,主要是實現專案中的實時採集圖片(工業高速攝像頭採集)的影象識別的這一部分功能,雖然幾經波折,但是還好最終還算順利完成了專案的任務,忙碌一年

SVM支援向量系列理論(七) 線性支援向量L2正則化 Platt模型

7.1 軟間隔SVM等價於最小化L2正則的合頁損失 上一篇 說到, ξi ξ i \xi_i 表示偏離邊界的度量,若樣本點

SVM支援向量系列理論(三) 非線性支援向量核函式技巧

3.1 核技巧解決非線性SVM 3.1.1 非線性SVM解決思路 3.1.2 核技巧下SVM 3.2 Mercer核

機器學習 - [Today is SVM] - [支援向量]

支援向量機分為: 線性可分支援向量機,線性支援向量機,非線性支援向量機。 下面開始推導: 核心思想:讓距離最小的點取最大。就是對於每一個可行的超平面,計算最近的點的距離,找到一個超平面,能使這個距離最大,就是最好的分割超平面,這樣分類的效果最明顯。 計算點到直線的距離 

機器學習數學原理(7)——SVM支援向量

機器學習數學原理(7)——SVM支援向量機 這篇博文筆者將預設讀者已經瞭解了最優間隔分類器以及泛化拉格朗日乘子法,如果部分讀者還不是很瞭解,我這裡給出前面一篇博文的連結《機器學習數學原理(6)——最優間隔分類器》。總之,這篇博文將不會再贅述相關的知識,而是直接給出其結論。 由於筆

SVM-支援向量演算法概述 ---一篇非常深入淺出介紹SVM的文章

(一)SVM的背景簡介 支援向量機(Support Vector Machine)是Cortes和Vapnik於1995年首先提出的,它在解決小樣本、非線性及高維模式識別中表現出許多特有的優勢,並能夠推廣應用到函式擬合等其他機器學習問題中[10]。 支援向量機方法是建立在

SVM支援向量-拉格朗日乘子對偶問題(1)

對於支援向量機,我們首先要關注的幾個點就是間隔,超平面,支援向量,再深入的話就是對偶問題,拉格朗日對偶問題,凸優化,和 KKT條件,我們先從基本的間隔,超平面,支援向量說起。1.SVM基礎模型給定訓練集

SVM 支援向量(2) 軟間隔最大化核方法

對於某些資料集, 並不能找到一個超平面把它們分開, 也就是說不能找到一組w⃗ ,b, 滿足yi(w⃗ ⋅x⃗ i+b)≥1, 解決辦法就是引入一個鬆弛變數ξi, 讓所有樣本點都滿足yi(w⃗ ⋅x⃗ i+b)≥1−ξi, 這樣得到一個新的約束條件, 可以注意到ξ

SVM支援向量原理(二) 線性支援向量的軟間隔最大化模型

在支援向量機原理(一) 線性支援向量機中,我們對線性可分SVM的模型和損失函式優化做了總結。最後我們提到了有時候不能線性可分的原因是線性資料集裡面多了少量的異常點,由於這些異常點導致了資料集不能線性可分,本篇就對線性支援向量機如何處理這些異常點的原理方法做一個總結。 1

深度學習支援向量的分類原理異同

深度學習利用神經網路對資料進行分類,我們來看看其分類的本質是什麼。下面我們來看一個2層的神經網路中的第1層:輸入a可以看作三維空間的一個點,輸出z可以看作兩維空間的點。從輸入a到輸出z,首先輸入向量a左乘了一個變換矩陣w,經歷了座標變換被壓縮了一維,然後再進行了一個sigmo

SVM支援向量-SKlearn實現繪圖(8)

瞭解了SVM的基本形式與演算法實現,接下來用SKlearn實現支援向量機分類器.1.函式定義與引數含義先看一下SVM函式的完全形式和各引數含義:SVC(C=1.0, kernel=’rbf’, degree=3, gamma=’auto’, coef0=0.0, shrink

svm支援向量原理

 (很詳細的SVM的原理講解,copy下來備忘)[-]            支援向量機通俗導論(理解SVM的三層境界)作者:July、pluskid ;致謝:白石、JerryLead出處:結構之法演算法之道blog。前言    動筆寫這個支援向量機(support vector machine)是費了不少勁

SVM 支援向量演算法-原理

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

SVM-tutorial】SVM-支援向量綜述

原文地址:https://www.svm-tutorial.com/ (這篇文章是翻譯 Alexandre KOWALCZYK 的SVM tutorial ,這篇tutorial 寫的很詳細,沒有很好的數學背景的同學也可以看的懂,作者細心的從最基礎的知識講起,帶領我們一步步的認識這個複雜

機器學習實戰——SVM支援向量 實現記錄

問題:TypeError: data type not understood alphas = mat(zeros(m,1)) 原因是zeros(())格式不對,更改後: alphas = mat(zeros((m,1))) 問題:關於IDLE中換行,回車前面出現很多空格的情況

支援向量-引入及原理

支援向量機(Support Vector Machines, SVM):是一種監督學習演算法。處理二分類 支援向量(Support Vector)就是離分隔超平面最近的那些點。 機(Machine)就是表示一種演算法,而不是表示機器。 線性可分資料集:將資料集分隔開的直線稱為分隔超平面。我們

SVM(支援向量)

Basically, the support vector machine is a binary learning machine with some highly elegant properties. Given a training sample, the support vector machi

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

春夜喜雨 好雨知時節,當春乃發生。 隨風潛入夜,潤物細無聲。 野徑雲俱黑,江船火獨明。 曉看紅溼處,花重錦官城。 前言         週末很多城市下開了雨,下雨中也不乏忙忙碌碌的人們,有的天不亮已經忙碌匆