Created: Apr 14, 2020 5:28 PM
支持向量機是一個分類算法,它的目标不僅是分類數據,而且尋找最大界線。提高模型的魯棒性。
大家可以思考以下,下面兩條黃色和綠色的線,哪一條線更好? 雖然兩條線都可以把紅色的點和藍色的點分開,但是對比之後,我們發現黃色的線離點的距離更遠,所以左邊的線更好。
分類問題就是我們要找到一條線把紅色和藍色的點分開,我們還想更近一步,讓這條線盡可能離這些點遠,所以我們可以再增加兩條線,然後嘗試使這兩條線之間的距離間隔最大化。
支持向量機算法不僅要求正确的分類,而且要求它的間隔最大,所以我們就有兩個衡量指标,一個是分類錯誤的指标,一個是間隔的指标
ERROR = CLASSIFICATION ERROR MARGIN ERROR
下面圖的分類問題,線的方程是wx b=0,然後再在線的兩側在加兩條線形成間隔,即
wx b=1和wx b=-1,我們不希望兩條中間有任何點,我們把這些點看成是誤分類的點,
我們可以通過下圖計算除誤差Error=1.5 3.5 0.5 2 3 0.3=10.8
我們可以使用梯度下降法将誤差最小化,我們需要編寫一個函數,使得在間隔最大的情況下誤差最小,以及在間隔小的情況下誤差最大。為什麼這樣做的原因是我們想獲得盡可能大的間隔模型。
公式為:
下面我們舉例來說明,我們可以根據公式計算除第一個模型的Margin更大是2/5,Error更小是25,另外一個的Margin更小是1/5,Error更大是100
這裡我們可以定義W=(w1, w2)和x= (x1, x2),所以Wx=w1x1 w2x2
三條線的方程是:
為了找到第一條線和第三條線之間的距離,我們隻要找到第一條和第二條之間的距離,然後乘以2。
我們可以平移這兩條線,使一條線經過原點。方程就變成
第一條線的方程Wx = 0,這意味着它與紅色的向量W=(w1,w2)正交(垂直)
我們假設(p, q)是該向量與Wx=1相交的點,即藍色的點,因為(p,q) 在該向量上,所以可以得到如下的公式,(p,q)是(w1,w2)的倍數,我們假設是k倍。
将(p,q)= k(w_1,w_2)帶入第一個方程就有:
所以藍色點的向量是w/|w|2,兩條之間的距離是藍色向量的範數。
因此總距離為2/|W|
我們看一種特殊情況,下圖中那一條線更好?這個要看具體情況而定,比如在醫學模型中,我們希望它盡量準确無誤,所以我們選擇右邊的模型,其他情況下我們選擇左邊,即使有一個被錯誤分類了,但是它的間隔更大。根據不同的需求,我們的選擇也不同。所以我們加入了參數C
Error = C*Calssification Error Margin Error
完全可分的情況我們稱為硬間隔,當存在不完全可分的情況,我們稱為軟間隔。
目标函數:
拉格朗日Lagrange乘子法
Lagrange函數
引入拉格朗日的目标函數為:
求L對于w,b的偏導數,并等于0
線性不可分的情況下,用核函數将樣本投射到高維空間,使其變成可分的情況,
對與下圖的樣本,我們無法找到一條直線來把藍色和紅色點分開。我們可以把它轉化為關于平面的二維問題,增加一個y軸。我們可以創建一個抛物線, 然後把點移到抛物線上。我們可以找到y=4這條線把藍色和紅色的點分開
核函數就像一個工具箱,對于線性核,我們的工具就隻有x,y,我們尋找任何關于這兩個變量的線性組合方程式。如果我們把它擴展為一個多項式核函數,我們的工具箱就由x,y,xy,x2,y2,我們可以創建很多核函數,例如⚪x2 y2=1,雙曲線xy=1,抛物線y=x2。我們在數據上增加一些維度,尋找一個更高維度的表面,然後投射到平面上形成曲線。
我們要想分離這些點,同樣沒有一條直線可以做到這點,我們在這畫一個小山脈,把這些點移到山脈上,
我們就可以找到這幾條線可以把他們區分開,然後再回到原來的線上,就得到的分界線。
我們假設這裡有三座山,每個點上有一個,我們可以使用向量記錄這座山的高度,第一個點的第一座上高是1,第二座和第三座的高度是0.8和0.2,注意,每個點上構建的山的高度值中都有一個1,。我們把這三個向量繪制在三維空間。
他們就像三個基向量,我們在三維空間就可以把他們分開。
我們可以選擇一種徑向基函數,是選擇陡峭的還是平緩的。我們可以在他們的映射中看到,陡峭可能導緻過拟合,平緩有可能欠拟合。
如何選擇呢,我們用到高斯分布。sigma和曲線的寬度有關,sigma越大,曲線越寬, sigam越小,曲線越窄。
高維空間
優缺點
- SVM的主要優勢是訓練相對容易。 與神經網絡不同,沒有局部最優
- 非線性SVM使用非線性内核。 非線性SVM意味着算法計算的邊界不必是直線。 好處是捕獲數據點之間複雜的情況,不必執行困難的轉換。 缺點是訓練時間長得多,因為它需要大量的計算。
- SVM具有正則化參數,可以幫助避免過度拟合。
- 在高維空間有效。
- 在維數大于樣本數的情況下仍然有效。
- 在決策函數中使用訓練點的子集(稱為支持向量),因此它還可以提高内存效率
- 與Logistic回歸分類器不同,SVM不直接提供概率估計。
- 在許多分類問題中,你實際上希望獲得類成員身份的概率
- 求解模型的參數難以解釋。
- 對大型數據集的培訓時間長
- 選擇一個“好的”内核可能很棘手。
相同點:
1、都是分類算法,都是監督學習
2、如果不考慮核函數,LR和SVM都是線性分類算法
3、LR和SVM都是判别模型
不同點:
1、本質上是loss函數不同,或者說分類的原理不同。
2、支持向量機隻考慮局部的邊界線附近的點,而邏輯回歸考慮全局(遠離的點對邊界線的确定也起作用,雖然作用會相對小一些)。
3、在解決非線性問題時,支持向量機采用核函數的機制,而LR通常不采用核函數的方法。
4、SVM計算複雜,但效果比LR好,适合小數據集;LR計算簡單,适合大數據集,可以在線訓練。
5、線性SVM依賴數據表達的距離測度,所以需要對數據先做normalization,LR不受其影響
,
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!