做者|Anuj Shrivastav 編譯|VK 來源|Medium算法
監督學習描述了一類問題,涉及使用模型來學習輸入示例和目標變量之間的映射。若是存在分類問題,則目標變量能夠是類標籤,若是存在迴歸問題,則目標變量是連續值。一些模型可用於迴歸和分類。咱們將在此博客中討論的一種這樣的模型是支持向量機,簡稱爲SVM。個人目的是爲你提供簡單明瞭的SVM內部工做。安全
假設咱們正在處理二分類任務。app
可能有無限多的超平面能夠將這兩個類分開。你能夠選擇其中任何一個。可是這個超平面能很好地預測新查詢點的類嗎?你不認爲離一個類很近的那個平面有利於另外一個類嗎?直觀地說,分離兩個類的最佳方法是選擇一個超平面,該超平面與兩個類中最近的點等距。機器學習
這就是SVM的做用!函數
支持向量機的核心思想是:學習
選擇儘量普遍地將+ve點與-ve點分開的超平面π。(ve表明vector,向量,也就是樣本的向量)優化
設π是分離這兩類的超平面,π+和π_是兩個平行於π的超平面.net
π₊是當咱們平行於π移動並與π最近的+ve點接觸時獲得的平面設計
π₋是當咱們平行於π移動並接觸到π的最近-ve點時獲得的平面3d
d=margin = dist(π₊,π₋)
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值較低,則正則化項的權重較大,致使數據欠擬合。
等等!咱們怎麼獲得這個對偶形式的?
這都和最優化有關若是咱們深刻研究這個問題,咱們就會偏離咱們的目標。讓咱們在另外一個博客中討論這個對偶形式。
爲何咱們須要這個對偶形式?
對偶形式有時更容易解決,若是對偶間隙很是小,咱們會獲得類似的結果。特別是支持向量機:對偶形式很是重要,由於它經過核函數開啓了一種解釋支持向量機的新方法(我將在本博客的後面部分告訴你)。
注意:在對偶形式中,全部xᵢ都以點積的形式出現,不像原始形式中全部xᵢ都做爲獨立點出現。
αᵢ能夠被認爲是一個拉格朗日乘數
觀察對偶形式:
這意味着只有支持向量纔是重要的,這就是將該模型命名爲支持向量機的緣由。
如今,以對偶形式
所以,若是給出一個類似矩陣,咱們可使用對偶形式,而不是原始形式。這就是支持向量機的優勢。一般,這種類似性(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核函數將是最安全的選擇。
到目前爲止,咱們已經研究瞭如何使用支持向量機執行分類任務。但支持向量機不只限於此。它也能夠用來執行迴歸任務。怎樣?讓咱們看看!
首先,讓咱們看看支持向量迴歸(SVR)的數學公式
別擔憂!我幫助你理解。
SVR的工做方式是,它試圖找到一個最適合的數據點的超平面,同時保持一個軟間隔=ε(超參數),這意味着全部的點都應該在超平面兩側ε距離。
最小化這裏的邊界意味着咱們想要找到一個超平面,這個超平面以較低的偏差來匹配數據。
注意:平方是爲了使函數變得可微並適合於優化。對於SVC也能夠這樣作。
這個公式有什麼問題?
這裏的問題是,咱們太嚴格,咱們指望的點位於ε超平面的距離在現實世界並不常常發生。在這種狀況下,咱們將沒法找到所需的超平面。那麼,咱們該怎麼作呢?
與咱們在SVC中處理這個問題的方法相同,咱們將爲法向點引入兩個鬆弛變量ζ和ζ*,以容許某些點位於範圍以外,但會受到懲罰。
因此數學公式如今變成:
其中C肯定所需的嚴格程度。C值越大,對邊距外的點的懲罰就越多,這可能致使數據的過分擬合。更少的C意味着對邊緣之外的點的懲罰更少,這可能致使數據擬合不足。
與SVC中同樣,圖顯示了SVR的原始形式。結果代表,對偶形式更易於求解,而且能夠利用核技巧求出非線性超平面。
正如我已經說過的,對偶形式的公式是有點棘手的,涉及解決約束優化問題的知識。咱們不會深刻討論太多細節,由於這會轉移咱們對支持向量機的注意力。
這是經過使用拉格朗日乘子求解優化問題獲得的。
對於一個新的點,咱們計算輸出值的方法是:
你有沒有注意到,xᵢ是點積的形式?是的,和咱們在SVC中獲得的同樣。咱們能夠用前面提到的類似度或核函數來代替這個點積。應用核技巧還能夠幫助咱們擬合非線性數據。
特徵工程和特徵轉換,這是經過找到上面討論的正確的核來實現的
決策面,對於線性支持向量機:決策曲面只是一個超平面,對於核支持向量機:它將是一個非線性曲面
類似函數/距離函數,支持向量機的原始形式不能處理類似函數。然而,由於xᵢ點積的存在形式,對偶形式能夠很容易地處理它。
特徵的重要性,若是特徵不是共線的,那麼權重向量w中特徵的權重決定了特徵的重要性。若是特徵是共線的,可使用前向特徵選擇或後向特徵消除,這是肯定任何模型特徵重要性的標準方法。
離羣值,與其餘模型如Logistic迴歸相比,支持向量機的影響較小。
誤差-方差,它依賴於支持向量機對偶形式中c的值。
若是c值較高,則偏差項的權重較大,所以模型可能會對數據進行過擬合;若是c值較低,則偏差項的權重較小,模型可能會對數據進行欠擬合。
原文連接:https://medium.com/@anujshrivastav97/demystifying-support-vector-machine-b04d202bf11e
歡迎關注磐創AI博客站: http://panchuang.net/
sklearn機器學習中文官方文檔: http://sklearn123.com/
歡迎關注磐創博客資源彙總站: http://docs.panchuang.net/