1. 程式人生 > >三個角度看SVM(1)——最大間隔分類器

三個角度看SVM(1)——最大間隔分類器

“橫看成嶺側成峰,遠近高低各不同。”

支援向量機(Support Vector Machine, SVM)作為一個被廣泛應用的有監督機器學習演算法,網路上對它的介紹數不勝數,其中更有不少好文佳作。本文與它們的區別在於:並不著重於“教程式”地對SVM進行系統性介紹,而是希望從三個不同的角度對這個演算法進行探究。我相信經過這番“把玩”,看過你會跟我一樣覺得:機器學習真的是好玩!

1、引言

最大化類間間隔分類器(maximum margin classifier),估計是最為直觀,也是最為人們所熟悉的對於SVM的理解。我們不妨也先從這個角度切入,看看為什麼SVM能給我們帶來優良的泛化能力。這一部分的路線圖如下:
路線圖

2、線性可分和線性分類器

對於一個二分類問題,如果存在至少一個超平面能夠將不同類別的樣本分開,我們就說這些樣本是線性可分的(linear separable)。所謂超平面,就是一個比原特徵空間少一個維度的子空間,在二維情況下就是一條直線,在三維情況下就是一個平面。

線性分類器(linear classifier)是一類通過將樣本特徵進行線性組合來作出分類決策的演算法,它的目標就是找到一個如上所述能夠分割不同類別樣本的超平面。這樣在預測的時候,我們就可以根據樣本位於超平面的哪一邊來作出決策。

用數學語言來描述,一個線性函式可以簡單表示為:f(x)=wTx+b,而線性分類器則根據線性函式的結果進行分類決策:

y=g(f(x))=g(wTx+b) 其中g()是一個將變數對映到不同類別的非線性函式,可以簡單取為:
g(z)=1,1,if z0if z<0
即分類的結果由 f(x) 的符號決定,f(x)=wTx+b0即為分類超平面。

下圖展示了幾個線性可分/不可分的例子,並且畫出了一個可能的分類超平面:
圖片來源

3、最大化間隔

在樣本線性可分的情況下,可行的分類超平面可能會有很多,如下圖的L1L2L3
這裡寫圖片描述

那麼怎麼選擇一個最好的呢?從上圖我們可以直觀看出,L2比另外兩條分界線要更好,這是因為L2離樣本的距離更遠一些,讓人覺得確信度更高。這好比人(相當於樣本)站在離懸崖邊(分類邊界)越遠,人就會感到越安全(分類結果是安全還是危險)。從統計的角度講,由於正負樣本可以看作從兩個不同的分佈隨機抽樣而得,若分類邊界與兩個分佈的距離越大,抽樣出的樣本落在分類邊界另一邊的概率就會越小。

SVM正是基於這種直觀思路來確定最佳分類超平面的:通過選取能夠最大化類間間隔的超平面,得到一個具有高確信度和泛化能力的分類器,即最大間隔分類器。

3.1、間隔

既然SVM的目標是最大化間隔,我們便要先對“間隔”進行定義。所謂間隔,就是分類超平面與所有樣本距離的最小值,表示為:

γ=min{dist(l,xi)|i=1,2,...,N} 其中l表示分類超平面,N為樣本個數,xi為第i個樣本。接下來我們還需要定義樣本到超平面的“距離” dist(l,x)

假設任意一個樣本點x0,其在分類超平面上的投影記作x̂ 0。對於分類超平面wTx+b=0,我們知道他的法向量是w,法向量的方向可以由法向量除以其模長所得:ww。我們將dist(l,xi)記為dd0),則可以得到:

x0x̂ 0=dww等式兩邊同時左乘wT並加上b,並且利用超平面上的點wTx̂ 0=0的性質,我們可以得到:d=wTx+bwy{1,1}為分類標籤,由於y(wTx+b)=wTx+b,我們可以以此消去上式的絕對值。

綜上所述,我們可以得到對於分類超平面lN個樣本xi的“間隔”的表示式:

γ=min{yi(wTxi+b)wi=1,2,...,N}

3.2、最大化

有了上述定義的間隔,接下來的事情就很直接了——求解能使間隔最大化的引數wb,即求解以下優化函式:

