標籤(空格分隔): 數據分析
SVM 是有監督的學習模型,我們需要事先對數據打上分類標籤,通過求解最大分類間隔來求解二分類問題。如果要求解多分類問題,可以將多個二分類器組合起來形成一個多分類器。
如何創建一個 SVM 分類器呢?我們首先使用 SVC 的構造函數:model = svm.SVC(kernel=‘rbf’, C=1.0, gamma=‘auto’),這裏有三個重要的參數 kernel、C 和 gamma。kernel 代表核函數的選擇,它有四種選擇,只不過默認是 rbf,即高斯核函數。
- linear:線性核函數
- poly:多項式核函數
- rbf:高斯核函數(默認)
- sigmoid:sigmoid 核函數
線性核函數,是在數據線性可分的情況下使用的,運算速度快,效果好。不足在於它不能處理線性不可分的數據。
多項式核函數可以將數據從低維空間映射到高維空間,但參數比較多,計算量大。
高斯核函數同樣可以將樣本映射到高維空間,但相比於多項式核函數來說所需的參數比較少,通常性能不錯,所以是默認使用的核函數。
瞭解深度學習的同學應該知道 sigmoid 經常用在神經網絡的映射中。因此當選用 sigmoid 核函數時,SVM 實現的是多層神經網絡。
參數 C 代表目標函數的懲罰係數,懲罰係數指的是分錯樣本時的懲罰程度,默認情況下爲 1.0。當 C 越大的時候,分類器的準確性越高,但同樣容錯率會越低,泛化能力會變差。相反,C 越小,泛化能力越強,但是準確性會降低。
參數 gamma 代表核函數的係數,默認爲樣本特徵數的倒數,即 gamma = 1 / n_features。