詳解支持向量機

做者|Anuj Shrivastav 編譯|VK 來源|Medium算法

介紹

監督學習描述了一類問題,涉及使用模型來學習輸入示例和目標變量之間的映射。若是存在分類問題,則目標變量能夠是類標籤,若是存在迴歸問題,則目標變量是連續值。一些模型可用於迴歸和分類。咱們將在此博客中討論的一種這樣的模型是支持向量機,簡稱爲SVM。個人目的是爲你提供簡單明瞭的SVM內部工做。安全

假設咱們正在處理二分類任務。app

可能有無限多的超平面能夠將這兩個類分開。你能夠選擇其中任何一個。可是這個超平面能很好地預測新查詢點的類嗎?你不認爲離一個類很近的那個平面有利於另外一個類嗎?直觀地說,分離兩個類的最佳方法是選擇一個超平面,該超平面與兩個類中最近的點等距。機器學習

這就是SVM的做用!函數

支持向量機的核心思想是:學習

選擇儘量普遍地將+ve點與-ve點分開的超平面π。(ve表明vector,向量,也就是樣本的向量)優化

設π是分離這兩類的超平面,π+和π_是兩個平行於π的超平面.net

π₊是當咱們平行於π移動並與π最近的+ve點接觸時獲得的平面設計

π₋是當咱們平行於π移動並接觸到π的最近-ve點時獲得的平面3d

d=margin = dist(π₊,π₋)

  • SVM試圖找到一個π來最大化間隔。

  • 隨着間隔的增長,泛化精度也隨之提升。

支持向量

位於π₊或π₋上的點稱爲支持向量。

SVM數學公式

π: 邊距最大化的超平面

π: wᵀx+b=0

π₊:wᵀx+b=+1

π₊上的任何點或在正方向遠離π₊的任何點都標記爲正

π₋:wᵀx+b=-1

π₋上的任何點或在負方向遠離π₊的任何點都標記爲負

優化問題爲

如今,這看起來不錯,可是,它只在咱們的數據是線性可分時起做用。不然,咱們將沒法解決上述優化問題,也沒法獲得最優的w和b。

假設一個數據不是線性可分的場景:

由於這四個點,咱們的優化問題永遠不會獲得解決,由於這些點yᵢ(wᵀx+b)不大於1。

這是由於咱們的優化問題過於嚴格,它只解決線性可分數據。硬邊距就是這種方法的名稱。

那麼,咱們能夠修改它嗎?咱們能不能稍微寬大一點,這樣它就能夠處理幾乎線性可分的數據?

咱們要作的是,咱們作一個鬆弛變量ζᵢ(zeta),對應於每一個數據點,這樣對於位於+ve區域的+ve點和位於-ve區域的-ve點,

ζᵢ=0。

這就給咱們留下了錯誤的分類點和間隔內的點。

ζᵢ的含義,以圖爲例,當ζᵢ=2.5

這意味着pt.4在相反的方向上與它的正確超平面(在本例中爲π₊)相距2.5個單位。

相似地,pt.1與最優超平面(本例中爲π₋)的方向相反,距離爲2.5個單位。

當ζᵢ增大時,該點在錯誤方向上離最優超平面更遠。

改進優化問題

讓咱們把它分解

首先,約束條件:

咱們知道,

如今:

c是超參數。

咱們能夠直觀地認爲優化問題爲:

若是c值較高,則損失項的權重更大,從而致使數據的過擬合。

若是c值較低,則正則化項的權重較大,致使數據欠擬合。

SVM對偶形式

等等!咱們怎麼獲得這個對偶形式的?

這都和最優化有關若是咱們深刻研究這個問題,咱們就會偏離咱們的目標。讓咱們在另外一個博客中討論這個對偶形式。

爲何咱們須要這個對偶形式?

對偶形式有時更容易解決,若是對偶間隙很是小,咱們會獲得類似的結果。特別是支持向量機:對偶形式很是重要,由於它經過核函數開啓了一種解釋支持向量機的新方法(我將在本博客的後面部分告訴你)。

注意:在對偶形式中,全部xᵢ都以點積的形式出現,不像原始形式中全部xᵢ都做爲獨立點出現。

