SVM思想
SVM用於解決二分類的問題(也可以擴展到解決多分類問題和迴歸問題),它的思想是在特徵的向量空間中找到一個分界超平面,使得離超平面最近的點儘可能的大,這些距離超平面最近的點也稱爲支持向量。
SVM算法過程
點到平面的距離 .
證明:
在平面上找一個點 ,則需要做的是把 投影到垂直於該平面的法向量上,也就是 :
展開:
去除絕對值
公式中的絕對值不方便運算,加入 :
原來的距離公式變爲:
對偶問題
根據SVM的思想,目標函數是:
即是找到支持向量的點,找出離分界平面最近的點,然後使這個距離最大化,這是一個對偶問題,應該先找出分界平面再找支持向量,但是可以轉化爲先最小化這些距離,再最大化與分界平面的距離。
放縮
要找到最小的點,通過放縮使得 那麼1就是這個最小的點。同時由於進行了放縮要加入一個約束條件。同時求最大值那部分,求 的最大值,可以轉化爲求 的最小值,1/2是爲了方便求導。所以目標函數變爲:
拉格朗日乘子法
對 求偏導數可以得到:
帶不等式的約束條件的函數,用拉格朗日乘子法的時候需要滿足KTT條件,也就是所有的 。
將上面兩式帶入原方程可以得到問題轉化爲:
此時可以求偏導數解出 的值,回代求出 就可以求出分界平面。
SVM優化操作
SMO優化
如果樣本數很多,則需要計算的 的數量很多,爲了降低運算的複雜度,提出了很多的優化方法,其中比較經典的SMO,SMO的方法是固定其他的變量,單獨更新兩個變量,迭代進行這個過程知道收斂:
- 選取需要更新的一對 和
- 固定這兩個參數以外的參數,求解獲得更新後的 和
對於 的選擇是選擇與KKT條件違背最大的變量,而對於 應該選擇令目標函數增長最多的變量,但是這樣遍歷複雜度太高,SMO採用了一個啓發式的操作:使選取的兩個向量之間間隔最大。
核函數
有一些樣本,在特徵空間裏面不能找到一個線性的分界超平面,例如異或問題在二維空間上找不到線性的分界線,這時候可以將特徵空間映射到更高維度的空間上,在高維的空間中找線性分界超平面,但是可以注意到 ,中 是一項求內積的操作,如果映射到高維空間,因爲高維空間的維度可以是正無窮,這樣會使得運算複雜度可能變得非常的大。這時可以做一個核函數的變換,做完映射再求內積和做完內積再映射是一樣的,所以可以先做內積,再放入核函數裏面進行映射,也就是 變爲: , 原方程變爲:
就是核函數,常用的核函數有:
- 線性核函數
- 多項式核函數
- 高斯核函數
- 拉普拉斯核函數
- simoid核函數
核函數隱式的定義了特徵空間,所以核函數的選擇成爲了支持向量機最大的變數,核函數也可以通過函數組合而成: 、
軟間隔
樣本可能會有一些離羣點,爲了這些很少的離羣點修改分界平面,會使訓練的模型過擬合,失去泛化能力,這時候引入“軟間隔”的概念,允許部分樣本不滿足放縮約束:
這時候優化目標變爲:
其中 是0/1損失函數:
C是在用SKlearn時候需要調的一個超參數
C越大,約束條件越強,趨於無窮大時,相當於考慮所有的點,C越小,約束條件越寬鬆。
用上述的拉格朗日乘子法解可以得到:
原來的條件:
變爲:
0/1損失函數數學性質不好,非凸,不連續,一般會對這個損失函數進行變換,經典的有三個:
- hinge損失:
- 指數損失:
- 對率損失:
SVM擴展
SVR 支持向量迴歸
SVM也可以解決迴歸的問題,形式化爲:
引入鬆弛變量 和 ,引入兩個是左右兩邊的鬆弛程度可以不同,最後變爲:
後面解法同之前的拉格朗日解法。
SVM解決多分類問題
擴展爲多分類有三種方法:一對多法(one-versus-rest,簡稱OVR SVMs),一對一法(one-versus-one,簡稱OVO SVMs或者pairwise)和 層次支持向量機。
OVR
訓練時依次把某個類別的樣本歸爲一類,其他剩餘的樣本歸爲另一類,這樣k個類別的樣本就構造出了k個SVM。分類時將未知樣本分類爲具有最大分類函數值的那類。
缺陷在於:訓練集的正負樣本是1:m,存在這嚴重的不平衡問題。
OVO
其做法是在任意兩類樣本之間設計一個SVM,因此k個類別的樣本就需要設計k(k-1)/2個SVM。當對一個未知樣本進行分類時,最後得票最多的類別即爲該未知樣本的類別。
層次支持向量機
層次分類法首先將所有類別分成兩個子類,再將子類進一步劃分成兩個次級子類,如此循環,直到得到一個單獨的類別爲止。