首頁/ 娛樂/ 正文

SVM原理詳細圖文教程!一行程式碼自動選擇核函式,還有實用工具

賈浩楠 發自 凹非寺

量子位 報道 | 公眾號 QbitAI

SVM?

老分類演算法了,輕鬆拿下。

然而,每一次老闆讓你講解SVM,或每一次面試被問到SVM,卻總是結結巴巴漏洞百出。

「這些人怎麼總能精準發現我的盲點?」

簡直讓人懷疑自己掌握的是假SVM。

如果你有這樣的問題,那這篇

SVM數學原理

對你會有很大幫助,一起來看看吧。

SVM 由線性分類開始

理解SVM,咱們必須先弄清楚一個概念:

線性分類器

給定一些資料點,它們分別屬於兩個不同的類,現在要找到一個線性分類器把這些資料分成兩類。

如果用x表示資料點,用y表示類別(y可以取1或者-1,分別代表兩個不同的類),一個線性分類器的目標是要

在n維的資料空間中找到一個超平面

(hyper plane),將x的資料點分成兩類,且超平面距離兩邊的資料的間隔最大。

SVM原理詳細圖文教程!一行程式碼自動選擇核函式,還有實用工具

這個超平面的方程可以表示為( wT中的T代表轉置):

SVM原理詳細圖文教程!一行程式碼自動選擇核函式,還有實用工具

SVM原理詳細圖文教程!一行程式碼自動選擇核函式,還有實用工具

2維座標系中,超平面是一條直線

當f(x)等於0的時候,x便是位於超平面上的點,而f(x)大於0的點對應 y=1 的資料點,f(x)小於0的點對應y=-1的點。

SVM 想要的就是找到各類樣本點到超平面的距離最遠,也就是找到最大間隔超平面。任意超平面可以用下面這個線性方程來描述:

SVM原理詳細圖文教程!一行程式碼自動選擇核函式,還有實用工具

二維空間點(x,y)到直線Ax+By+C=0的距離公式是:

SVM原理詳細圖文教程!一行程式碼自動選擇核函式,還有實用工具

擴充套件到n維空間後,點x=(x1,x2……xn)到直線wTx+b=0的距離為:

SVM原理詳細圖文教程!一行程式碼自動選擇核函式,還有實用工具

其中 :

SVM原理詳細圖文教程!一行程式碼自動選擇核函式,還有實用工具

根據支援向量的定義,支援向量到超平面的距離為d,其他點到超平面的距離大於d。

於是有:

SVM原理詳細圖文教程!一行程式碼自動選擇核函式,還有實用工具

||w||d

是正數,令它為 1(之所以令它等於 1,是為了方便推導和最佳化,且這樣做對目標函式的最佳化沒有影響),於是:

SVM原理詳細圖文教程!一行程式碼自動選擇核函式,還有實用工具

將兩個方程合併,有:

SVM原理詳細圖文教程!一行程式碼自動選擇核函式,還有實用工具

至此,就得到了最大間隔超平面的上下兩個超平面。

SVM原理詳細圖文教程!一行程式碼自動選擇核函式,還有實用工具

每個支援向量到超平面的距離可以寫為:

SVM原理詳細圖文教程!一行程式碼自動選擇核函式,還有實用工具

y(wTx+b)>1>0

可以得到

y(wTx+b)=|wTx+b|

,所以可以將支援向量到超平面距離改寫為:

SVM原理詳細圖文教程!一行程式碼自動選擇核函式,還有實用工具

最大化這個距離:

SVM原理詳細圖文教程!一行程式碼自動選擇核函式,還有實用工具

這裡乘上 2 倍是為了後面推導方便,對目標函式沒有影響。

帶入一個支援向量,可以得到:

SVM原理詳細圖文教程!一行程式碼自動選擇核函式,還有實用工具

所以得到的最最佳化問題是:

SVM原理詳細圖文教程!一行程式碼自動選擇核函式,還有實用工具

處理異常值

有時,對於某些點(x(i),y(i)),分類器可能會做出錯誤操作。

儘管在開發實際使用的SVM模型時,會設計冗餘,避免過擬合,但仍然需要想辦法將誤差控制在一個較小的範圍。

可以透過在模型中增加

懲罰機制

(用c表示)解決這個問題。

SVM原理詳細圖文教程!一行程式碼自動選擇核函式,還有實用工具

SVM原理詳細圖文教程!一行程式碼自動選擇核函式,還有實用工具

設SVM輸出結果為E,則上圖中出現的E=0則沒有懲罰。

若果c非常大,則模型分類更加精準,但支援向量到超平面距離小,容易出現過擬合。

若c=1,則支援向量到超平面距離最大化,儘管會出現一些分類誤差,但這是一種較好的方案。

約束凸最佳化問題

為了克服

約束凸最佳化問題

,採用PEGASOS演算法。

重新構造一個約束獨立性方程:

SVM原理詳細圖文教程!一行程式碼自動選擇核函式,還有實用工具

上式表示,如果點遠離直線,則誤差將為零,否則誤差將為(1-t(i))。

我們需要最小化的是:

SVM原理詳細圖文教程!一行程式碼自動選擇核函式,還有實用工具

由於消除了約束,因此可以採用梯度下降來最大程度地減少損失。

SVM原理詳細圖文教程!一行程式碼自動選擇核函式,還有實用工具

梯度下降演算法計算損失:

SVM原理詳細圖文教程!一行程式碼自動選擇核函式,還有實用工具

在SVM上應用梯度下降:

SVM原理詳細圖文教程!一行程式碼自動選擇核函式,還有實用工具

非線性分類

使用SVM對非線性資料進行分類,需要將資料投影到更高的維度,即透過

增加低維資料的特徵向量將其轉換為高維資料

SVM原理詳細圖文教程!一行程式碼自動選擇核函式,還有實用工具

增加資料特徵向量需要消耗巨大的計算資源,這裡採用核函式。

而這種思路最難的點,是為你自己的模型選擇一個合適的核函式。

這裡推薦一種自動調參方法

GridSearch

將多種核函式(線性、RBF、多項式、sigmoid等)等標號,依次呼叫,找到一個最合適自己模型的。

定義一個變數params:

params = [{‘kernel’:[‘linear’, ‘rbf’, ‘poly’, ‘sigmoid’], ‘c’:[0。1, 0。2, 0。5, 1。0, 2。0, 5。0]}

呼叫:

SVM原理詳細圖文教程!一行程式碼自動選擇核函式,還有實用工具

以上詳細介紹了SVM背後的數學原理,並提供了一些使用SVM模型時的問題解決辦法。

其中,使用程式碼自動選擇核函式的方法來自外國博主

Daksh Trehan

如果你對SVM的原理有更深刻的理解,或有其他實用的技巧,請留言分享給大家吧。

參考連結

https://medium。com/@dakshtrehan?source=post_page——-d46e94b23b9d————————————

相關文章

頂部