參考博客:http://blog.csdn.net/szlcw1/article/details/52259668
1.談?wù)剬?duì)支持向量機(jī)的理解
- 支持向量機(jī)是一種二分類模型,基本模型是找到特征空間中間隔最大的線性分類器。感知機(jī)模型只要找到分離超平面即可,而SVM不但要分離樣本,還要滿足間隔最大。
- 當(dāng)訓(xùn)練樣本線性可分時(shí),通過硬間隔最大化得到一個(gè)線性可分SVM。
- 如果訓(xùn)練樣本只是接近線性可分,需要引入松弛變量,通過軟間隔最大化,得到線性SVM。
- 當(dāng)訓(xùn)練樣本線性不可分,需要引入核技巧將特征空間從低維映射到高維,使得樣本接近可分,并且通過軟間隔最大化,學(xué)習(xí)得到非線性支持向量機(jī)。
公式推導(dǎo):硬間隔最大化(幾何間隔)-> 學(xué)習(xí)的對(duì)偶問題 -> 軟間隔最大化(引入松弛變量)-> 非線性支持向量機(jī)(核技巧)。
2. 引入對(duì)偶問題的作用:
- 對(duì)偶問題往往更易求解(當(dāng)尋找約束存在時(shí)的最優(yōu)點(diǎn)的時(shí)候,約束的存在雖然減小了需要搜尋的范圍,但是卻使問題變得更加復(fù)雜。為了使問題變得易于處理,我們的方法是把目標(biāo)函數(shù)和約束全部融入一個(gè)新的函數(shù),即拉格朗日函數(shù),再通過這個(gè)函數(shù)來尋找最優(yōu)點(diǎn)。先極小化L(w,b,a),將w,b以a表示出來,再極大化a的函數(shù)。)
- 自然引入核函數(shù),進(jìn)而推廣到非線性分類問題。(或者表達(dá)為:通過拉格朗日將目標(biāo)函數(shù)融入到一個(gè)新的函數(shù)中,然后在從minmax的原始問題,轉(zhuǎn)化為maxmin的對(duì)偶問題,一者因?yàn)槭堑慕平猓撸D(zhuǎn)化為對(duì)偶問題后,更容易求解;)
3. KKT條件
Paste_Image.png
4. SVM核函數(shù)
5. SVM解決多分類問題
- 一對(duì)多法(one-versus-rest,簡(jiǎn)稱1-v-r SVMs)。訓(xùn)練時(shí)依次把某個(gè)類別的樣本歸為一類,其他剩余的樣本歸為另一類,這樣k個(gè)類別的樣本就構(gòu)造出了k個(gè)SVM。分類時(shí)將未知樣本分類為具有最大分類函數(shù)值的那類。
- 一對(duì)一法(one-versus-one,簡(jiǎn)稱1-v-1 SVMs)。其做法是在任意兩類樣本之間設(shè)計(jì)一個(gè)SVM,因此k個(gè)類別的樣本就需要設(shè)計(jì)k(k-1)/2個(gè)SVM。當(dāng)對(duì)一個(gè)未知樣本進(jìn)行分類時(shí),最后得票最多的類別即為該未知樣本的類別。Libsvm中的多類分類就是根據(jù)這個(gè)方法實(shí)現(xiàn)的。
- 層次支持向量機(jī)(H-SVMs)。層次分類法首先將所有類別分成兩個(gè)子類,再將子類進(jìn)一步劃分成兩個(gè)次級(jí)子類,如此循環(huán),直到得到一個(gè)單獨(dú)的類別為止。
對(duì)c和d兩種方法的詳細(xì)說明可以參考論文《支持向量機(jī)在多類分類問題中的推廣》(計(jì)算機(jī)工程與應(yīng)用。2004) - 其他多類分類方法。除了以上幾種方法外,還有有向無環(huán)圖SVM(Directed Acyclic Graph SVMs,簡(jiǎn)稱DAG-SVMs)和對(duì)類別進(jìn)行二進(jìn)制編碼的糾錯(cuò)編碼SVMs。
6. SVM優(yōu)化方法-SMO
SMO(序列最小最優(yōu)算法): SMO算法是支持向量機(jī)學(xué)習(xí)的一種快速方法,其特點(diǎn)是不斷地將原二次規(guī)劃問題分解為只有兩個(gè)變量的二次規(guī)劃子問題,并對(duì)子問題進(jìn)行解析求解,直到所有變量滿足KKT條件為止。這樣通過啟發(fā)式的方法得到原二次規(guī)劃問題的最優(yōu)解。因?yàn)樽訂栴}有解析解,所以每次計(jì)算子問題都很快,雖然子問題次數(shù)很多,但在總體上很是高效的。
Paste_Image.png
Paste_Image.png
7. 為什么SVM對(duì)缺失數(shù)據(jù)敏感?
這里說的缺失數(shù)據(jù)是指缺失某些特征數(shù)據(jù),向量數(shù)據(jù)不完整。SVM沒有處理缺失值的策略(決策樹有)。而SVM希望樣本在特征空間中線性可分,所以特征空間的好壞對(duì)SVM的性能很重要。缺失特征數(shù)據(jù)將影響訓(xùn)練結(jié)果的好壞。
8. LR和SVM的聯(lián)系與區(qū)別:
聯(lián)系:
- LR和SVM都可以處理分類問題,且一般都用于處理線性二分類問題(在改進(jìn)的情況下可以處理多分類問題)
- 兩個(gè)方法都可以增加不同的正則化項(xiàng),如l1、l2等等。所以在很多實(shí)驗(yàn)中,兩種算法的結(jié)果是很接近的。
區(qū)別:
- LR是參數(shù)模型,SVM是非參數(shù)模型。
- 從目標(biāo)函數(shù)來看,區(qū)別在于邏輯回歸采用的是logistical loss,SVM采用的是hinge loss.這兩個(gè)損失函數(shù)的目的都是增加對(duì)分類影響較大的數(shù)據(jù)點(diǎn)的權(quán)重,減少與分類關(guān)系較小的數(shù)據(jù)點(diǎn)的權(quán)重。
- SVM的處理方法是只考慮support vectors,也就是和分類最相關(guān)的少數(shù)點(diǎn),去學(xué)習(xí)分類器。而邏輯回歸通過非線性映射,大大減小了離分類平面較遠(yuǎn)的點(diǎn)的權(quán)重,相對(duì)提升了與分類最相關(guān)的數(shù)據(jù)點(diǎn)的權(quán)重。
- 邏輯回歸相對(duì)來說模型更簡(jiǎn)單,好理解,特別是大規(guī)模線性分類時(shí)比較方便。而SVM的理解和優(yōu)化相對(duì)來說復(fù)雜一些,SVM轉(zhuǎn)化為對(duì)偶問題后,分類只需要計(jì)算與少數(shù)幾個(gè)支持向量的距離,這個(gè)在進(jìn)行復(fù)雜核函數(shù)計(jì)算時(shí)優(yōu)勢(shì)很明顯,能夠大大簡(jiǎn)化模型和計(jì)算。
- logic 能做的 svm能做,但可能在準(zhǔn)確率上有問題,svm能做的logic有的做不了。
9. 核函數(shù)的選擇
口訣:
初級(jí):高維用線性,不行換特征;低維試線性,不行換高斯
中級(jí):線性試試看,不行換高斯,卡方有奇效,絕招MKL
玩家:Kernel度量相似性,自己做啊自己做