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