SVM的原理是什么该园?
SVM是一種二類分類模型。它的基本模型是在特征空間中尋找間隔最大化的分離超平面的線性分類器帅韧。(間隔最大是它有別于感知機(jī))
(1)當(dāng)訓(xùn)練樣本線性可分時(shí)里初,通過硬間隔最大化,學(xué)習(xí)一個(gè)線性分類器忽舟,即線性可分支持向量機(jī)双妨;
(2)當(dāng)訓(xùn)練數(shù)據(jù)近似線性可分時(shí),引入松弛變量叮阅,通過軟間隔最大化刁品,學(xué)習(xí)一個(gè)線性分類器,即線性支持向量機(jī)帘饶;
(3)當(dāng)訓(xùn)練數(shù)據(jù)線性不可分時(shí)哑诊,通過使用核技巧及軟間隔最大化,學(xué)習(xí)非線性支持向量機(jī)及刻。
注:以上各SVM的數(shù)學(xué)推導(dǎo)應(yīng)該熟悉:硬間隔最大化(幾何間隔)---學(xué)習(xí)的對偶問題---軟間隔最大化(引入松弛變量)---非線性支持向量機(jī)(核技巧)镀裤。
SVM為什么采用間隔最大化?
當(dāng)訓(xùn)練數(shù)據(jù)線性可分時(shí)缴饭,存在無窮個(gè)分離超平面可以將兩類數(shù)據(jù)正確分開暑劝。
感知機(jī)利用誤分類最小策略,求得分離超平面颗搂,不過此時(shí)的解有無窮多個(gè)担猛。
線性可分支持向量機(jī)利用間隔最大化求得最優(yōu)分離超平面,這時(shí)丢氢,解是唯一的傅联。另一方面,此時(shí)的分隔超平面所產(chǎn)生的分類結(jié)果是最魯棒的疚察,對未知實(shí)例的泛化能力最強(qiáng)蒸走。
然后應(yīng)該借此闡述,幾何間隔貌嫡,函數(shù)間隔比驻,及從函數(shù)間隔—>求解最小化1/2 ||w||^2 時(shí)的w和b。即線性可分支持向量機(jī)學(xué)習(xí)算法—最大間隔法的由來岛抄。
為什么要將求解SVM的原始問題轉(zhuǎn)換為其對偶問題别惦?
一、是對偶問題往往更易求解(當(dāng)我們尋找約束存在時(shí)的最優(yōu)點(diǎn)的時(shí)候夫椭,約束的存在雖然減小了需要搜尋的范圍掸掸,但是卻使問題變得更加復(fù)雜。為了使問題變得易于處理蹭秋,我們的方法是把目標(biāo)函數(shù)和約束全部融入一個(gè)新的函數(shù)扰付,即拉格朗日函數(shù),再通過這個(gè)函數(shù)來尋找最優(yōu)點(diǎn)感凤。)
二悯周、自然引入核函數(shù),進(jìn)而推廣到非線性分類問題陪竿。
為什么SVM要引入核函數(shù)禽翼?
當(dāng)樣本在原始空間線性不可分時(shí),可將樣本從原始空間映射到一個(gè)更高維的特征空間族跛,使得樣本在這個(gè)特征空間內(nèi)線性可分闰挡。
引入映射后的對偶問題:
在學(xué)習(xí)預(yù)測中,只定義核函數(shù)K(x,y)礁哄,而不是顯式的定義映射函數(shù)?长酗。因?yàn)?b>特征空間維數(shù)可能很高,甚至可能是無窮維桐绒,因此直接計(jì)算?(x)·?(y)是比較困難的夺脾。相反之拨,直接計(jì)算K(x,y)比較容易(即直接在原來的低維空間中進(jìn)行計(jì)算,而不需要顯式地寫出映射后的結(jié)果)咧叭。
核函數(shù)的定義:K(x,y)=<?(x),?(y)>蚀乔,即在特征空間的內(nèi)積等于它們在原始樣本空間中通過核函數(shù)K計(jì)算的結(jié)果。
除了 SVM 之外菲茬,任何將計(jì)算表示為數(shù)據(jù)點(diǎn)的內(nèi)積的方法吉挣,都可以使用核方法進(jìn)行非線性擴(kuò)展。
svm RBF核函數(shù)的具體公式婉弹?
Gauss徑向基函數(shù)則是局部性強(qiáng)的核函數(shù)睬魂,其外推能力隨著參數(shù)σ的增大而減弱。
這個(gè)核會(huì)將原始空間映射為無窮維空間镀赌。不過氯哮,如果σ選得很大的話,高次特征上的權(quán)重實(shí)際上衰減得非撑寮梗快蛙粘,所以實(shí)際上(數(shù)值上近似一下)相當(dāng)于一個(gè)低維的子空間;反過來威彰,如果σ選得很小出牧,則可以將任意的數(shù)據(jù)映射為線性可分——當(dāng)然,這并不一定是好事歇盼,因?yàn)殡S之而來的可能是非常嚴(yán)重的過擬合問題舔痕。不過,總的來說豹缀,通過調(diào)控參數(shù)σ伯复,高斯核實(shí)際上具有相當(dāng)高的靈活性,也是使用最廣泛的核函數(shù)之一邢笙。
為什么SVM對缺失數(shù)據(jù)敏感啸如?
這里說的缺失數(shù)據(jù)是指缺失某些特征數(shù)據(jù),向量數(shù)據(jù)不完整氮惯。SVM沒有處理缺失值的策略(決策樹有)叮雳。而SVM希望樣本在特征空間中線性可分,所以特征空間的好壞對SVM的性能很重要妇汗。缺失特征數(shù)據(jù)將影響訓(xùn)練結(jié)果的好壞帘不。
SVM是用的是哪個(gè)庫?Sklearn/libsvm中的SVM都有什么參數(shù)可以調(diào)節(jié)杨箭?
用的是sklearn實(shí)現(xiàn)的寞焙。采用sklearn.svm.SVC設(shè)置的參數(shù)。本身這個(gè)函數(shù)也是基于libsvm實(shí)現(xiàn)的(PS: libsvm中的二次規(guī)劃問題的解決算法是SMO)。
SVC函數(shù)的訓(xùn)練時(shí)間是隨訓(xùn)練樣本平方級增長捣郊,所以不適合超過10000的樣本辽狈。
對于多分類問題,SVC采用的是one-vs-one投票機(jī)制模她,需要兩兩類別建立分類器稻艰,訓(xùn)練時(shí)間可能比較長懂牧。
sklearn.svm.SVC(C=1.0,kernel='rbf',degree=3,gamma='auto',coef0=0.0,shrinking=True,probability=False,tol=0.001,cache_size=200,class_weight=None,verbose=False,max_iter=-1,decision_function_shape=None,random_state=None)
參數(shù):
l? C:C-SVC的懲罰參數(shù)C?默認(rèn)值是1.0
C越大侈净,相當(dāng)于懲罰松弛變量,希望松弛變量接近0僧凤,即對誤分類的懲罰增大畜侦,趨向于對訓(xùn)練集全分對的情況,這樣對訓(xùn)練集測試時(shí)準(zhǔn)確率很高躯保,但泛化能力弱旋膳。C值小,對誤分類的懲罰減小途事,允許容錯(cuò)验懊,將他們當(dāng)成噪聲點(diǎn),泛化能力較強(qiáng)尸变。
lkernel:核函數(shù)义图,默認(rèn)是rbf,可以是‘linear’, ‘poly’, ‘rbf’, ‘sigmoid’, ‘precomputed’
0 – 線性:u'v
1 – 多項(xiàng)式:(gamma*u'*v + coef0)^degree
2 – RBF函數(shù):exp(-gamma|u-v|^2)
3 –sigmoid:tanh(gamma*u'*v + coef0)
ldegree:多項(xiàng)式poly函數(shù)的維度召烂,默認(rèn)是3碱工,選擇其他核函數(shù)時(shí)會(huì)被忽略。
lgamma:?‘rbf’,‘poly’ 和‘sigmoid’的核函數(shù)參數(shù)奏夫。默認(rèn)是’auto’怕篷,則會(huì)選擇1/n_features
lcoef0:核函數(shù)的常數(shù)項(xiàng)。對于‘poly’和 ‘sigmoid’有用酗昼。
lprobability:是否采用概率估計(jì)廊谓?.默認(rèn)為False
lshrinking:是否采用shrinking heuristic方法,默認(rèn)為true
ltol:停止訓(xùn)練的誤差值大小麻削,默認(rèn)為1e-3
lcache_size:核函數(shù)cache緩存大小蒸痹,默認(rèn)為200
lclass_weight:類別的權(quán)重,字典形式傳遞碟婆。設(shè)置第幾類的參數(shù)C為weight*C(C-SVC中的C)
lverbose:允許冗余輸出电抚?
lmax_iter:最大迭代次數(shù)。-1為無限制竖共。
ldecision_function_shape:‘ovo’, ‘ovr’ or None, default=None3
lrandom_state:數(shù)據(jù)洗牌時(shí)的種子值蝙叛,int值
主要調(diào)節(jié)的參數(shù)有:C、kernel公给、degree借帘、gamma蜘渣、coef0。
SVM如何處理多分類問題肺然?
一般有兩種做法:一種是直接法蔫缸,直接在目標(biāo)函數(shù)上修改,將多個(gè)分類面的參數(shù)求解合并到一個(gè)最優(yōu)化問題里面际起∈奥担看似簡單但是計(jì)算量卻非常的大。
另外一種做法是間接法:對訓(xùn)練器進(jìn)行組合街望。其中比較典型的有一對一校翔,和一對多。
一對多灾前,就是對每個(gè)類都訓(xùn)練出一個(gè)分類器防症,由svm是二分類,所以將此而分類器的兩類設(shè)定為目標(biāo)類為一類哎甲,其余類為另外一類蔫敲。這樣針對k個(gè)類可以訓(xùn)練出k個(gè)分類器,當(dāng)有一個(gè)新的樣本來的時(shí)候炭玫,用這k個(gè)分類器來測試奈嘿,那個(gè)分類器的概率高,那么這個(gè)樣本就屬于哪一類础嫡。這種方法效果不太好指么,bias比較高。
svm一對一法(one-vs-one)榴鼎,針對任意兩個(gè)類訓(xùn)練出一個(gè)分類器伯诬,如果有k類,一共訓(xùn)練出C(2,k) 個(gè)分類器巫财,這樣當(dāng)有一個(gè)新的樣本要來的時(shí)候盗似,用這C(2,k)?個(gè)分類器來測試,每當(dāng)被判定屬于某一類的時(shí)候平项,該類就加一赫舒,最后票數(shù)最多的類別被認(rèn)定為該樣本的類。