支持向量機SVM原理(參數(shù)解讀和python腳本)

支持向量機SVM


這是線性支持向量機,LSVM

margin
margin值越大越好,因為margin值越大,空間區(qū)分兩組數(shù)據(jù)效果越好,margin值越小,空間區(qū)分兩組數(shù)據(jù)效果越差


margin值最大的向量空間最好

lagrange multipliers拉格朗日乘數(shù)法是解決支持向量機margin最大值方法
在數(shù)學(xué)最優(yōu)問題中,拉格朗日乘數(shù)法(以數(shù)學(xué)家約瑟夫·路易斯·拉格朗日命名)是一種尋找變量受一個或多個條件所限制的多元函數(shù)的極值的方法。這種方法將一個有n 個變量與k 個約束條件的最優(yōu)化問題轉(zhuǎn)換為一個有n + k個變量的方程組的極值問題,其變量不受任何約束。這種方法引入了一種新的標(biāo)量未知數(shù),即拉格朗日乘數(shù):約束方程的梯度(gradient)的線性組合里每個向量的系數(shù)。 [1] 此方法的證明牽涉到偏微分,全微分或鏈法,從而找到能讓設(shè)出的隱函數(shù)的微分為零的未知數(shù)的值。
支持向量優(yōu)點
1.支持多維空間
2.不同核函數(shù)用于不同決策函數(shù)

支持多維空間

非線性SVM可以轉(zhuǎn)換為多維空間支持向量機

支持向量缺點:
1.如果數(shù)據(jù)特征(維度)大于樣本量,支持向量機表現(xiàn)很差
2.支持向量機不提供概率區(qū)間估計

優(yōu)點:可處理多維度數(shù)據(jù)分類,小樣本數(shù)據(jù)可以工作
缺點:找到準(zhǔn)確的核函數(shù)和C參數(shù),gamma參數(shù)需要很大計算量

優(yōu)點:靈活,處理低維度和高維度數(shù)據(jù),高維度數(shù)據(jù)小樣本量表現(xiàn)良好
缺點:高維度,大樣本表現(xiàn)較差,需要數(shù)據(jù)預(yù)處理和調(diào)參
很難監(jiān)控和可視化
另外推薦算法:決策樹和隨機森林(方便可視化,監(jiān)控,容易理解)

通過核函數(shù),非線性空間可以轉(zhuǎn)換為線性空間

支持向量應(yīng)用積極廣泛

python腳本應(yīng)用
區(qū)分兩種蛋糕,根據(jù)奶油和糖兩種成分,首先數(shù)據(jù)可視化



C 參數(shù)
C參數(shù)表示,你懲罰錯誤分類點的力度

sklearn默認(rèn)C參數(shù)是1

C參數(shù)設(shè)置小,算法復(fù)雜度小,C參數(shù)高,追求錯誤率最低

支持多個分層
python代碼實現(xiàn)分多類,decision_function_shape="ovr"
核函數(shù)
通過核函數(shù),二維數(shù)據(jù)難以分類的可以轉(zhuǎn)換為多維函數(shù),然后分類
python代碼kernel函數(shù)設(shè)置
gamma越高,復(fù)雜度越高
其它機器學(xué)習(xí)分類算法
decision_function
SVM分割超平面的繪制與SVC.decision_function( )的功能
https://blog.csdn.net/qq_33039859/article/details/69810788?locationNum=3&fps=1
在李航老師的《統(tǒng)計學(xué)習(xí)方法》— 支持向量機那章有個例題:?
樣本點x1=(3,3),x2=(4,3),x3=(1,1),labels=(1,1,?1)
先說decision_function()的功能:計算樣本點到分割超平面的函數(shù)距離。?
沒錯,是函數(shù)距離(將幾何距離,進行了歸一化,具體看書)
將x1=(3,3),x2=(4,3),x3=(1,1),labels=(1,1,?1)
decision_function()的功能:計算樣本點到分割超平面的函數(shù)距離,分割超平面一邊數(shù)據(jù)是正數(shù),一邊是負(fù)數(shù),如果是二分類,正數(shù)代表一類,負(fù)數(shù)代表另一類