maxw,bγ=min{

相關推薦

角度SVM1——間隔分類

“橫看成嶺側成峰,遠近高低各不同。” 支援向量機(Support Vector Machine, SVM)作為一個被廣泛應用的有監督機器學習演算法,網路上對它的介紹數不勝數,其中更有不少好文佳作。本文與它們的區別在於:並不著重於“教程式”地對SVM進行系統性介

機器學習數學原理6——間隔分類

機器學習數學原理(6)——最優間隔分類器 這一篇博文主要起一個承上啟下的作用,即需要上一篇博文所說的泛化拉格朗日定理方面的知識(建議讀者先閱讀上一篇博文《機器學習數學原理(5)——廣泛拉格朗日乘子法》),同時為下一篇關於SVM支援向量機的博文作鋪墊。這一篇博文介紹最優間隔分類器。

網路流1-------

一.網路流最大流問題和基本概念 1.網路流基本概念 (1)名詞解釋 源點:流量的源頭,只有流出去的點 匯點:流量的匯聚點,只有流進來的點 流量:一條邊上流過的實際流量 容量:一條邊上可供流過的最大流量 殘量:一條邊上的容量-當前流量,剩下可流的最大流 (2)網路流概念

模式識別Pattern Recognition學習筆記十二--SVM廣義間隔

       在學習之前,先說一些題外話,由於博主學習模式識別沒多久,所以可能對許多問題還沒有深入的認識和正確的理解,如有不妥,還望海涵,另請各路前輩不吝賜教。        好啦,我們開始學習吧。

、Java基礎工具1_常用類——用戶和程序交互

size 數據 輸入 方法 main方法 main scanner類 style 輸入數據 2018-05-12 用戶和程序交互 程序接受用戶的輸入數據,有以下三種方式 一、main方法接受參數 二、Console 三、Scanner類 三、Java基

、Java基礎工具1_常用類——數學相關類

ref .com 工具 www 小數 spa -- 指數 target 2018-05-13 數學相關類 一、Math類    Java 的 Math 包含了用於執行基本數學運算的屬性和方法,如初等指數、對數、平方根和三角函數。   Math 的方法都被定義為 s

、Java基礎工具1_常用類——日期類

for 我們 size CA calendar 大量 col -- bsp 2018-05-14 日期類 一、Date類   講java.util.Date,類 Date 表示特定的瞬間,精確到毫秒。   Date類中大量方法讀已經過時,過時不代表不存在,依然可以

Asp.Net MVC+EF+層架構 簡單搭建 1 Asp.Net MVC+EF+層架構

首先,謝謝各位過客觀看,今天我們說下簡單的 Asp.Net MVC+EF+三層架構 搭建( 第一部分)。 很簡單,先看下完成之後程式碼圖:   這裡講的是一個整體框架的搭建,所以頁面暫時Pass,先以一個小的查詢為例。   一、新建Model、Dal、Bl

JavaSE——特殊的類2

String類(下) 1.字串查詢 從一個完整的字串之中可以判斷指定內容是否存在,查詢方法如下: No. 方法名稱 型別 描述 1. public boolean

一點一點原始碼1未完

一:Collection體系概覽 容器的儲存,資料的獲取,資料新增,資料遍歷,資料搜尋,其他(判空,替換,排序,溢位,併發,同步,拆分,匯聚)   @see     Set   @see     List   @see &

程式設計師面試的幾常見的問題1

1.什麼是面向物件?對於面向物件,它是java程式的一種程式設計思想。那麼它有四種基本特徵:抽象、封裝、繼承、多型抽象:抽象可以分為抽象類和抽象方法;抽象類①使用abstract關鍵字來定義抽象類②抽象類能被繼承③抽象類不能例項化(即不能建立抽象類的例項,但是可以先例項化抽象

《機器學習實戰》第章:決策樹1基本概念

有半個月沒來了。 最近一段時間...大多在忙專案組的事(其實就是改一改現有程式碼的bug,不過也挺費勁的,畢竟程式碼不是自己寫的)。另外就是自己租了幾臺美帝的vps,搭了$-$的伺服器 ,效果還不錯。自己搭的話就不用去買別人的服務了,不過租vps畢竟還是要成本的,光用來番茄

相機標定 matlab opencv ROS種方法標定步驟1

 一 、 理解攝像機模型,網上有很多講解的十分詳細,在這裡我只是記錄我的整合出來的資料和我的部分理解         計算機視覺領域中常見的三個座標系:影象座標系,相機座標系,世界座標系,實際上就是要用矩陣來表         示各個座標系下的轉換,首先在影象座標系下與相機座標系的關係            

Qt收費嗎?QT的授權協議分析

關於Qt的三種協議以及是否收費,有以下引文: 引文一:     最近一直在學習 Qt。Qt 有兩個許可證:LGPL 和商業協議。這兩個協議在現在的 Qt 版本中的程式碼是完全一致的(潛在含義是,Qt 的早期版本,商業版的 Qt 通常包含有一些開源版本所沒有的庫,比如

RabbitMQ學習筆記:Exchange的學習1

一、概述     上一篇文章中講述了一個簡單的訊息傳遞模型,訊息從生產者傳送到消費者再發送到佇列,實際的工作中生產者不知道要把訊息傳送給哪個佇列,可能有多個消費者要生產者的訊息,也可能有的消費者不需要生產者的全部訊息,比如日誌系統,一個消費者需要info級別的資訊,另一個消

用wxpython來做自己的第一介面小工具1

本文適合測試qa們看。客戶端開發請繞行。 大家經常會做一些小工具,小指令碼的情況下,可以嘗試用wxpython來做一個簡單的介面工具。這樣不但看起來高大上。也能讓自己更加明白客戶端開發的那些事。不要什麼小工具,都做成平臺,做成b/s的平臺。b/s和c/

Android核心學習之----------Power原始碼分析學習1

Android核心學習 -----Power原始碼分析學習(1) 1.    前言 最近學習了一下Android的Power原始碼,雖然還沒學習通透,但是有點感覺了,怕後面忘了東西,就邊學便把東西記錄下來吧。如果有大神再致電一二那更是感激不盡了 Android4.4

機器學習-19:MachineLN之SVM1

你要的答案或許都在這裡:小鵬的部落格目錄 我想說: 其實很多事情,只要你想做,是肯定有方法做的,並且可以做好; 說起SVM很多人都會感覺頭疼,無非就是公式多一個,其實很多時候你真是用的話,都不用你手動

Docker中的基本概念容器container、鏡像image和倉庫registry

動態 新的 倉庫 sof aca rod cts 使用 基礎 Docker 鏡像是一個特殊的文件系統,除了提供容器運行時所需的程序、庫、資源、配置等文件外,還包含了一些為運行時準備的一些配置參數(如匿名卷、環境變量、用戶等)。 鏡像不包含任何動態數據,其內容在構建之後也不會

Python機器學習筆記:SVM1——SVM概述

前言   整理SVM(support vector machine)的筆記是一個非常麻煩的事情,一方面這個東西本來就不好理解,要深入學習需要花費大量的時間和精力,另一方面我本身也是個初學者,整理起來難免思路混亂。所以我對SVM的整理會分為四篇(暫定為四篇)學習,不足之處,請多多指導。   四篇分別為: Pyt