αᵢ能夠被認爲是一個拉格朗日乘數

觀察對偶形式:

  • 對於每一個xᵢ,有相應的αᵢ
  • 全部xᵢ都是點積的形式
  • 咱們對一個新點的分類方式改變以下:
  • 支持向量αᵢ>0,非支持向量αᵢ=0。

這意味着只有支持向量纔是重要的,這就是將該模型命名爲支持向量機的緣由。

如今,以對偶形式

所以,若是給出一個類似矩陣,咱們可使用對偶形式,而不是原始形式。這就是支持向量機的優勢。一般,這種類似性(xᵢ,xⱼ)被K(xᵢ,xⱼ)代替,其中K稱爲核函數。

核技巧及其背後的直覺

用核函數K(xᵢ,xⱼ)替換類似性(xᵢ,xⱼ)稱爲核化,或應用核技巧。

若是你看它,它只是計算xᵢ和xⱼ的點積。那麼,有什麼了不得的?

讓咱們如下面的數據集爲例。

很明顯,在線性模型的幫助下,這兩個類是不能分離的。

如今,將數據集轉換爲具備 <x₁²,x₂²,2x₁x₂> 的特徵的多維數據集。

你看到了嗎?應用適當的特徵變換和增長維數使數據線性可分。

這就是核支持向量機的做用。它將原始特徵映射到一個高維空間中,在該空間中找到間隔最大的超平面,並將該超平面映射到原始維空間中,獲得一個非線性決策曲面,而沒必要實際訪問該高維空間。

因此

線性支持向量機:在xᵢ的空間中尋找間隔最大化超平面

核支持向量機:在xᵢ的變換空間中尋找間隔最大化超平面

所以,核支持向量機也能求解非線性可分數據集。

讓咱們看看支持向量機中使用的一些核函數-

多項式核

定義以下:

其中

d=數據維度

c=常數

對於二次核,設c=1,即

當維度爲2

這能夠被認爲是2個向量x₁和x₂的乘積,其中:

如今維度=d'=6

所以,核化與特徵轉換是同樣的,但一般是d'>d,核化是在內部隱式地完成的。

徑向基函數(RBF核)

它是最受歡迎的核,由於你沒法肯定要選擇哪一個核時,能夠選擇它

定義以下:

d的效果:

當d增大時,指數部分的分子減少,換句話說,K值或類似度減少。

σ的影響:

若是你注意,當σ=0.3,在x=2,接近於0。在x = 4,σ= 1時和x = 11,σ= 10,它接近0。這代表當σ增長時,即便兩個點是很遠,類似的score可能也不會很低。

例如假設有兩個點x₁和x₂的距離爲4個單元。若是咱們應用σ= 0.3的RBF核,核函數K值或類似值是0。若是咱們設置σ= 1,K值很接近0,但若是咱們設置σ= 10,K值約爲0.4左右。

如今說明RBF核背後的直覺

還記得咱們在使用多項式核函數時獲得的6維映射函數嗎?如今讓咱們嘗試找出RBF核的一個映射函數。

爲了簡化數學,假設原始數據的維數爲2,指數部分的分母爲1。在這種狀況下,

若是咱們試圖找出RBF核的映射函數,就會獲得一個無限向量。這意味着RBF核須要咱們的數據映射到無限維的空間,計算類似性得分並返回它,這就是爲何若是你不知道選擇哪一個核,RBF核函數將是最安全的選擇。

用於迴歸的SVM

到目前爲止,咱們已經研究瞭如何使用支持向量機執行分類任務。但支持向量機不只限於此。它也能夠用來執行迴歸任務。怎樣?讓咱們看看!

首先,讓咱們看看支持向量迴歸(SVR)的數學公式

別擔憂!我幫助你理解。

SVR的工做方式是,它試圖找到一個最適合的數據點的超平面,同時保持一個軟間隔=ε(超參數),這意味着全部的點都應該在超平面兩側ε距離。

最小化這裏的邊界意味着咱們想要找到一個超平面,這個超平面以較低的偏差來匹配數據。

注意:平方是爲了使函數變得可微並適合於優化。對於SVC也能夠這樣作。

