冒泡~今天是在實(shí)驗(yàn)室劃水的最后一天啦!
明天就可以回我滴廈門啦~來更個(gè)新懦冰!
關(guān)于SVM的基本原理可參考之前寫過的《探索SVM(支持向量機(jī))之旅》那個(gè)時(shí)候主要是理論了解也就知道個(gè)大概(雖然現(xiàn)在也只是了解更多一點(diǎn)罷了)
之前更多把SVM定義在二分類問題上 今天著重記錄的是SVM完成多分類。
SVM多分類
SVM算法最初是為二值分類問題設(shè)計(jì)的谣沸,當(dāng)處理多類問題時(shí)刷钢,就需要構(gòu)造合適的多類分類器。構(gòu)造多分類器可以采用直接法或者間接法乳附。 但是若采取直接法即SVM直接在目標(biāo)函數(shù)上進(jìn)行修改的話内地,將多個(gè)分類面的參數(shù)求解合并到一個(gè)最優(yōu)化問題上,顯然難度太大赋除,其計(jì)算復(fù)雜度比較高阱缓,實(shí)現(xiàn)起來比較困難,只適合用于小型問題中贤重。
所以重點(diǎn)講一下間接法
間接法的分類:一對(duì)多茬祷、一對(duì)一
一對(duì)多(one-versus-rest,簡(jiǎn)稱OVR SVMs)
訓(xùn)練時(shí)依次把某個(gè)類別的樣本歸為一類,其他剩余的樣本歸為另一類,這樣k個(gè)類別的樣本就構(gòu)造出了k個(gè)SVM并蝗。分類時(shí)將未知樣本分類為具有最大分類函數(shù)值的那類祭犯。
舉個(gè)例子:假如我有四類要?jiǎng)澐郑ㄒ簿褪怯写嬖谒膫€(gè)Label),他們是A滚停、B沃粗、C、D键畴∽钪眩 于是我在抽取訓(xùn)練集的時(shí)候,分別選取四個(gè)訓(xùn)練集如下:
1.A所對(duì)應(yīng)的向量作為正集起惕,B涡贱,C,D所對(duì)應(yīng)的向量作為負(fù)集惹想;
2.B所對(duì)應(yīng)的向量作為正集问词,A,C嘀粱,D所對(duì)應(yīng)的向量作為負(fù)集激挪;
3.C所對(duì)應(yīng)的向量作為正集,A锋叨,B垄分,D所對(duì)應(yīng)的向量作為負(fù)集;
4.D所對(duì)應(yīng)的向量作為正集娃磺,A薄湿,B,C所對(duì)應(yīng)的向量作為負(fù)集偷卧;
{可以概括為 自己一類為正集 其余類為負(fù)集嘿般,N個(gè)類別(N個(gè)label)有N個(gè)訓(xùn)練集}
使用這四個(gè)訓(xùn)練集分別進(jìn)行訓(xùn)練,然后的得到四個(gè)訓(xùn)練結(jié)果文件涯冠。在測(cè)試的時(shí)候炉奴,把對(duì)應(yīng)的測(cè)試向量分別利用這四個(gè)訓(xùn)練結(jié)果文件進(jìn)行測(cè)試。
最后每個(gè)測(cè)試都有一個(gè)結(jié)果f1(x),f2(x),f3(x),f4(x)蛇更。
于是最終的結(jié)果便是這四個(gè)值中最大的一個(gè)作為分類結(jié)果瞻赶。
評(píng)價(jià):
優(yōu)點(diǎn):訓(xùn)練k個(gè)分類器,個(gè)數(shù)較少派任,其分類速度相對(duì)較快砸逊。
缺點(diǎn):①每個(gè)分類器的訓(xùn)練都是將全部的樣本作為訓(xùn)練樣本,這樣在求解二次規(guī)劃問題時(shí)掌逛,訓(xùn)練速度會(huì)隨著訓(xùn)練樣本的數(shù)量的增加而急劇減慢师逸;
②同時(shí)由于負(fù)類樣本的數(shù)據(jù)要遠(yuǎn)遠(yuǎn)大于正類樣本的數(shù)據(jù),從而出現(xiàn)了樣本不對(duì)稱的情況豆混,且這種情況隨著訓(xùn)練數(shù)據(jù)的增加而趨向嚴(yán)重篓像。解決不對(duì)稱的問題可以引入不同的懲罰因子动知,對(duì)樣本點(diǎn)來說較少的正類采用較大的懲罰因子C;
③還有就是當(dāng)有新的類別加進(jìn)來時(shí)员辩,需要對(duì)所有的模型進(jìn)行重新訓(xùn)練盒粮。
{補(bǔ)充:有以下兩個(gè)問題:
1.一個(gè)是一個(gè)樣本可能同時(shí)屬于幾個(gè)類
那么看一下這個(gè)樣本到各個(gè)超平面的距離,哪個(gè)遠(yuǎn)判給哪個(gè)
2.另一個(gè)是一個(gè)樣本可能不屬于任何一個(gè)
這樣這個(gè)樣本屬于第N+1類奠滑,這個(gè)類的數(shù)目遠(yuǎn)大于N類之和丹皱,所以會(huì)造成數(shù)據(jù)偏斜問題}
一對(duì)一(one-versus-one,簡(jiǎn)稱OVO SVMs或者pairwise)
其做法是在任意兩類樣本之間設(shè)計(jì)一個(gè)SVM,因此k個(gè)類別的樣本就要設(shè)計(jì)k(k-1)/2個(gè)SVM宋税。
當(dāng)對(duì)一個(gè)未知樣本進(jìn)行分類時(shí)摊崭,最后得票最多的類別即為該未知樣本的類別。
Libsvm(一個(gè)好用的包)中的多類分類就是根據(jù)這個(gè)方法實(shí)現(xiàn)的
{關(guān)于libsvm的使用說明等可以參考(https://www.cnblogs.com/jingyesi/p/4237155.html)}
舉個(gè)例子:
假設(shè)有四類A,B,C,D四類杰赛。在訓(xùn)練的時(shí)候我選擇A,B; A,C; A,D; B,C; B,D;C,D所對(duì)應(yīng)的向量作為訓(xùn)練集(4X3/2=6)呢簸,然后得到六個(gè)訓(xùn)練結(jié)果,在測(cè)試的時(shí)候淆攻,把對(duì)應(yīng)的向量分別對(duì)六個(gè)結(jié)果進(jìn)行測(cè)試阔墩,然后采取投票形式,最后得到一組結(jié)果瓶珊。
投票是這樣的:
A=B=C=D=0;
(A,B)-classifier 如果是A win,則A=A+1;otherwise,B=B+1;
(A,C)-classifier 如果是A win,則A=A+1;otherwise, C=C+1;
...
(C,D)-classifier 如果是C win,則C=C+1;otherwise,D=D+1;
The decision is the Max(A,B,C,D)
(也就是通過看投票的分?jǐn)?shù)來看分類情況)
評(píng)價(jià):這種方法雖然好,但是當(dāng)類別很多的時(shí)候,model的個(gè)數(shù)是n*(n-1)/2,代價(jià)還是相當(dāng)大的啸箫。與一對(duì)多相比不會(huì)有樣本不屬于任何一類的情形出現(xiàn),但是復(fù)雜度變大了伞芹。
參考資料(https://blog.csdn.net/weixin_42296976/article/details/81946047)
(https://blog.csdn.net/xfchen2/article/details/79621396)
End~
一個(gè)半月的實(shí)驗(yàn)室劃水要結(jié)束啦~
希望回家的小李 也會(huì)更新!