SVM演算法原理以及sklearn例項

2021-07-25 13:40:48 字數 2902 閱讀 5596

今天重新學習了一遍svm的內容,發現好多以前看不懂的推導公式都能理解了,趕緊記錄下來。作者屬於菜鳥級別,文中如有錯誤認識還請大家不吝賜教!

svm(support vector machine,支援向量機),是一種可應用與線性或非線性的一種分類器。以下我們按照svm的發展順序以及問題求解依次介紹。

1. 線性支援向量機(lsvm)

我們先假設樣本集線性可分,也就是最簡單的情況。由於是線性分類器,所以分割平面方程為`w*x+b=0`,和感知器類似。svm的輸出為$+-1$,當點位於超平面上方時輸出為+1,下方輸出-1.

我們將離超平面最近的點叫做支援向量,支援向量到超平面的距離叫做間距(margin)。svm分類的特點就是間距最大化,由於能將樣本分類的超平面可能有多個,他們對樣本的適用性都很好,但是能使間距最大化的超平面會使分類更加公平,從而使測試誤差降到最低。
支援向量到超平面距離為

w*x+b=1w*x+b=-1(實際上通過變化w和b總能實現),這樣優化問題變成w*x+b=+-1上,其他點都都遠離支援向量。

由拉格朗日運算元αj 乘以約束條件,得到

這樣就通過拉普拉斯運算元轉化為了對偶問題(dural problem),於是轉化為求ld的最值,對α求導得到w,b表達形式

求出w後將其代入任乙個支援向量,就可以算出b。

以上是硬分類模型,是指樣本完全是線性可分的。當然有硬分類就有軟分類,是說當有若干點a類的點跑到b類裡去了,你中有我我中有你的情況,造成了不完全線性可分(注意不是非線性),

這時候就要加一些鬆弛變數,優化公式變成了下面這樣

|w*x+b|>1的條件,但是加上鬆弛變數之後,就可以滿足了。

下面仍轉化為對偶問題求解

求解後發現ld的表達形式和加鬆弛變數前沒有變化只是α得上限變成了c,也就是鬆弛項的係數。

2.非線性問題

svm同時能處理非線性問題,比如

svm將原來的資料集對映到乙個新的空間中去,將乙個非線性問題轉化為線性問題,於是非線性又變成了熟悉的線性,但往往新的特徵空間的維度都要比對映前空間要高。這就出現了兩個問題,如何對映才會是非線性問題線性化,以及維度公升高使運算更加困難問題。下面我們一一進行解釋,事實上對映方式是特定的幾個,由核函式來確定。第二在高維向量運算中由於svm的基本運算是向量內積,而通過數學推導,高維空間的向量內積完全可以等價成變換前空間中向量內積的運算形式,如

常用的核函式有

多項式核對應的svm是乙個d次多項式分類器,高斯核會把資料對映到無窮維,雖然難以想象但我們完全不用管這些,通過核函式便等價在原空間的維度計算了。在不知道使用何種核函式進行對映的時候,我們一般選擇徑向基(高斯)核函式,準確率比較高,其實當前對核函式選擇並沒有比較好的方法,以實驗為主。

下面有大牛介紹的更好的版本,寫完才看到。。

以下是對sklearn庫中svm的介紹:

class sklearn.svm.svc(c=1.0, kernel='rbf', degree=3, gamma='auto', coef0=0.0, shrinking=true, probability=false, tol=0.001, cache_size=200, class_weight=none, verbose=false, max_iter=-1, decision_function_shape=none, random_state=none)
引數:

c:c-svc的懲罰引數c,也就是優化函式中鬆弛變數的係數,預設值是1.0。 c越大,相當於懲罰鬆弛力度越強,(由於懲罰項是加在後面的而且求的是函式最小值),對訓練集分類要求更嚴格,這樣對訓練集測試時準確率很高,但泛化能力弱。c值小,對誤分類的懲罰減小,允許容錯,將他們當成雜訊點,泛化能力較強。

kernel:

核函式,預設是rbf,可以是『linear』, 『poly』, 『rbf』, 『sigmoid』, 『precomputed』

0 – 線性:u'v

1 – 多項式:(gamma*u'*v + coef0)^degree

2 – rbf函式:exp(-gamma|u-v|^2)

3 –sigmoid:tanh(gamma*u'*v + coef0)

degree :多項式poly函式的維度,預設是3,選擇其他核函式時會被忽略。

gamma:

『rbf』,『poly』 和『sigmoid』的核函式引數。預設是』auto』,則會選擇1/n_features

coef0 :

核函式的常數項。對於『poly』和 『sigmoid』有用。

SVM演算法原理

支援向量機 support vector machines 是乙個二分類的分類模型 或者叫做分類器 如圖 它分類的思想是,給定給乙個包含正例和反例的樣本集合,svm的目的是尋找乙個超平面來對樣本根據正例和反例進行分割。各種資料對它評價甚高,說 它在解決小樣本 非線性及高維模式識別中表現出許多特有的優...

DBSCAN聚類演算法的原理及sklearn的演示

概念 基於密度的帶有雜訊點的聚類方法。內部概念理解 1.核心物件 若某個點的密度達到演算法設定的閾值則稱為核心點。2.距離閾值 設定的半徑r。3.直接密度可達 若某點p在點q的r鄰域內,且q是核心密度點,則pq直接密度可達。4.密度可達 直接密度可達的相互傳播。5.密度相連 若從某核心點q出發,點p...

SVM演算法原理詳解及python實現

w tx b 0 quad y i 1 longleftrightarrow y x i 0 w tx b 0 quad y i 1 longleftrightarrow y x i 0 end 幾何間距 longleftrightarrow frac 函式間隔 w wtx b 幾何間距 w y i...