? ? ? ? 支持向量機(jī)(supot vector machine)是機(jī)器學(xué)習(xí)中非常重要的一種算法皂岔,在神經(jīng)網(wǎng)絡(luò)普及之前,SVM在數(shù)據(jù)分類領(lǐng)域一直占據(jù)著主導(dǎo)地位复隆。特點(diǎn)是對(duì)于訓(xùn)練數(shù)據(jù)集的數(shù)量要求不多俱萍,并且能夠得出很好的效果宰缤。
1 線性SVM過程
? ??????決策邊界:作為分類數(shù)據(jù)的邊界立磁,如公式1.1所示呈队,W^t作為x(數(shù)據(jù))的法向量存在,應(yīng)與輸入數(shù)據(jù)的維度一致唱歧。
? ? 公式1.1
????????支持向量:一個(gè)標(biāo)準(zhǔn)的SVM模型宪摧,決定其分類效果的主要因素是決策邊界。如圖1所示颅崩,一個(gè)理想的SVM模型几于,其決策邊界要與其支持向量保持最大距離,而上文所提到的支持向量就是距離決策邊界最近的向量集合沿后。
????????優(yōu)化目標(biāo):首先找到一組支持向量沿彭,如公式1.2所示。根據(jù)找到的支持向量尖滚,結(jié)合點(diǎn)到超平面的距離公式喉刘,繼而選出一組W與b的值,可以使決策邊界與支持向量的距離最大化熔掺,如公式1.3所示饱搏。
? ??公式1.2
? ??公式1.3
? ??????根據(jù)公式1.1.2非剃,我們可以使用放縮變換使其值大于等于1置逻,所以支持向量到?jīng)Q策邊界的距離就為1,故此優(yōu)化目標(biāo)可以簡化到公式1.4所示备绽。
? ??公式1.4
? ??????求解過程:由公式1.1.4轉(zhuǎn)化成極小值公式券坞,使用拉格朗日乘子法進(jìn)行求解,其簡化方程如公式1.5所示肺素。
? ??公式1.5
? ??????對(duì)W與b求偏導(dǎo)恨锚,得到條件:,根據(jù)KKT定義倍靡,將其轉(zhuǎn)換成如公式1.6所示條件猴伶。
? ???公式1.6
? ??????將求出的偏導(dǎo)分別代入公式5,轉(zhuǎn)換為求極小值公式,得出公式1.7他挎。
? ??公式1.7
? ??????最終模型:接下來筝尾,我們僅需要將訓(xùn)練數(shù)據(jù)一一代入公式1.7中,計(jì)算得出一組a的值办桨,并將其代入至公式1.8中筹淫,得出我們的模型數(shù)據(jù)。
? ??公式1.8
2 非線性SVM過程
? ??????非線性變換:在原本維度的線性不可分?jǐn)?shù)據(jù)往往在更高的維度上變得線性可分呢撞,SVM就是利用這一特點(diǎn)將線性不可分?jǐn)?shù)據(jù)進(jìn)行分類的损姜。首先,對(duì)數(shù)據(jù)集做非線性變換Φ殊霞,利用核函數(shù)將其特征映射到更高的維度摧阅,得出修改公式1.3為公式2.1,后續(xù)求解過程一致不變绷蹲。
? ??公式2.1
? ??????核函數(shù):是對(duì)數(shù)據(jù)做非線性變換的一系列算法逸尖,包括多項(xiàng)式核函數(shù)、高斯核函數(shù)等瘸右。
????????多項(xiàng)式核函數(shù):? ???
? ??????高斯核函數(shù):? ??????
? ??????Sigmoid:? ??????????
3 實(shí)驗(yàn)與對(duì)比
????????數(shù)據(jù)集采用Kaggle數(shù)據(jù)集:泰坦尼克
????????數(shù)據(jù)文件:train.csv娇跟、test.csv
?????? 整體數(shù)據(jù)集包含891條訓(xùn)練集和418條測(cè)試集,每條包含十一位信息太颤,其中有部分缺失苞俘。
?????? 求解:補(bǔ)全測(cè)試集中的所有是否生存。
本文測(cè)試用例:
? ????????????船票等級(jí)??? 2???? Pclass???????????????? 891
????????????? 性別??????????? 4???? Sex? ? ? ? ? ? ? ? ? ? ?891
????????????? 年齡???????????? 5???? Age????????????????????714
????????????? 親友數(shù)量??? 6,7? SibSp龄章,Parch? ? ? 891
????????????? 船票價(jià)格??? 9???? Fare? ? ? ? ? ? ? ? ? ? ?891
????????????? 登錄港口??? 11?? Embarked? ? ? ? ? ??889
年齡缺失的均補(bǔ)充為27,登錄港口缺失均映射為0吃谣。
? ?Sklearn中創(chuàng)建SVM實(shí)例:
? ????from sklearn.svm import SVC
????? model = SVC(kernel,C,gamma)
????? kernel:String
??????? linear? :線性核函數(shù)
??????? poly? :多項(xiàng)式核函數(shù)
??????? rbf???? :徑像核函數(shù)/高斯核
??????? sigmod? :sigmod核函數(shù)
??????? precomputed:核矩陣
C:Float
? ????錯(cuò)誤項(xiàng)的懲罰系數(shù)做裙,C越大岗憋,即對(duì)分錯(cuò)樣本的懲罰程度越大,因此在訓(xùn)練樣本中準(zhǔn)確率越高锚贱,但是泛化能力會(huì)降低仔戈。
gamma: float
? ? ? ? ? ? ?核函數(shù)系數(shù)拧廊,僅對(duì)‘rbf’,‘poly’,‘sigmod’有效
4 參考代碼
5?問題與思考
1、SVM的主要應(yīng)用場(chǎng)景是什么吧碾?
2凰盔、如何選取合適的核函數(shù)?
3倦春、SVM在什么情況下容易產(chǎn)生過擬合問題户敬?過擬合的根本原因是什么落剪?
4、神經(jīng)網(wǎng)絡(luò)算法是否可以替代傳統(tǒng)的SVM(SVM的關(guān)鍵優(yōu)勢(shì)是什么)尿庐?
5著榴、如何在盡量不損失召回率的情況下提高SVM的速度?
參考答案:
1屁倔、SVM的核心思想就是找到不同類別之間的分界面脑又,使得兩類樣本盡量落在面的兩邊,而且離分界面盡量遠(yuǎn)锐借。相對(duì)來說问麸,SVM更擅長處理樣本數(shù)量偏少且特征較多的數(shù)據(jù)。
2钞翔、選自吳恩達(dá):如果Feature的數(shù)量很大严卖,跟樣本數(shù)量差不多,這時(shí)候選用LR或者是Linear Kernel的SVM;如果Feature的數(shù)量比較小布轿,樣本數(shù)量一般哮笆,不算大也不算小,選用SVM+Gaussian Kernel; 如果Feature的數(shù)量比較小汰扭,而樣本數(shù)量很多稠肘,需要手工添加一些feature變成第一種情況
3、數(shù)據(jù)樣本有臟點(diǎn)(噪聲)萝毛,因?yàn)镾VM約束條件就是對(duì)于每個(gè)樣本要正確分類项阴,至于間隔最大是在這個(gè)約束條件的基礎(chǔ)上進(jìn)行的,所以如果約束條件成立就已經(jīng)導(dǎo)致模型非常復(fù)雜笆包,所以容易導(dǎo)致過擬合环揽。
4、SVM是結(jié)構(gòu)風(fēng)險(xiǎn)最小化庵佣,優(yōu)化目標(biāo)是最大化間隔歉胶,超參數(shù)很少,不容易過擬合巴粪,適合小樣本通今。而反觀神經(jīng)網(wǎng)絡(luò),神經(jīng)網(wǎng)絡(luò)是需要海量數(shù)據(jù)去訓(xùn)練的验毡,且其非線性表征更強(qiáng)衡创、數(shù)據(jù)量更大使其在小樣本方面的效果并不理想。
5晶通、提高SVM速度分為兩方面:
(1)選取適當(dāng)?shù)暮撕瘮?shù),樣本數(shù)量較多且非線性一般的情況下可采取多項(xiàng)式核函數(shù)哟玷,注意控制好多項(xiàng)式的維度狮辽。
(2)提高懲罰一也,使支持向量減少,會(huì)很有效的提高速度且減少內(nèi)存開銷喉脖。