1. 程式人生 > >機器學習——支援向量機SVM(Support Vector Machine)(下)

機器學習——支援向量機SVM(Support Vector Machine)(下)

1、SVM演算法特徵

(1訓練好的模型的演算法複雜度是由支援向量的個數決定的,而不是由資料的維度決定。所以,SVM不太容易產生overfitting。

(2)SVM訓練出來的模型完全依賴於支援向量(Support Vectors),即使訓練集裡面所有非支援向量的點都被去除,重複訓練過程,結果仍然會得到完全一樣的模型。

(3)一個SVM如果訓練得出的支援向量個數比較小,SVM訓練出的模型比較容易被泛化

2、線性不可分情況(linearly inseparable case)


(1)資料集在空間中對應的向量不可能被一個超平面分開。

(2)兩個解決的步驟:

利用一個非線性的對映原資料集中的向量點轉化到一個更高維的空間中

在這個更高維的空間中找到一個線性的超平面來根據線性可分的情況處理。

(3)簡單舉例

在一維空間中,有兩類點分佈在一條直線上,如下圖,沒有辦法找到一條直線將其實現分類。

建立一個對映 f(x)=x^2,由原先一維空間轉換到二維空間上的曲線上,這是很容易找到一條直線(超平面)將兩類示例分開。


(4)非線性對映將低維空間轉換到高維空間的視覺化演示:http://www.youtobe.com/watch?v=3liCbRZPrZA







3、如何利用非線性對映把原始資料轉化到高維空間中?

(1)簡單舉例

3維輸入向量:,轉化到6維空間Z中去:

此時,新的決策超平面為:,這個超平面是線性的,其中W和Z是向量。

解出W和b之後,並且帶入回原方程:


(2)關鍵問題:

如何選擇合理的非線性的轉化把資料傳到高維空間中?

如何解決內積時演算法複雜度非常高的問題?即:使用核方法(kernel trick)

4、核方法(kernel trick)

(1)目的(動機)

線上性SVM中轉化為最優化的問題時,求解的公式計算都是以內積(dot product的形式出現的,

其中,是把訓練集中的向量點轉化到高維的非線性對映函式,因為內積的演算法複雜度非常大,所以我們利用

核函式來取代計算非線性對映的內積

(2)定義

以下核函式和非線性對映函式的內積等同:

(3)常用的核函式(kernel function)

h度多項式核函式

(polynomial kernel of degree h):

高斯徑向基核函式(Gaussian radial basis function kernal):

S型核函式(Signmoid function kernel):

核函式的使用:根據先驗經驗,如影象分類通常使用高斯徑向基核函式(RBF),文字通常不使用RBF;

嘗試不同的kernel,根據結果準確度而定。

(4)核函式舉例:

假設定義兩個向量,

定義方程:

核函式:

假設

其內積為:

利用核函式計算:

所以,對於同樣的結果,用kernel方法計算容易的很多。

5、SVM擴充套件可解決多個類別的分類問題

上面討論的只是二分類的問題,現實生活中大多數解決的不僅是二分類問題,而是多分類的問題,如何解決多類問題,

對於每個類,有一個當前類和其他類的二分器(one-vs-rest),假設目前有10類,可以設定10個分類器,第1個分類器只關心

是否為第一類和剩下類(第一個分類器區分第1類和第2至第10類,第1類為一類剩下的第2至第10類為另一類),同理,

第2個分類器只關心是否為第2類以及剩下的第1類和第3至第10類,依此類推,每一個分類器中區分當前類其餘剩下的類。

最後再根據多數投票的原則或距離遠近等其他方向實現最終分類。總結:多分類的問題可以轉化成多個二分類問題進行處理

相關推薦

機器學習——支援向量SVMSupport Vector Machine

1、SVM演算法特徵 (1)訓練好的模型的演算法複雜度是由支援向量的個數決定的,而不是由資料的維度決定。所以,SVM不太容易產生overfitting。 (2)SVM訓練出來的模型完全依賴於支援向量(

機器學習——支援向量SVM

在之前做數學建模的時候就有使用過支援向量機的有關知識,但是對於支援向量機的理解一直不是很深刻,尤其是數學推導部分還是存在一些問題。在最近看周志華西瓜書的過程中同樣發現這一問題,西瓜書中對支援向量機的講解部分不是很詳細,所以我又查找了其他的資料。 支援向量機是一種原創性(非組

吳恩達機器學習 - 支援向量(SVM) 吳恩達機器學習 - 支援向量(SVM)

原 吳恩達機器學習 - 支援向量機(SVM) 2018年06月24日 14:40:42 離殤灬孤狼 閱讀數:218 更多

機器學習-支援向量SVM

簡介: 支援向量機(SVM)是一種二分類的監督學習模型,他的基本模型是定義在特徵空間上的間隔最大的線性模型。他與感知機的區別是,感知機只要找到可以將資料正確劃分的超平面即可,而SVM需要找到間隔最大的超平面將資料劃分開。所以感知機的超平面可以有無數個,但是SVM的超平面只有一個。此外,SVM在引入核函式之後

機器學習——支援向量SVM之軟間隔與正則化

1、在SVM基本型的討論中,我們一直假定樣本在樣本空間或特徵空間中是線性可分的,即存在一個超平面能將不同類的樣本完全劃分開 2、然而現實任務中往往很難確定合適的核函式使得訓練樣本在特徵空間中線性可分,即使恰好找到某個核函式使訓練集樣本在特徵空間中線性可分,也很難判斷是否

機器學習實戰-55:支援向量分類演算法(Support Vector Machine)

支援向量機分類演算法 支援向量機(Support Vector Machine)分類演算法屬於監督學習演算法。常用分類演算法包括:邏輯迴歸(Logistic Regression, LR)、K最近鄰(k-Nearest Neighbor, KNN)、樸素貝葉斯

Stanford機器學習---支援向量SVM

本欄目(Machine learning)包括單引數的線性迴歸、多引數的線性迴歸、Octave Tutorial、Logistic Regression、Regularization、神經網路、機器學習系統設計、SVM(Support Vector Machines 支

機器學習——支援向量SVM之核函式

1、在現實任務中,原始樣本空間也許不存在一個能正確劃分兩類樣本的超平面,雖然“軟間隔”概念的引入在一定程度上緩解了該問題,但是當樣本分佈的非線性程度很高的時候,“軟間隔”也無法解決這一問題 2、對於這類問題,SVM的處理方法是選擇一個核函式,其通過將資料對映到更高維

機器學習——支援向量(SVM)

支援向量機原理 支援向量機要解決的問題其實就是尋求最優分類邊界。且最大化支援向量間距,用直線或者平面,分隔分隔超平面。 基於核函式的升維變換 通過名為核函式的特徵變換,增加新的特徵,使得低維度空間中的線性不可分問題變為高維度空間中的線性可分問題。   線性核函式:linear,不通

機器學習-支援向量SVM演算法學習筆記

假設有訓練集D={(x1, y1), (x2, y2), ..., (xm, ym)},yi{-1, 1},分類學習最基本的想法就是基於訓練集D在樣本空間中找到一個劃分超平面,將不同類別的樣本分開。

機器學習——支援向量SVM

本文主要參考吳恩達《機器學習》課程,以及網上各個大牛們的博文。 支援向量機,是一種對線性和非線性資料進行分類的方法。它按以下方法工作:使用一種非線性對映,把原訓練資料對映到較高的維上,在新的維上,它搜尋最佳分離超平面。使用到足夠高維上的、合適的非線性對映,兩個類的資料總可以

機器學習 - 支援向量SVM目錄索引

SVM目錄索引 線性可分 SVM:硬間隔最大化 線性 SVM:軟間隔最大化 非線性 SVM:核技巧 序列最小最優化演算法 (SMO) 特點 優點:

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

            支援向量機通俗導論(理解SVM的三層境界) 作者:July 。致謝:pluskid、白石、JerryLead。 說明:本文最初寫於2012年6月,而後不斷反反覆覆修改&優化,修改次數達上百次,最後修改於2016年11月。 前言

機器學習---支援向量實戰核函式實現

這節和上一節很像,不同的是,上一篇的是通過支援向量和待分類資料內積進行分類的,只是這裡不同的是,在計算內積時使用核函式進行代替,這裡參考的是機器學習實戰中的核函式,如果前面理解的比較深入,讀程式碼還是很簡單的,這裡的程式碼建議不要剛開始就去讀核函式定義,建議先從測試核函式的程

機器學習----支援向量軟間隔與正則化

Soft Margin 前面的假設一直都是線性可分,可是如果對所有樣本不能線性可分(比如有noisy)怎麼辦?或者過擬合怎麼辦? 緩解該問題的一個方法就是允許支援向量機在一些樣本上出錯,為此引入軟間隔(soft margin)這個概念。即允許在一些樣本

機器學習--支援向量徑向基核函式RBF詳解

前面講解了什麼是核函式,以及有效核函式的要求,到這裡基本上就結束了,很多部落格也是如此,但是呢這些只是理解支援向量機的原理,如何使用它講解的卻很少,尤其是如何選擇核函式更沒有人講,不講也是有原因的,因為核函式的選擇沒有統一的定論,這需要使用人根據不同場合或者不同問題選擇核函式

機器學習----支援向量核函式

#線性不可分 我們的SVM是找到一條分割直線,但是如果線性不可分怎麼辦?如下圖: 可以看出,是有一個明顯的分割線的,但是不是直線,這種情況下我們怎麼用SVM呢?我們可以找到一種變化,讓變換後的資料線性可分,用圖形象的表示為: 圖中的ϕ就是我們

機器學習--支援向量核函式詳解

前面我們曾經引入二維資料的非線性的情況,但是那種非線性(並不是真正意義上的非線性)是通過鬆弛因子進行優化的,如果資料比之前還複雜怎麼辦呢? 複雜到即使你怎麼調節C你都無法進行分類,這個時候怎麼辦?如下例子: 這個無論你怎麼調節引數都無法在二維平面內進行線性分離了,但是

演算法學習——支援向量SVM

SVM現在的公式推導很多,都是現成的,而且寫的也很好,我會提供相關資源,這篇博文主要從思想理解的方面做一個簡單介紹。 1、SVM 是如何工作的? 支援向量機的基礎概念可以通過一個簡單的例子來解釋。讓我們想象兩個類別:紅色和藍色,我們的資料有兩個特徵:x 和 y。我們想要一個分類器,給定一

機器學習 --- 支援向量的核函式

一、核函式方法的直觀理解 線性向量機地分類效果可能並不是很好,難以分類非線性的問題,這就將引入核函式。 例如在二維平面中,難以通過線性的方法來處理異或問題,但是通過將輸入變數經過核函式 對映到三維空間中,那麼如上圖所示的線性超平面可以完成分類。   線上性不