SVM發展史

線性SVM=線性分類器+最大間隔
間隔(margin):邊界的活動范圍,The margin of a linear classifier is defined as the width that the boundary could be increased by before hitting a data point.
預備知識
- 線性分類器的分割平面(超平面):
Wx+b=0 - 點到超平面的距離:\(M=\frac{ \vert g(x) \vert }{\left\|W\right\| }\),其中\(g(x)=Wx+b\)
- SVM中正樣本定義為g(x)>=1,負樣本定義為g(x)<=-1
- SVM中Wx+b=1或者Wx+b=-1的點稱為支持向量
間隔的形式化描述
\(M=\frac{2}{\left\|W\right\| }\)

SVM通過最大化M來求解引數W和b的,目標函式如下:
求解 :拉格朗日乘數法,偏導為0后回帶
在SVM中,原問題和對偶問題具有相同的解,W已經求出:\(W=\sum_{i=1}^{l}{\alpha_iy_ix_i}\), 不等式約束,還需要滿足KKT條件,若\(\alpha_i>0\),則必有xi為支持向量,即:訓練完畢后,最終模型僅和支持向量有關,
b的求解程序如下
一個實體
軟間隔:加入容錯量
同樣采用拉格朗日乘數法求解
LD的區別僅僅體現為\(\alpha_i\)的約束不同,
非線性SVM:特征空間
通過映射到高維空間來將線性不可分的問題轉換為線性可分的問題,
高維空間向量內積運算復雜度高,以二次型為例,直接計算
\(x_i?x_j?Φ(x_i)?Φ(x_j)\),直接計算的話,復雜度會成倍增加,
以二次型為例,理解核技巧
通過在低維空間的計算o(m),得到高維空間的結果,不需要知道變換是什么,更不需要變換結果的內積,只需要知道核函式,就可以達到相同的目標,(變換結果的內積)
請看實體,二維空間
常用的核函式
多項式變換中,當d=2時,就是二次型變換,
此時w和b的結果如下:
將\(x_i\)換為\(\phi(x_i)\),將\(\phi(x_i)\cdot \phi(x_j)\)換為\(K(x_i,x_j)\),其余都不變,真的很簡潔,
SVM在Scikit-Learn中的應用
- Linear SVM:\(min\frac{1}{2}\left\|w\right\|^2+C\sum{\zeta^2}\)
LinearSVC(
penalty='l2',
C=1.0,#就是目標函式的C,C越大(eg:1e9),容錯空間越小,越接近硬邊界的SVM(最初的SVM,基本不用),C越小(eg:C=0.01),容錯空間越大,越接近soft Magin.
)
- 核函式 SVM:
from sklearn.svm import SVC
SVC(
C=1.0,
kernel='rbf',
degree=3,#多項式核函式的指數d
gamma='scale',#高斯基函式中的引數gamma,越大,函式分布越狹窄; gamma越小,決策邊界越松弛,當很小時,可以認為趨于無窮大成一條直線了,這時就欠擬合了,gamma取值越大,決策邊界越收緊,當很小時,會無限包緊樣本點,這時就過擬合了,
)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/152944.html
標籤:Python
