scikit-learn--SVM(支持向量機(jī))

SVM是一種用于分類、回歸和異常值探測(cè)的有監(jiān)督學(xué)習(xí)方法。

SVM的優(yōu)點(diǎn):在高維空間有效;在樣本維度比樣本數(shù)量多的情況下有效;支持向量使用了訓(xùn)練數(shù)據(jù)的子集,記憶有效;用途廣泛:判定函數(shù)可以使用不同的核函數(shù)。

SVM的不足:特征數(shù)比樣本數(shù)多很多的情況下,表現(xiàn)較差;不能直接給出估計(jì)概率,需要通過(guò)5折交叉驗(yàn)證(five-fold cross-validation).

在sklearn中,SVM支持密集矩陣(numpy.ndarray)和稀疏矩陣(scipy.sparse)作為輸入。However, to use an SVM to make predictions for sparse data, it must have been fit on such data,為了得到最佳性能,使用dtype=float64的numpy.adarray 或者scipy.sparse.csr_matrix 。


分類

SVC,NuSVC和LinearSVC可以用于多類分類。

SVC和NuSVC是相似的方法,但是接受不同的參數(shù)并且有不同的數(shù)學(xué)公式;LinearSVC是有線性核的支持分類器。和其他分類器一樣,SVC,NuSVC和LinearSVC的輸入包括訓(xùn)練樣本數(shù)組以及對(duì)應(yīng)的標(biāo)記數(shù)組。

多類分類

SVC和NuSVC使用“one-against-one”方法,如果有n類,每?jī)深愔g建立一個(gè)分類器,共需要建立 n(n-1)/2 個(gè)分類器。LinearSVC使用 "one-vs -the -rest"策略,如果有n類,將 其中n-1類歸為一類,建立 n 個(gè)分類器。

小提示

1.避免數(shù)據(jù)拷貝:對(duì)于SVC、SVR、NuSVC、NuSVR,在運(yùn)行前需要將數(shù)據(jù)轉(zhuǎn)換為C-ordered contiguous;對(duì)于LinearSVC和LogisticRegression,任何輸入都將拷貝并且轉(zhuǎn)化為稀疏矩陣,如果不是用密集矩陣作為輸入來(lái)做大規(guī)模的線性分類,最好使用SGDClassifier。

2.核緩存大小:對(duì)于SVC、SVR,NuSVC、NuSVR,核緩存的大小嚴(yán)重影響運(yùn)行時(shí)間,在可能的情況下,不要使用默認(rèn)設(shè)置 cache_size=200 (MB),設(shè)置為500或者1000比較好。

3.設(shè)置C值:C(懲罰因子)默認(rèn)設(shè)置為1,如果有較多的異常觀察值,最好降低C的值,它關(guān)系到估計(jì)的正則化。

4.標(biāo)準(zhǔn)化輸入數(shù)據(jù)。

5.NuSVC、OneClassSVM、NuSVM中的參數(shù) nu ,近似等于訓(xùn)練誤差和支持向量的百分比,取值范圍(0,1),一般?。?.1,0.8),代表樣本落入間隔內(nèi)的最小數(shù)目,即預(yù)測(cè)錯(cuò)誤的比例。(The main motivation for the nu versions of SVM is that it has a has a more meaningful interpretation. This is because nu represents an upper bound on the fraction of training samples which are errors (badly predicted) and a lower bound on the fraction of samples which are support vectors. Some users feel nu is more intuitive to use than C or epsilon.)

6.在SVC中,如果是不平衡樣本,設(shè)置 class_weight='balanced' 嘗試用不同的C值來(lái)訓(xùn)練數(shù)據(jù)。

7.LinearSVC在擬合模型時(shí)隨機(jī)選取了特征,這導(dǎo)致相同的數(shù)據(jù)會(huì)得到不同的結(jié)果,可以嘗試小一點(diǎn)的 tol 參數(shù);

8.LinearSVC 中使用 L1 范數(shù)將得到稀疏的結(jié)果,即只有一部分特征對(duì)判別函數(shù)有貢獻(xiàn);增加C的值將得到一個(gè)更加復(fù)雜的模型,因?yàn)檫x擇了更多的特征;可以使用 sklearn.svm.l1_min_c 計(jì)算最小C值。


來(lái)源:scikit-learn.org/stable/modules/svm.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容