更新時(shí)間:2023年07月28日10時(shí)40分 來(lái)源:傳智教育 瀏覽次數(shù):
SVM具有良好的魯棒性,對(duì)未知數(shù)據(jù)擁有很強(qiáng)的泛化能力,特別是在數(shù)據(jù)量較少的情況下,相較其他傳統(tǒng)機(jī)器學(xué)習(xí)算法具有更優(yōu)的性能。
使用SVM作為模型時(shí),通常采用如下流程:
1. 對(duì)樣本數(shù)據(jù)進(jìn)行歸一化。
2. 應(yīng)用核函數(shù)對(duì)樣本進(jìn)行映射(最常采用和核函數(shù)是RBF和Linear,在樣本線性可分時(shí),Linear效果要比RBF好)。
3. 用cross-validation和grid-search對(duì)超參數(shù)進(jìn)行優(yōu)選。
4. 用最優(yōu)參數(shù)訓(xùn)練得到模型。
5. 測(cè)試
sklearn中支持向量分類主要有三種方法:SVC、NuSVC、LinearSVC,擴(kuò)展為三個(gè)支持向量回歸方法:SVR、NuSVR、LinearSVR。
SVC和NuSVC方法基本一致,唯一區(qū)別就是損失函數(shù)的度量方式不同
• NuSVC中的nu參數(shù)和SVC中的C參數(shù);
• LinearSVC是實(shí)現(xiàn)線性核函數(shù)的支持向量分類,沒有kernel參數(shù)。
SVC
class sklearn.svm.SVC(C=1.0, kernel='rbf', degree=3,coef0=0.0,random_state=None)
C: 懲罰系數(shù),用來(lái)控制損失函數(shù)的懲罰系數(shù),類似于線性回歸中的正則化系數(shù)。
C越大,相當(dāng)于懲罰松弛變量,希望松弛變量接近0,即對(duì)誤分類的懲罰增大,趨向于對(duì)訓(xùn)練集全分對(duì)的情況,這樣會(huì)出現(xiàn)訓(xùn)練集測(cè)試時(shí)準(zhǔn)確率很?,但泛化能力弱,容易導(dǎo)致過(guò)擬合。
C值小,對(duì)誤分類的懲罰減小,容錯(cuò)能力增強(qiáng),泛化能力較強(qiáng),但也可能欠擬合。
kernel: 算法中采用的核函數(shù)類型,核函數(shù)是用來(lái)將非線性問題轉(zhuǎn)化為線性問題的?種方法。
參數(shù)選擇有RBF, Linear, Poly, Sigmoid或者自定義一個(gè)核函數(shù)。
默認(rèn)的是"RBF",即徑向基核,也就是高斯核函數(shù);
而Linear指的是線性核函數(shù),
Poly指的是多項(xiàng)式核,
Sigmoid指的是雙曲正切函數(shù)tanh核;。
degree:
當(dāng)指定kernel為'poly'時(shí),表示選擇的多項(xiàng)式的最高次數(shù),默認(rèn)為三次多項(xiàng)式;
若指定kernel不是'poly',則忽略,即該參數(shù)只對(duì)'poly'有用。
多項(xiàng)式核函數(shù)是將低維的輸入空間映射到高維的特征空間。
coef0: 核函數(shù)常數(shù)值(y=kx+b中的b值), 只有‘poly’和‘sigmoid’核函數(shù)有,默認(rèn)值是0。
NuSVC
class sklearn.svm.NuSVC(nu=0.5)
nu: 訓(xùn)練誤差部分的上限和?持向量部分的下限,取值在(0,1)之間,默認(rèn)是0.5
LinearSVC
class sklearn.svm.LinearSVC(penalty='l2', loss='squared_hinge', dual=True, C=1.0)
penalty:正則化參數(shù),L1和L2兩種參數(shù)可選,僅LinearSVC有。
loss:損失函數(shù),
有hinge和squared_hinge兩種可選,前者?稱L1損失,后者稱為L(zhǎng)2損失,默認(rèn)是squared_hinge,
其中hinge是SVM的標(biāo)準(zhǔn)損失,squared_hinge是hinge的平方
dual:是否轉(zhuǎn)化為對(duì)偶問題求解,默認(rèn)是True。
C:懲罰系數(shù),
用來(lái)控制損失函數(shù)的懲罰系數(shù),類似于線性回歸中的正則化系數(shù)
北京校區(qū)