乳腺癌python腳本
此腳本包括參數(shù)設(shè)置,自動調(diào)優(yōu),數(shù)據(jù)規(guī)范化,概率計算,分類預(yù)測等等

SVM分類
核方法
用于產(chǎn)生非線性分類邊界。?
linear,線性核,會產(chǎn)生線性分類邊界,一般來說它的計算效率最高,而且需要數(shù)據(jù)最少。線性函數(shù)。
poly,多項式核,會產(chǎn)生多項式分類邊界。多項式函數(shù)。
rbf,徑向基函數(shù),也就是高斯核,是根據(jù)與每一個支持向量的距離來決定分類邊界的,它能映射到無限維,是最靈活的方法,但是也需要最多的數(shù)據(jù)。容易產(chǎn)生過擬合問題。指數(shù)函數(shù)。
多分類器?
采用”one vs one”,在任意兩個樣本之間設(shè)計一個SVM,k個類別的樣本設(shè)計k(k-1)/2個svm,當(dāng)對一個未知樣本進行分類時,最后得票最多的類別即為該未知樣本的類別。?
線性支持向量分類器(LinearSVC):相比于svm.SVC,使用了不同的算法,在某些數(shù)據(jù)集(比如稀疏數(shù)據(jù)集,文本挖掘)上運行得更快,對于多分類采用的就是”one vs all”的策略
支持向量
就是最靠近分離邊界的樣本點,它們是二分類問題中最具有代表性的點。支持向量的坐標(biāo)可以通過方法support_vectors_來找到。
正則化
只考慮支持向量。使模型在處理樣本特征的時候變得更加簡單。?
正則項可以通過調(diào)整系數(shù)C來決定
默認(rèn)參數(shù)C=1,對于很多數(shù)據(jù)集,默認(rèn)值就能工作的很好。?
實踐經(jīng)驗:對許多分類器來說,對樣本正則化,采用標(biāo)準(zhǔn)差正則方法是非常重要的提升預(yù)測效果的手段。
SVC參數(shù)解釋
(1)C: 目標(biāo)函數(shù)的懲罰系數(shù)C,用來平衡分類間隔margin和錯分樣本的,default C = 1.0;
(2)kernel:參數(shù)選擇有RBF, Linear, Poly, Sigmoid, 默認(rèn)的是"RBF";
(3)degree:if you choose 'Poly' in param 2, this is effective, degree決定了多項式的最高次冪;
(4)gamma:核函數(shù)的系數(shù)('Poly', 'RBF' and 'Sigmoid'), 默認(rèn)是gamma = 1 / n_features;
(5)coef0:核函數(shù)中的獨立項,'RBF' and 'Poly'有效;
(6)probablity: 可能性估計是否使用(true or false);
(7)shrinking:是否進行啟發(fā)式;
(8)tol(default = 1e - 3): svm結(jié)束標(biāo)準(zhǔn)的精度;
(9)cache_size: 制定訓(xùn)練所需要的內(nèi)存(以MB為單位);
(10)class_weight: 每個類所占據(jù)的權(quán)重,不同的類設(shè)置不同的懲罰參數(shù)C, 缺省的話自適應(yīng);
(11)verbose: 跟多線程有關(guān),不大明白啥意思具體;
(12)max_iter: 最大迭代次數(shù),default = 1, if max_iter = -1, no limited;(迭代次數(shù)過小,模型擬合不足,次數(shù)過高模型訓(xùn)練時間過長,一般選擇默認(rèn)值,不限制迭代次數(shù))
(13)decision_function_shape : ‘ovo’ 一對一, ‘ovr’ 多對多 or None 無, default=None
(14)random_state :用于概率估計的數(shù)據(jù)重排時的偽隨機數(shù)生成器的種子。