支援向量機例項講解

2022-03-15 21:34:09 字數 2899 閱讀 5489

支援向量機例項講解

簡介掌握機器學習演算法不再是天方夜譚的事情。大多數初學者都是從回歸模型學起。雖然回歸模型簡單易學易上手,但是它能解決我們的需求嗎?當然不行!因為除了回歸模型外我們還可以構建許多模型。

我們可以把機器學習演算法看成包含劍、鋒刃、弓箭和匕首等**的兵器庫。你擁有各式各樣的工具,但是你應該在恰當的時間點使用它們。比如,我們可以把回歸模型看做「劍」,它可以非常高效地處理切片資料,但是它卻無法應對高度複雜的資料。相反的是,「支援向量機模型」就像一把尖刀,它可以更好地對小資料集進行建模分析。

到目前為止,我希望你已經掌握了隨機森林、樸素貝葉斯演算法和整合建模方法。不然的話,我建議你應該花一些時間來學習這些方法。本文中,我將會介紹另外乙個重要的機器學習演算法——支援向量機模型。

目錄什麼是支援向量機模型?

支援向量機模型執行原理

如何利用 python 實現 svm?

如何調整 svm 的引數?

svm 的優缺點

什麼是支援向量機模型?

支援向量機(svm)是一種有監督學習的演算法,它可以用來處理分類和回歸的問題。然而,實際應用中,svm 主要用來處理分類問題。在這個演算法中,首先我們將所有點畫在乙個 n 維空間中(其中 n 代表特徵個數)。然後我們通過尋找較好區分兩類樣本的超平面來對資料進行分類處理(如下圖所示)。

支援向量是觀測值的座標,支援向量機是隔離兩個類別的最佳邊界(超平面)。

你可以在這裡看到關於支援向量的定義和一些例項。

