sklearn svm 调参_SVM(Support Vector Machine)
SVM是一種二元分類模型(當(dāng)然它也可以處理回歸問題),它通過訓(xùn)練樣本尋找分隔兩類樣本的最優(yōu)決策邊界(超平面),使得兩類樣本距離決策邊界的距離最遠(yuǎn)(例如H3)。其中距離決策邊界最近的樣本稱為支持向量(即深色的蘋果和香蕉),支持向量所在的與決策平面平行的平面稱為支撐平面(虛線),支撐平面與決策平面的距離稱為間隔(margin),SVM尋找最優(yōu)決策邊界實際上就是要最大化(最大可信度)兩個支撐平面的間隔(決策平面位于兩者的中間)。
SVM 模型根據(jù)數(shù)據(jù)集的差異可以分為三種類型:
線性可分 => 硬間隔最大化 => 線性可分SVM
線性不可分(有噪音)=> 軟間隔最大化 => 線性 SVM(引入松弛變量和懲罰函數(shù))
非線性可分 => 軟間隔最大化 + 核函數(shù) => 非線性 SVM
一、線性可分(硬間隔最大化)
假設(shè)決策超平面為: W·X + b = 0
正類支撐平面為: W·X + b = γ
由對稱關(guān)系可知負(fù)類支撐平面為: W·X + b = -γ
由于平面等比例縮放依然屬于同一平面, 即 5W·X + 5b = 5 與 W·X + b = 1 是同一個平面
所以前面的假設(shè)可以更簡潔地表示為(按γ等比例縮放):
決策平面: W·X + b =0
正類的支撐平面: W·X + b = 1
負(fù)類的支撐平面: W·X + b = -1
要求滿足以下規(guī)則:
計算兩個支撐平面的距離(margin)
由兩平面距離公式可知,平面 W·X + b + 1 = 0 與平面 W·X + b -1 = 0的距離為:
所以要最大化margin相當(dāng)于要最小化 ||w|| 即等價于:
最終的優(yōu)化問題(目標(biāo)函數(shù))變成:
二、線性不可分(軟間隔最大化)
當(dāng)訓(xùn)練數(shù)據(jù)含有噪音數(shù)據(jù)時,如果進(jìn)行硬間隔最大化可能會導(dǎo)致間隔過小甚至無法求解。
此時我們引入松弛變量(Slack Variable)ξ (epsilon ξ≥0) ,將原來的不等式約束變?yōu)?#xff1a;
松弛變量相當(dāng)于為支撐平面提供了一個容錯的區(qū)間,允許噪音數(shù)據(jù)存在(誤分類樣本),當(dāng)松弛變量越大那么容錯范圍越大,反之,當(dāng)ξ=0,等價于硬間隔最大化。當(dāng)然我們不能無限制地容錯,為了調(diào)和“間隔最大化”和“區(qū)分最大化”我們引入懲罰參數(shù)C,目標(biāo)函數(shù)變成:
說明:相當(dāng)于將“經(jīng)驗風(fēng)險最小化問題”轉(zhuǎn)變?yōu)橐肓酥眯棚L(fēng)險的“結(jié)構(gòu)風(fēng)險最小化問題”
說明:ξ_i≥0 與 hinge loss:max(0,1-y_i (w^T x_i+b)) 實際上是等價的。
當(dāng)C 越大,模型對誤分類的懲罰越大,相當(dāng)于分類更精確,但同時會犧牲間隔距離,可能導(dǎo)致過擬合。
當(dāng)C 越小,模型對誤分類的懲罰越少,相當(dāng)于更傾向于間隔距離最大化以提升泛化能力,但同時犧牲了分割性,可能導(dǎo)致欠擬合。
構(gòu)造廣義拉格朗日函數(shù)
由于第一步針對α和β的最大化含有約束條件,為了更方便求解問題,我們將求解原問題轉(zhuǎn)化為求解其對偶問題(由于滿足KKT條件所以對偶問題的解與原問題的解相等),即拉格朗日極大極小值問題:
分別對w、b、ξ 求偏導(dǎo)等于0得:
代入L消除w、b、ξ、β 得問題的最終表達(dá)式
通過SMO算法求解α的最優(yōu)解(將大優(yōu)化問題,分解為多個小優(yōu)化問題即只有兩個變量的二次規(guī)劃子問題)
求得最優(yōu) α* 后可以求得對應(yīng)的w* 、b*:
所以可知決策函數(shù)為:
備注:因為α_i*g(w,b,ξ)=0 所以只有當(dāng)g = 0時(樣本為支持向量),α>0,其余情況α=0,因此決策函數(shù)只與支持向量有關(guān)。
三、非線性可分
有時候數(shù)據(jù)集可能是非線性可分的,此時需要將原始特征映射φ到更高維的特征空間,使得樣本在高維特征空間內(nèi)線性可分,然后通過學(xué)習(xí)線性分類器的方法找到高維空間下的分類超平面。
然而直接將原始特征映射到高維特征再進(jìn)行計算并不容易,當(dāng)原始特征非常多時,映射后的維數(shù)也會非常高,此時計算量會非常大,甚至出現(xiàn)“維數(shù)災(zāi)難”,為了避免直接在高維空間進(jìn)行計算,我們引入核函數(shù)解決。
K(x,y)=
核函數(shù)的作用:在低維空間的計算結(jié)果與映射到高維空間后的表現(xiàn)等效,核函數(shù)可以理解為對高維空間的一種隱式映射。
例子:x = (x1, x2, x3); y = (y1, y2, y3).
定義映射 φ(x) = (x1x1, x1x2, x1x3, x2x1, x2x2, x2x3, x3x1, x3x2, x3x3), 將3維映射到9維
定義核函數(shù)K(x, y ) = ()2.
假設(shè) x = (1, 2, 3); y = (4, 5, 6). 那么
φ(x) = (1, 2, 3, 2, 4, 6, 3, 6, 9)
φ(y) = (16, 20, 24, 20, 25, 30, 24, 30, 36)
= 16 + 40 + 72 + 40 + 100+ 180 + 72 + 180 + 324 = 1024
使用核函數(shù)快速計算:
K(x, y) = (4+10+8)2= 322 = 1024
引入核函數(shù)后的目標(biāo)函數(shù)變?yōu)?#xff1a;
決策函數(shù):
四、常用核函數(shù)
線性核
徑向基函數(shù)核(RBF,SVM最常用的核函數(shù))
備注:γ決定RBF核的非線性程度,γ越大,分類邊界的非線性表達(dá)能力越突出,但可能導(dǎo)致過擬合,相反,γ越小,分類邊界越傾向于線性邊界,即更接近低維空間。這就是為什么sklearn的SVM中,gamma默認(rèn)是1/n_features,因為特征越多,越能線性可分,所以核函數(shù)的非線性能力相應(yīng)可以降低。
多項式核(Polynomial kernel,多用于NLP問題)
五、SVM調(diào)參方式
以RBF-SVM為例,主要涉及懲罰參數(shù)C和核參數(shù)γ。常用的調(diào)參方式是基于交叉驗證的網(wǎng)格搜索(GridSearchCV),即嘗試不同的(C,γ)組合,選擇交叉驗證精度最高的組合作為最優(yōu)參數(shù)。
六、多分類(one vs one):
將k個類進(jìn)行兩兩配對,產(chǎn)生k(k-1)/2個分類器(只需在對應(yīng)兩類的樣本中進(jìn)行訓(xùn)練),所有分類器對新樣本進(jìn)行預(yù)測,得票最多的類別為預(yù)測分類結(jié)果。
七、SVM優(yōu)點
泛化能力強(qiáng)(優(yōu)化目標(biāo)是結(jié)構(gòu)風(fēng)險最小化,即具有正則項,能有效防止過擬合)
通過核函數(shù)對高維空間的隱式映射,能有效解決非線性問題。
八、SVM缺點
對于大規(guī)模數(shù)據(jù)訓(xùn)練,由于計算量較大,訓(xùn)練效率較低。(究其根本,核化的SVM本身的時間復(fù)雜度 O(nm^2) 就是二次時間,m是樣本數(shù),n是特征數(shù)。當(dāng)數(shù)據(jù)量較大的時候,還面臨空間復(fù)雜度的問題,cache的儲存可能不夠)
模型解釋性較弱,無法給出概率結(jié)果。
本身是一個二分類模型,對于多分類問題比較乏力,需要采用one vs one, one vs all。
對于非線性問題,核函數(shù)的選擇以及調(diào)參比較麻煩。
九、應(yīng)用場景
小樣本、非線性、高維
十、SVM與邏輯回歸的比較
邏輯回歸收斂于任何可以將樣本分隔的決策邊界(雖然是最大似然估計,但本質(zhì)關(guān)心的只是會不會發(fā)生),而SVM則選擇間隔最大化的分界作為決策邊界,這通常意味著SVM具有更好的泛化能力
SVM可以通過引入非線性核解決非線性問題
SVM(尤其是核化的SVM)相比邏輯回歸需要更大的計算成本
SVM 無法直接給出概率解釋(需要通過代價高昂的五折交叉驗證方法計算概率),邏輯回歸可以直接給出概率解釋。
十一、算法選擇
特征數(shù)很大(特征≥10000,或接近樣本數(shù)):使用邏輯回歸或者線性核SVM
特征數(shù)少,樣本數(shù)適中(特征≤1000,樣本≤10000):使用RBF-SVM
特征數(shù)少,但樣本數(shù)很大:增加特征,然后使用邏輯回歸或線性核SVM
注意: SVM對特征縮放敏感,所以必須要對特征進(jìn)行歸一化或標(biāo)準(zhǔn)化處理。因為SVM是一種跟距離計算有關(guān)的模型,如果不進(jìn)行特征縮放,那么具有較大范圍值的特征對距離的影響會比其他特征更大,另外核函數(shù)往往涉及向量內(nèi)積的計算,特征縮放可以有效避免數(shù)值問題(溢出)
轉(zhuǎn)載請注明出處:
總結(jié)
以上是生活随笔為你收集整理的sklearn svm 调参_SVM(Support Vector Machine)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 第一次使用信用卡要什么时候还
- 下一篇: 小数点化分数的过程_分数和小数的互化