sklearn中的支援向量機SVM(上)

2021-10-23 06:16:51 字數 1518 閱讀 2733

(1)svm是最接近深度學習的機器學習演算法。線性svm可以看成是神經網路的單個神經元,非線性的svm可以看成兩層的神經網路,非線性svm中如果新增多個核函式,則可以模仿多層的神經網路。

(2)邊際很小時,模型容易在訓練集上表現很好,卻在測試集上表現糟糕,即容易「過擬合」;擁有更大邊際的決策邊界在分類中的泛化誤差較小。因此,我們在尋找決策邊界的時候,希望邊際越大越好。

支援向量機,就是通過找出邊際最大的決策邊界,來對資料進行分類的分類器,因此,支援向量機又叫做最大邊際分類器。

(3)支援向量

過兩類資料中距離我們的決策邊界最近的點,做兩條平行於決策邊界的虛線,這些點就被稱為「支援向量」。

線性svm

非線性svm與核函式

為了找到非線性資料的線性決策邊界,需要將資料從原始空間x對映到新空間φ(x)。φ是乙個對映函式,它代表了某種非線性的變換。

(1)重要引數kernel

我們不清楚什麼樣的資料應該使用什麼型別的對映函式來確保可以在變換空間找出線性決策邊界。

①linear線性核,無引數可調——處理線性資料

②poly多項式核,引數:gamma,degree,coef0——雖然可以處理非線性資料,但更偏向於處理線性問題(這是設定degree=1)

③sigmoid雙曲正切核,引數:gamma,coef0——功能比較弱,很少被用到

④rbf高斯徑向基,引數:gamma——基本在任何資料集上都表現不錯,屬於萬能的核函式。

經驗:首先用rbf核函式,如果效果不好,再試試其他的核函式

(2)探索核函式的優勢和缺陷

svm不能說完全是的距離類模型,但它嚴重受到資料量綱的影響。線性核,尤其是多項式核函式在高此項時計算非常緩慢;rbf和多項式核函式都不擅長處理量綱不統一的資料集。

因此,在svm執行之前,非常推薦先進行資料的無量綱化!

(3)選取與核函式相關的引數:degree&gamma&coef0

無論從數學還是實踐的角度來說,徹底理解這三個引數以及他們如何影響**函式的變化都太過複雜低效,所以我們往往避免去真正**這些引數如何影響了我們的核函式,而是直接使用學習曲線或者網格搜尋來幫助我們查詢最佳的引數組合。

①rbf——畫gamma的學習曲線

②poly——網格搜尋

硬間隔和軟間隔:重要引數c

(1)三種資料集:完全線性可分,非線性資料,不完全線性可分

(2)當兩組資料是完全線性可分,可以找到乙個決策邊界使得訓練集上的分類誤差為0,這兩種資料被稱為是存在「硬間隔」的;當兩組資料幾乎是完全線性可分的,但決策邊界在訓練集上存在較小的訓練誤差,這兩種資料就被稱為是存在「軟間隔」的。

對於軟間隔的資料來說,邊際越大被分錯的樣本就會越多,因此需要找到乙個「最大邊際」和「被分錯的樣本數量」之間的平衡。

(3)引數c用來權衡「訓練樣本的正確分類」與「決策函式的邊際最大化」兩個不可同時完成的目標,希望找出乙個平衡點來讓模型的效果最佳。

如果c值設定比較大,svc可能會選擇邊際小的,能夠更好地分類所有訓練點的決策邊界,不過模型的訓練時間也會更長;如果c的設定值較小,svc會盡量最大化邊界,決策功能會更簡單,代價是訓練的準確度。

sklearn 支援向量機

支援向量機svm support vector machine 市一中用來進行模式識別 分類 回歸的機器學習模型。以乙個客戶好壞分類為案例,客戶資訊如下所示 客戶資訊數軸表示如下所示 以數學表示式對上述資訊進行描述,可以用下式進行表示 然而該方法對於大型資料集容易發生擬合,且過於複雜。因此可以忽略一...

sklearn的機器學習之路 支援向量機(SVM)

什麼是svm 支援向量機就是使用一條直線 二維 或超平面 多維 將資料分成兩類,同時保證離超平面最近的點與超平面的間隔盡可能小。支援向量 離超平面最近的幾個訓練樣本,且滿足 間隔 margin 分類不同的支援向量之間的距離 對偶問題 在求解分類器時過於複雜,為了簡化問題,我們將目標函式和約束函式融入...

支援向量機中SVM演算法 sklearn庫的實現

直接上 了 import numpy as np from sklearn.svm import svc from sklearn.preprocessing import standardscaler from sklearn.model selection import train test s...