(支援向量機的執行原理

首先,我們已經熟悉了如何利用超平面來區分兩個類別的資料。如今急需解決的問題是:「如何找出最佳的超平面?」不要擔心,它沒有你所想的那麼困難!

讓我們來看幾個例子:

場景一:首先,我們有三個超平面(a、b 和 c)。現在我們需要的是找出區分星星和圓圈的最佳超平面。

你需要記住乙個識別最佳超平面的經驗法則:「選擇能更好區分兩個類別的超平面。」在這個例子中,超平面「b」是最佳分割平面。

場景二:首先我們有三個超平面(a、b 和 c),它們都很好地區分兩個類別的資料。那麼我們要如何選出最佳的超平面呢?

在這裡,我們可以通過最大化超平面和其最近的各個類別中資料點的距離來尋找最佳超平面。這個距離我們稱之為邊際距離。

從上圖中你可以看到超平面 c 的邊際距離最大。因此,我們稱 c 為最佳超平面。選擇具有最大邊際距離的超平面的做法是穩健的。如果我們選擇其他超平面,將存在較高的錯分率。

場景三:利用之前章節提到的規則來識別最佳超平面

或許你們會選擇具有較大邊際距離的超平面 b。但是你們錯了,svm 選擇超平面時更看重分類的準確度。在上圖中,超平面 b 存在乙個錯分點而超平面 a 的分類則全部正確。因此,最佳超平面是 a。

場景四:由於存在異常值,我們無法通過一條直線將這兩類資料完全區分開來。

正如我之前提到的,另一端的星星可以被視為異常值。svm 可以忽略異常值並尋找具有最大邊際距離的超平面。因此,我們可以說 svm 模型在處理異常值時具有魯棒性。

場景五:在這個場景中,我們無法通過線性超平面區分這兩類資料,那麼 svm 是如何對這種資料進行分類的呢?

svm 模型可以非常容易地解決這個問題。通過引入新的變數資訊,我們可以很容易地搞定這個問題。比如我們引入新的變數

然後我們對 x 和 z 構建散點圖:

從上圖中我們可以看出:

在 svm 模型中,我們可以很容易地找到分割兩類資料的線性超平面。但是另外乙個急需解決的問題是:我們應該手動增加變數資訊從而獲得該線性超平面分割嗎?答案是否定的!svm 模型有乙個工具叫做 kernel trick。該函式可以將輸入的低維空間資訊轉化為高維空間資訊。在解決非線性分割問題時,我們經常用到這個函式。簡單地說,該函式可以轉換一些極其複雜的資料,然後根據自己所定義的標籤或輸出結果尋找區分資料的超平面。

我們可以在原始圖中畫出最佳超平面:

接下來,我們將學習如何將 svm 模型應用到實際的資料科學案例中。

如何利用 python 實現 svm 模型?

在 python 中,scikit-learn 是乙個被廣泛使用的機器學習演算法庫。我們可以通過 scikit-learn 庫來構建 svm 模型。

如何調整 svm 模型的引數?

有效地調節機器學習演算法的引數可以提高模型的表現力。讓我們來看看 svm 模型的可用引數列表:

接下來我將要討論 svm 模型中一些比較重要的引數:「kernel」,「gamma」和「c」。

kernel:我們之前已經討論過這個問題。kernel引數中具有多個可選項:「linear」,「rbf」和「poly」等(預設值是「rbf」)。其中 「rbf」和「poly」通常用於擬合非線性超平面。下面是乙個例子:我們利用線性核估計­對鳶尾花資料進行分類。

例子:線性核估計

例子:rbf 核估計

我們可以通過下面的**呼叫 rbf 核估計,並觀察其擬合結果。

當變數個數比較大時(大於1000),我建議你最好使用線性核估計,因為在高維空間中資料大多是線性可分的。當然你也可以利用 rbf 核估計,不過你必須使用交叉驗證調整引數從而避免過度擬合。

「gamma」:「rbf」,「poly」和「sigmoid」的核估計係數。gamma的取值越大,越容易出現過度擬合的問題。

例子:比較不同gamma取值下模型的擬合結果

c:誤差項的懲罰引數。我們可以通過調節該引數達到平衡分割邊界的平滑程度和分類準確率的目的。

我們應該經常關注交叉驗證結果從而有效地利用這些引數的組合避免過度擬合情況的問題。

svm 模型的優缺點

它的分類效果非常好。

它可以有效地處理高維空間資料。

它可以有效地處理變數個數大於樣本個數的資料。

它只利用一部分子集來訓練模型,所以 svm 模型不需要太大的記憶體。

它無法很好地處理大規模資料集,因為此時它需要較長的訓練時間。

同時它也無法處理包含太多雜訊的資料集。

svm 模型並沒有直接提供概率估計值,而是利用比較耗時的五倍交叉驗證估計量。

結語翻譯:fibears

支援向量機專題 線性支援向量機

原文 當資料線性不可分時,使用硬間隔支援向量機很難得到理想的結果。但是如果資料近似線性可分,可以採用軟間隔支援向量機 線性支援向量機 進行分類。這通常適用於有少量異常樣本的分類,如果使用線性支援向量機,它會盡量使得所有訓練樣本都正確,如下圖所示。顯然這並不是最好的結果,軟間隔支援向量機可以權衡 間隔...

支援向量機

支援向量機 svm 一種專門研究有限樣本 的學習方法。是在統計學習理論基礎之上發展而來的。沒有以傳統的經驗風險最小化原則作為基礎,而是建立在結構風險最小化原理的基礎之上,發展成為一種新型的結構化學習方法。結構風險最小歸納原理 解決了有限樣本或小樣本的情況下獲得具有優異泛化能力的學習機器。包含了學習的...

支援向量機

支援向量 與分離超平面距離最近的樣本點的例項 優點 泛化錯誤率低,計算開銷不大,結果易解釋 缺點 對引數調節和核函式選擇敏感,原始分類器不加修改僅適用於處理二分類問題 適合資料型別 數值型和標稱型資料 每次迴圈中選擇兩個alpha進行優化處理。一旦找到一對合適的alpha,那麼久增大其中乙個同時減小...