【機器學習基礎】支持向量機超參數的可視化解釋

2021-03-02 機器學習初學者

作者 | Soner Yıldırım 

編譯 | VK 

來源 | Towards Datas Science

支持向量機(SVM)是一種應用廣泛的有監督機器學習算法。它主要用於分類任務,但也適用於回歸任務。

在這篇文章中,我們將深入探討支持向量機的兩個重要超參數C和gamma,並通過可視化解釋它們的影響。所以我假設你對算法有一個基本的理解,並把重點放在這些超參數上。

支持向量機用一個決策邊界來分離屬於不同類別的數據點。在確定決策邊界時,軟間隔支持向量機(soft margin是指允許某些數據點被錯誤分類)試圖解決一個優化問題,目標如下:

顯然,這兩個目標之間有一個折衷,它是由C控制的,它為每一個錯誤分類的數據點增加一個懲罰。

如果C很小,對誤分類點的懲罰很低,因此選擇一個具有較大間隔的決策邊界是以犧牲更多的錯誤分類為代價的。

當C值較大時,支持向量機會儘量減少誤分類樣本的數量,因為懲罰會導致決策邊界具有較小的間隔。對於所有錯誤分類的例子,懲罰是不一樣的。它與到決策邊界的距離成正比。

在這些例子之後會更加清楚。讓我們首先導入庫並創建一個合成數據集。

import numpy as np
import pandas as pd

import matplotlib.pyplot as plt
%matplotlib inline

from sklearn.svm import SVC
from sklearn.datasets import make_classification

X, y = make_classification(n_samples=200, n_features=2,
n_informative=2, n_redundant=0, n_repeated=0, n_classes=2,random_state=42)

plt.figure(figsize=(10,6))
plt.title("Synthetic Binary Classification Dataset", fontsize=18)
plt.scatter(X[:,0], X[:,1], c=y, cmap='cool')

我們先訓練一個只需調整C的線性支持向量機,然後實現一個RBF核的支持向量機,同時調整gamma參數。

為了繪製決策邊界,我們將使用Jake VanderPlas編寫的Python數據科學手冊中SVM一章中的函數:https://jakevdp.github.io/PythonDataScienceHandbook/

我們現在可以創建兩個不同C值的線性SVM分類器。

clf = SVC(C=0.1, kernel='linear').fit(X, y)

plt.figure(figsize=(10,6))
plt.title("Linear kernel with C=0.1", fontsize=18)
plt.scatter(X[:, 0], X[:, 1], c=y, s=50, cmap='cool')
plot_svc_decision_function(clf)

只需將C值更改為100即可生成以下繪圖。

當我們增加C值時,間隔會變小。因此,低C值的模型更具普遍性。隨著數據集的增大,這種差異變得更加明顯。

線性核的超參數只達到一定程度上的影響。在非線性內核中,超參數的影響更加明顯。

Gamma是用於非線性支持向量機的超參數。最常用的非線性核函數之一是徑向基函數(RBF)。RBF的Gamma參數控制單個訓練點的影響距離。

gamma值較低表示相似半徑較大,這會導致將更多的點組合在一起。對於gamma值較高的情況,點之間必須非常接近,才能將其視為同一組(或類)。因此,具有非常大gamma值的模型往往過擬合。

讓我們繪製三個不同gamma值的支持向量機的預測圖。

clf = SVC(C=1, kernel='rbf', gamma=0.01).fit(X, y)
y_pred = clf.predict(X)

plt.figure(figsize=(10,6))
plt.title("Predictions of RBF kernel with C=1 and Gamma=0.01", fontsize=18)
plt.scatter(X[:, 0], X[:, 1], c=y_pred, s=50, cmap='cool')
plot_svc_decision_function(clf)

只需更改gamma值即可生成以下繪圖。

隨著gamma值的增加,模型變得過擬合。數據點需要非常接近才能組合在一起,因為相似半徑隨著gamma值的增加而減小。

在gamma值為0.01、1和5時,RBF核函數的精度分別為0.89、0.92和0.93。這些值表明隨著gamma值的增加,模型對訓練集的擬合度逐漸增加。

gamma與C參數

對於線性核,我們只需要優化c參數。然而,如果要使用RBF核函數,則c參數和gamma參數都需要同時優化。如果gamma很大,c的影響可以忽略不計。如果gamma很小,c對模型的影響就像它對線性模型的影響一樣。c和gamma的典型值如下。但是,根據具體應用,可能存在特定的最佳值:

0.0001 < gamma < 10

0.1 < c < 100

參考引用

https://jakevdp.github.io/pythondastaciencemanual/05.07-support-vector-machines.html

原文連結:https://towardsdatascience.com/svm-hyperparameters-explained-with-visualizations-143e48cb701b

