話(huà)接上文(SVM的簡(jiǎn)單推導(dǎo))列敲,這篇文章我們來(lái)看單類(lèi)SVM:SVDD岛宦√ù裕可能大家會(huì)覺(jué)得很奇怪,我們?yōu)槭裁葱枰獑畏诸?lèi)呢?有篇博客舉了一個(gè)很有意思的例子挽霉。
花果山上的老猴子防嗡,一生閱猴無(wú)數(shù),但是從來(lái)沒(méi)有見(jiàn)過(guò)其它的物種侠坎。有一天蚁趁,豬八戒來(lái)到花果山找它們的大王,老猴子一聲令下实胸,把這個(gè)東西給我綁起來(lái)他嫡!
這里老猴子很清楚的知道這個(gè)外來(lái)物種不是同類(lèi),但是它究竟是什么庐完,不得而知钢属。老猴子見(jiàn)過(guò)很多猴,它知道猴子的特征假褪,而外來(lái)生物明顯不符合這個(gè)特征署咽,所以它就不是猴子。
這就是一個(gè)單分類(lèi)的簡(jiǎn)單例子生音。
而美猴王看到這個(gè)場(chǎng)景后宁否,哈哈一笑,把這呆子抬過(guò)來(lái)缀遍!
對(duì)比二分類(lèi)慕匠,顯著的區(qū)別就是,二分類(lèi)不但能得出來(lái)這個(gè)東西不是猴子域醇,他還能告訴你這個(gè)東西叫“呆子”(當(dāng)然我們的美猴王見(jiàn)多識(shí)廣台谊,肯定不止是二分類(lèi)那么簡(jiǎn)單了)
今天要介紹的SVDD的全稱(chēng)是Support vector domain description。首先讓我們簡(jiǎn)單了解一下domain description譬挚,也就是單分類(lèi)問(wèn)題锅铅。
單分類(lèi)問(wèn)題
不像常見(jiàn)的分類(lèi)問(wèn)題,單分類(lèi)問(wèn)題的目的并不時(shí)將不同類(lèi)別的數(shù)據(jù)區(qū)分開(kāi)來(lái)减宣,而是對(duì)某個(gè)類(lèi)別的數(shù)據(jù)生成一個(gè)描述(description)盐须。這里的description比較抽象,可以理解為是樣本空間中的一個(gè)區(qū)域漆腌,當(dāng)某個(gè)樣本落在這個(gè)區(qū)域外贼邓,我們就認(rèn)為該樣本不屬于這個(gè)類(lèi)別。
單分類(lèi)方法常用于異常檢測(cè)闷尿,或者類(lèi)別極度不平衡的分類(lèi)任務(wù)中塑径。
當(dāng)我們假設(shè)數(shù)據(jù)服從一個(gè)概率分布,我們就可以對(duì)這個(gè)分布中的參數(shù)進(jìn)行估計(jì)了填具。對(duì)于一個(gè)新樣本统舀,如果這個(gè)樣本在給定類(lèi)別的概率分布中的概率小于閾值,就會(huì)被判定為異常樣本。
但是這樣的方法存在的問(wèn)題是,
- 預(yù)先假定的概率分布對(duì)模型性能的影響很大。
- 當(dāng)特征的維度很大的時(shí)候疲恢,該方法需要一個(gè)很大的數(shù)據(jù)集铡溪。
- 一些低密度區(qū)域的樣本點(diǎn)會(huì)被誤判為異常樣本。
另一種思路就是衡蚂,在樣本空間中為此類(lèi)數(shù)據(jù)劃定一個(gè)大致的邊界窿克。如何劃定這個(gè)邊界,就是SVDD要研究的問(wèn)題啦毛甲。
目標(biāo)函數(shù)
假設(shè)我們有個(gè)樣本點(diǎn)年叮,分別為。
我們假設(shè)這些樣本點(diǎn)分布在一個(gè)球心為玻募,半徑為的球中只损。那么樣本滿(mǎn)足
引入松弛變量,我們?cè)试S部分樣本不再這個(gè)球中七咧,那么
我們的目標(biāo)是最小球的半徑和松弛變量的值跃惫,于是目標(biāo)函數(shù)是
其中,是懲罰參數(shù)艾栋,由人工設(shè)置爆存。
對(duì)偶問(wèn)題
使用拉格朗日乘子法,得到拉格朗日函數(shù)
其中蝗砾,是拉格朗日乘子先较。令拉格朗日函數(shù)對(duì)的偏導(dǎo)為0,得到
我們可以將看作樣本的權(quán)重悼粮。上式表明所有樣本的權(quán)重之和為1闲勺,而球心是所有樣本的加權(quán)和。將上式帶入到拉格朗日函數(shù)中扣猫,得到原問(wèn)題的對(duì)偶問(wèn)題
當(dāng)通過(guò)求解對(duì)偶問(wèn)題得到后菜循,可以通過(guò)計(jì)算球心。至于半徑苞笨,則可以通過(guò)計(jì)算球與支持向量()之間的距離得到债朵。當(dāng)時(shí),意味著樣本位于球的外面瀑凝。
判斷新樣本是否為異常點(diǎn)
對(duì)于一個(gè)新的樣本點(diǎn)序芦,如果它滿(mǎn)足下式,那么我們認(rèn)為它是一個(gè)異常點(diǎn)粤咪。
展開(kāi)上式谚中,得
引入核函數(shù)
正常情況下,數(shù)據(jù)并不會(huì)呈現(xiàn)球狀分布,因此有必要使用核函數(shù)的方法提高模型的表達(dá)能力宪塔。
只需將替換即可磁奖。于是對(duì)偶問(wèn)題的目標(biāo)函數(shù)變?yōu)?br>
判別函數(shù)變?yōu)?br>
下面考慮核函數(shù)的影響。
多項(xiàng)式核
多項(xiàng)式核函數(shù)的表達(dá)式如下
如下圖所示某筐,多項(xiàng)式核實(shí)際上不太適合SVDD比搭。特別是當(dāng)d取值非常大的時(shí)候。
高斯核
高斯核函數(shù)的表達(dá)式如下
如下圖身诺,相比于多項(xiàng)式核函數(shù),高斯核函數(shù)的結(jié)果就合理多了抄囚∶股模可以看到模型的復(fù)雜程度隨著的增大而減小。
在python中使用
可通過(guò)下面的代碼在python中使用單類(lèi)SVM
from sklearn.svm import OneClassSVM
參考文獻(xiàn)
- Tax D M J, Duin R P W. Support vector domain description[J]. Pattern recognition letters, 1999, 20(11-13): 1191-1199.