svm对未知数据的分类_SVM多分类之一对一与一对多
冒泡~今天是在實(shí)驗(yàn)室劃水的最后一天啦!
明天就可以回我滴廈門(mén)啦~來(lái)更個(gè)新!
關(guān)于SVM的基本原理可參考之前寫(xiě)過(guò)的《探索SVM(支持向量機(jī))之旅》那個(gè)時(shí)候主要是理論了解也就知道個(gè)大概(雖然現(xiàn)在也只是了解更多一點(diǎn)罷了)
之前更多把SVM定義在二分類問(wèn)題上 今天著重記錄的是SVM完成多分類。
SVM多分類
SVM算法最初是為二值分類問(wèn)題設(shè)計(jì)的,當(dāng)處理多類問(wèn)題時(shí),就需要構(gòu)造合適的多類分類器。構(gòu)造多分類器可以采用直接法或者間接法。 但是若采取直接法即SVM直接在目標(biāo)函數(shù)上進(jìn)行修改的話,將多個(gè)分類面的參數(shù)求解合并到一個(gè)最優(yōu)化問(wèn)題上,顯然難度太大,其計(jì)算復(fù)雜度比較高,實(shí)現(xiàn)起來(lái)比較困難,只適合用于小型問(wè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ī)劃問(wèn)題時(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ì)稱的問(wèn)題可以引入不同的懲罰因子,對(duì)樣本點(diǎn)來(lái)說(shuō)較少的正類采用較大的懲罰因子C;
③還有就是當(dāng)有新的類別加進(jìn)來(lái)時(shí),需要對(duì)所有的模型進(jìn)行重新訓(xùn)練。
{補(bǔ)充:有以下兩個(gè)問(wèn)題:
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ù)偏斜問(wèn)題}
一對(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的使用說(shuō)明等可以參考(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 如果是A win,則C=C+1;otherwise,D=D+1;
The decision is the Max(A,B,C,D)
(也就是通過(guò)看投票的分?jǐn)?shù)來(lái)看分類情況)
評(píng)價(jià):這種方法雖然好,但是當(dāng)類別很多的時(shí)候,model的個(gè)數(shù)是n*(n-1)/2,代價(jià)還是相當(dāng)大的。與一對(duì)多相比不會(huì)有樣本不屬于任何一類的情形出現(xiàn),但是復(fù)雜度變大了。
End~
一個(gè)半月的實(shí)驗(yàn)室劃水要結(jié)束啦~
希望回家的小李 也會(huì)更新!
總結(jié)
以上是生活随笔為你收集整理的svm对未知数据的分类_SVM多分类之一对一与一对多的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 按键精灵易语言c,求助(把按键精灵的源码
- 下一篇: 零基础学Arcgis(十二)地图标注与注