相關焦點

  • 支持向量機超參數的可視化解釋
    在這篇文章中,我們將深入探討支持向量機的兩個重要超參數C和gamma,並通過可視化解釋它們的影響。所以我假設你對算法有一個基本的理解,並把重點放在這些超參數上。支持向量機用一個決策邊界來分離屬於不同類別的數據點。
  • 機器學習05:支持向量機2
    上一篇文章介紹了機器學習中支持向量機的基本原理,並且在文章末尾介紹了一種利用Python求解二項規劃問題極值的方法。這篇文章我將利用這種方法一步步求解上文中提及的$-ec{alpha}-$、$-ec{w}-$、$-b-$,藉此複習和驗證支持向量機的知識點。
  • 支持向量機SVM原理(參數解讀和python腳本)
    網易雲課堂報名入口(微信二維碼掃一掃)支持向量機SVM這是線性支持向量機,LSVM非線性SVM可以轉換為多維空間支持向量機支持向量缺點:1.如果數據特徵(維度)大於樣本量,支持向量機表現很差2.支持向量機不提供概率區間估計
  • 從爬蟲到機器學習-淺談支持向量機(SVM)
    作者:劉澤平 來源:人工智慧學習圈支持向量機(SVM)是一個二進位分類模型,其基本模型是線性分類器。SVM還包括核技能,這使其成為實質上的非線性分類器。SVM學習算法是求解凸二次規劃的最佳算法。超平面、支持向量與間隔超平面可以理解為一維空間中的點,二維空間中的線,三維空間中平面的擴展,並且是分類決策的邊界。支持向量機(SVM)設計用於二進位分類任務。這個想法是基於一組訓練樣本D在樣本空間中找到一個分離的超平面,以分離不同類型的樣本。
  • 如何使用支持向量機學習非線性數據集
    支持向量機(SVM)什麼是支持向量機呢?支持向量機是監督機器學習模型,可對數據進行分類分析。實際上,支持向量機算法是尋找能將實例進行分離的最佳超平面的過程。那麼我們如何使用支持向量機來擬合非線性機器學習數據集呢?使用SVM進行實驗創建機器學習數據集首先創建非線性機器學習數據集。
  • 【機器學習基礎】數學推導+純Python實現機器學習算法8-9:線性可分支持向量機和線性支持向量機
    為了處理非線性的情況,在感知機模型的基礎上有了兩個方向,一個就是上一講說到的神經網絡,大家也看到了,現在深度學習大放異彩,各種網絡功能強大。但實際上在神經網絡興起之前,基於感知機的另一種模型——支持向量機,同樣可以解決非線性問題。     支持向量機一般來說有三種任務類型:線性可分情況,近似線性可分情況以及線性不可分情況。
  • 機器學習實戰 | 支持向量機·sklearn 參數詳解
    接上篇的內容「一文帶你了解什麼是支持向量機」,相信大家已經對 SVM 已有些了解,關於 SVM 的公式推導可參考李航《統計學習方法
  • 在深度學習盛行的時代,你仍需知道支持向量機這6大優勢
    20世紀90年代中期,Vapnik和他的AT&T Bell實驗室小組提出了支持向量機算法,該算法以統計學習理論為基礎,採用結構風險最小化準則設計學習機器,較好地解決了非線性、高維數、局部極小點等問題,並具有較好的推廣能力。
  • 想入門機器學習?機器之心為你準備了一份中文資源合集
    機器之心整理參與:機器之心編輯部機器學習日益廣為人知,越來越多的計算機科學家和工程師投身其中。不幸的是,理論、算法、應用、論文、書籍、視頻等信息如此之多,很容易讓初學者迷失其中,不清楚如何才能提升技能。本文作者依據自身經驗給出了一套快速上手的可行方法及學習資源的分類匯總,機器之心在其基礎上做了增益,希望對讀者有所幫助。
  • SVM | 支持向量機原理講解(一)
    (Support Vector Machine,以下簡稱SVM),作為傳統機器學習的一個非常重要的分類算法,它是一種通用的前饋網絡類型,最早是由Vladimir N.Vapnik 和 Alexey Ya.Chervonenkis在1963年提出,目前的版本(soft margin)是Corinna Cortes 和 Vapnik在1993年提出,1995年發表。
  • 從零推導支持向量機 (SVM) | 雷鋒網
    摘要支持向量機 (SVM) 是一個非常經典且高效的分類模型。但是,支持向量機中涉及許多複雜的數學推導,並需要比較強的凸優化基礎,使得有些初學者雖下大量時間和精力研讀,但仍一頭霧水,最終對其望而卻步。本文旨在從零構建支持向量機,涵蓋從思想到形式化,再簡化,最後實現的完整過程,並展現其完整思想脈絡和所有公式推導細節。本文力圖做到邏輯清晰而刪繁就簡,避免引入不必要的概念、記號等。此外,本文並不需要讀者有凸優化的基礎,以減輕讀者的負擔。對於用到的優化技術,在文中均有介紹。
  • 支持向量機
    但是在支持向量機這裡,把參數提到前面,用參數 C 作為 A 的參數,以 A 作為權重。支持向量機的代價函數為:有別於邏輯回歸假設函數輸出的是概率,支持向量機它是直接預測 y 的值是0還是1。也就是說其假設函數是這樣子的:二.
  • 一個簡單的案例帶你了解支持向量機算法(Python代碼)
    相反,「支持向量機」就像一把鋒利的刀—它適用於較小的數據集,但它可以再這些小的數據集上面構建更加強大的模型。現在,我希望你現在已經掌握了隨機森林,樸素貝葉斯算法和模型融合的算法基礎。如果沒有,我希望你先抽出一部分時間來了解一下他們,因為在本文中,我將指導你了解認識機器學習算法中關鍵的高級算法,也就是支持向量機的基礎知識。
  • 支持向量機(SVM)算法總結
    ,同時兼有數度快,支持數據量級大(相對經典機器學習算法)等特點使其在工程實踐中的得到了廣泛的應用。總結一下,支持向量機方法,通常分為如下幾個步驟。1.        首先,對樣本空間利用核函數的方法轉換到能線性可分的空間。2.        然後利用最大化間隔的方法獲取間隔最大的分割線。進而得出支持向量。3.        最後利用分割線和支持向量,可以對新的樣本進行分類預測。
  • 理解支持向量機
    支持向量機是機器學習中最不易理解的算法之一,它對數學有較高的要求。之前SIGAI微信公眾號已經發過「用一張圖理解SVM脈絡」,「理解SVM的核函數和參數」這兩篇文章,今天重啟此話題,對SVM的推導做一個清晰而透徹的介紹,幫助大家真正理解SVM,掌握其精髓。市面上有不少講解支持向量機的文章和書籍,但真正結構清晰、觸達精髓的講解非常少見。
  • sklearn學習(五):支持向量機原理實現及簡單參數優化(附代碼)
    X』與X』』兩點構成了一條在超平面上的向量(X』』-X』),由於垂線垂直於該平面,則說明垂線也垂直於這條向量,我們在用我們曾經學過的互相垂直的向量相乘為0這一定理,推出支持向量機的核心在於他的優化目標,其通俗解釋為找到一條線,使得離最近的點的距離能夠最遠。現在回到我們的距離公式。
  • 25道題檢測你對支持向量機算法的掌握程度
    介紹在我們學習機器算法的時候,可以將機器學習算法視為包含刀槍劍戟斧鉞鉤叉的一個軍械庫。你可以使用各種各樣的兵器,但你要明白這些兵器是需要在合適的時間合理的地點使用它們。作為類比,你可以將「回歸算法」想像成能夠有效切割數據的劍,但無法處理高度複雜的數據。
  • 超詳細支持向量機知識點,面試官會問的都在這裡了
    它的基本思想是在特徵空間中尋找間隔最大的分離超平面使數據得到高效的二分類,具體來講,有三種情況(不加核函數的話就是個線性模型,加了之後才會升級為一個非線性模型):當訓練樣本線性可分時,通過硬間隔最大化,學習一個線性分類器,即線性可分支持向量機;當訓練數據近似線性可分時,引入鬆弛變量,通過軟間隔最大化
  • 支持向量機(SVM)說明及示例
    支持向量機(SVM)可以解決支持分類和回歸問題,這兩個問題的解決都是通過構造函數h來實現的,該函數將輸入向量x與輸出y進行匹配:y = h(x )優缺點優點:該算法可以基於內核對線性和非線性問題的極限進行建模。它對於「過擬合」也非常可行,尤其是在大空間中。
  • 機器學習測試筆記(13)——支持向量機
    2 支持向量機原理支持向量機(Support Vector Machine,以下簡稱SVM),作為傳統機器學習的一個非常重要的分類算法,它是一種通用的前饋網絡類型,最早是由Vladimir深度學習(2012)出現之前,如果不考慮集成學習的算法,不考慮特定的訓練數據集,在分類算法中的表現SVM說是排第一估計是沒有什麼異議的。SVM本來是一種線性分類和非線性分類都支持的二元分類算法,但經過演變,現在也支持多分類問題,也能應用到了回歸問題。一些線性不可分的問題可能是非線性可分的,即特徵空間存在超曲面(hypersurface)將正類和負類分開。