SVM涉及距離,和KNN一樣,要做數據標準化處理。
看吳恩達SVM,補充筆記https://blog.csdn.net/qq_xuanshuang/article/details/105361122
1-什麼是SVM
Hard Margin SVM:前提,樣本是線性可分的
2-SVM背後的最優化問題
SVM:最大化margin,其中margin=2d,即SVM要最大化d。
回憶解析幾何,點到直線的距離:
(x,y)到Ax+By+C=0的距離,
拓展到n維空間, ,有
經過一系列變化,最優化的目標是(帶約束的最優化問題)
函數間隔 VS 幾何間隔
線性可分支持向量機利用間隔最大化求解最優分離超平面(解是唯一的)。
一般來說,一個點距離分離超平面的遠近可以表示分類預測的確信程度。在超平面確定的情況下,能夠相對地表示點x距離超平面的遠近。而的符號與類標記y的符號是否一致能夠表示分類是否正確。所以可用來表示分類的正確性及確信度,這就是函數間隔(functionalmargin)。
定義超平面關於訓練數據集T的函數間隔爲超平面關於T中所有樣本點的函數間隔之最小值,函數間隔可以表示分類預測的正確性及確信度。但是選擇分離超平面時,只有函數間隔還不夠。因爲只要成比例地改變w和b,例如將它們改爲2w和2b,超平面並沒有改變,但函數間隔卻成爲原來的2倍。這一事實啓示我們。可以對分離超平面的法向量w加某些約束,如規範化,,使得間隔是確定的。這時函數間隔成爲幾何間隔(geometric margin)。
定義超平面關於訓練數據集T的幾何間隔爲超平面關於T中所有樣本點的幾何間隔之最小值,即
求一個幾何間隔最大的分離超平面,即最大間隔分離超平面。具體地,這個問題可以表示爲下面的約束最優化問題:
即我們希望最大化超平面關於訓練數據集的幾何間隔,約束條件表示的超平面關於每個訓練樣本點的幾何間隔至少是。考慮幾何間隔和函數間隔的關係式,可將這個問題改寫爲:
函數間隔的取值並不影響最優化問題的解。事實上,假設將w和b按比例改變爲和,這時函數間隔成爲。函數間隔的這一改變對上面最優化問題的不等式約束沒有影響,對目標函數的優化也沒有影響,也就是說,它產生一個等價的最優化問題。這樣,就可以取。將代入上面的最優化問題,注意到最大化和最小化是等價的,於是就得到下面的線性可分支持向量機的最優化問題:
支持向量和間隔邊界
在線性可分情況下,訓練數據集的樣本點中與分離超平面距離最近的樣本點的實例成爲支持向量。支持向量使約束條件式等號成立的點,即
對的正例點,支持向量在超平面
上,對的負例點,支持向量在超平面
上,如下圖:在H1和H2上的點就是支持向量
注意到H1和H2平行,並且沒有實例點落在它們中間。在H1與H2之間形成一條長帶,分離超平面與它們平行且位於它們中央。長帶的寬度,即H1與H2之間的距離成爲間隔。間隔依賴於分離超平面的法向量w,等於,H1和H2稱爲間隔邊界。
在決定分離超平面時只有支持向量起作用,而其他實例點並不起作用。如果移動支持向量將改變所求的解;但是如果在間隔邊界以外移動其他實例點,甚至去掉這些點,則解是不會改變的。由於支持向量在確定分離超平面中起着決定性作用,所以將這種分類模型成爲支持向量機。支持向量的個數一般很少,所以支持向量機由很少的“重要的”訓練樣本確定。
學習的對偶算法
帶約束的最優化問題可用拉格朗日算子求解。
其中,,爲拉格朗日乘子向量。
根據拉格朗日對偶性,原始問題的對偶問題是極大極小問題:
所以,爲了得到對偶問題的解,需要先求對w,b極小,再求對的極大。
(1) 求分別對w,b求偏導數並令其等於0。
將(3)帶入(1)有
即
(2)求對的極大,即是對偶問題。
將上面的目標函數由求極大轉換成求極小,則得下面與之等價的對偶最優化問題。
解出後,求出和即可得到模型:
注意到是不等式約束,因此上述過程需滿足KKT條件,即
注:KKT條件主要包含三大部分:
①:拉格朗日乘子≥0
②:原問題的約束條件
③:拉格朗日函數中的拉格朗日乘子項=0從KKT條件可以看出,對於任意訓練樣本 ,總有或。若,則該樣本將不會出現在式(4)的求和項中,即不會對f(x)有任何影響;若,則必有 ,即該樣本位於最大間隔邊界上,是一個支持向量。這顯示出支持向量機一個重要結論:訓練完成後,大部分的訓練樣本都不需要保留,最終模型僅與支持向量有關。
3-Soft Margin SVM 和SVM的正則化
下面兩幅圖,均是Hard Margin SVM,第一個可能泛化不好,第二個線性不可分,Hard Margin SVM無法得到結果,無法應用。
Soft Margin SVM
其思想,允許模型犯一定的錯誤,Hard不允許有樣本存在在這兩條線之間,soft可以。其中不是一個固定的值,而是每個樣本都有自己的,例我們有m個樣本,則也有m個數值,即每一個數據點都可以有一個容錯空間。
經過一系列變化,最優化的目標是(帶約束的最優化問題)
學習的對偶算法
帶約束的最優化問題可用拉格朗日算子求解。
其中,。
根據拉格朗日對偶性,原始問題的對偶問題是極大極小問題:
所以,爲了得到對偶問題的解,需要先求對極小,再求對的極大。
(1) 求分別對求偏導數並令其等於0。
將(3)帶入(1)有
即
(2)求對的極大,即是對偶問題。
將上面的目標函數由求極大轉換成求極小,則得下面與之等價的對偶最優化問題,並消去
注意到是不等式約束,因此上述過程需滿足KKT條件,即
注:KKT條件主要包含三大部分:
①:拉格朗日乘子≥0
②:原問題的約束條件
③:拉格朗日函數中的拉格朗日乘子項=0從KKT條件可以看出,對於任意訓練樣本 ,總有或。若,則該樣本將不會出現在式(4)的求和項中,即不會對f(x)有任何影響;若,則必有 ,即該樣本是一個支持向量,因爲,若,則,進而有,即該樣本恰好位於最大間隔邊界上;若,則,此時若,則該樣本在最大間隔邊界內部,若,則該樣本被錯誤分類。這顯示出支持向量機一個重要結論:訓練完成後,大部分的訓練樣本都不需要保留,最終模型僅與支持向量有關。
4-核函數
之前的優化目標可以利用一系列數學手段轉換成如下的式子,可以看出有樣本之間的點積,按之前的特徵工程,若想要多項式特徵,可先將樣本的特徵轉變爲多項式特徵,然後再點積。
核函數的想法是,不用對樣本的特徵進行轉變,而是直接找到一個函數,該函數對原樣本的結果與先對原樣本特徵進行處理再點積的結果一致。
舉個🌰,例如我們想要二階特徵,即我們想要特徵,只需要這樣的核函數
多項式核函數:
線性核函數:,即對樣本特徵不進行任何處理,即使用原特徵。
5-高斯核函數(RBF核)
核函數K(x,y)就是重新定義x和y的點積。
高斯核函數:,高斯函數,高斯核函數與高斯函數形似。
高斯核函數的本質是將一個樣本點映射到一個無窮維的特徵空間。高斯覈對每一個數據點都是landmark,把m*n的數據映射成了m*m的數據。
高斯核:👇舉個🌰直觀理解一下,原先是,我們這邊固定一下y,即y不取樣本點而取固定點,這邊固定點是,這兩個特殊點通常稱爲landmark(地標點)。若有兩個地標,高斯核函數就將其升爲二維樣本點,其取值如👇中間的圖。高斯覈對每一個數據點都是landmark,把m*n的數據映射成了m*m的數據。
6-RBF核函數中的gamma
高斯核函數與高斯函數形似,他們之間參數也有點關係。高斯函數中代表均值,代表標準差,其中越大,方差越大,函數分佈越寬;其中越小,方差越小,函數分佈越窄;然後高斯函數中的相當於高斯核函數中的,故越大,方差越小,函數分佈越窄;其中越小,方差越大,函數分佈越寬。
可用來調節模型複雜度,越大,模型越複雜(越大,分佈越窄,與該樣本x相鄰的樣本y影響更大,在該樣本x的附近形成小鐘形),越小,模型越簡單(越小,分佈越寬,與該樣本x相鄰的樣本y影響相對偏小,考慮了附近更多的樣本y,在該樣本x的附近形成鐘形較大)。
由小到大,
參考:https://coding.imooc.com/learn/list/169.html