這個公式有什麼問題?

這裏的問題是,咱們太嚴格,咱們指望的點位於ε超平面的距離在現實世界並不常常發生。在這種狀況下,咱們將沒法找到所需的超平面。那麼,咱們該怎麼作呢?

與咱們在SVC中處理這個問題的方法相同,咱們將爲法向點引入兩個鬆弛變量ζ和ζ*,以容許某些點位於範圍以外,但會受到懲罰。

因此數學公式如今變成:

其中C肯定所需的嚴格程度。C值越大,對邊距外的點的懲罰就越多,這可能致使數據的過分擬合。更少的C意味着對邊緣之外的點的懲罰更少,這可能致使數據擬合不足。

與SVC中同樣,圖顯示了SVR的原始形式。結果代表,對偶形式更易於求解,而且能夠利用核技巧求出非線性超平面。

正如我已經說過的,對偶形式的公式是有點棘手的,涉及解決約束優化問題的知識。咱們不會深刻討論太多細節,由於這會轉移咱們對支持向量機的注意力。

SVR對偶形式

這是經過使用拉格朗日乘子求解優化問題獲得的。

對於一個新的點,咱們計算輸出值的方法是:

你有沒有注意到,xᵢ是點積的形式?是的,和咱們在SVC中獲得的同樣。咱們能夠用前面提到的類似度或核函數來代替這個點積。應用核技巧還能夠幫助咱們擬合非線性數據。

支持向量機的各類狀況

  1. 特徵工程和特徵轉換,這是經過找到上面討論的正確的核來實現的

  2. 決策面,對於線性支持向量機:決策曲面只是一個超平面,對於核支持向量機:它將是一個非線性曲面

  3. 類似函數/距離函數,支持向量機的原始形式不能處理類似函數。然而,由於xᵢ點積的存在形式,對偶形式能夠很容易地處理它。

  4. 特徵的重要性,若是特徵不是共線的,那麼權重向量w中特徵的權重決定了特徵的重要性。若是特徵是共線的,可使用前向特徵選擇或後向特徵消除,這是肯定任何模型特徵重要性的標準方法。

  5. 離羣值,與其餘模型如Logistic迴歸相比,支持向量機的影響較小。

  6. 誤差-方差,它依賴於支持向量機對偶形式中c的值。

若是c值較高,則偏差項的權重較大,所以模型可能會對數據進行過擬合;若是c值較低,則偏差項的權重較小,模型可能會對數據進行欠擬合。

  1. 高維度,支持向量機的設計能夠很好地工做,即便在高維度。如圖所示,支持向量機的數學公式中已經存在一個正則化項,有助於處理高維問題。你可能會說像KNN這樣的其餘模型並不適用於高維空間,那麼SVMs有什麼特別之處呢?這是由於支持向量機只關心找到使邊距最大的平面,而不關心點之間的相對距離。

支持向量機的優勢

  • 它有一個正則化項,有助於避免數據的過擬合
  • 它使用核技巧,這有助於處理甚至非線性數據(在SVR狀況下)和非線性可分數據(在SVC狀況下)
  • 當咱們不瞭解數據時,支持向量機是很是好的。
  • 能夠很好地處理非結構化和半結構化數據,好比文本、圖像和樹。
  • 從某種意義上說,它是健壯的,即便在訓練示例包含錯誤的狀況下也能工做

支持向量機的侷限性

  • 選擇正確的核是一項困難的任務。
  • 支持向量機算法有多個超參數須要正確設置,以得到對任何給定問題的最佳分類結果。參數可能致使問題A的分類精度很好,但可能致使問題B的分類精度不好。
  • 當支持向量機的數據點數目較大時,訓練時間較長。
  • 對於核支持向量機,其權向量w的解析比較困難。

參考

原文連接:https://medium.com/@anujshrivastav97/demystifying-support-vector-machine-b04d202bf11e

歡迎關注磐創AI博客站: http://panchuang.net/

sklearn機器學習中文官方文檔: http://sklearn123.com/

歡迎關注磐創博客資源彙總站: http://docs.panchuang.net/

相關文章
相關標籤/搜索