SVM多類劃分問題 one vs rest

發信人: JustForward (好的), 信區: AI
標  題: SVM多類劃分問題
發信站: BBS 水木清華站 (Mon Jul 12 10:55:13 2004), 站內
一般情況下SVM有兩種多類劃分的方法,一種是one vs rest另外一種是pairwise。

下面是我根據所閱讀的文獻對兩種多類劃分的理解,請大蝦看看是否正確,並且還附帶有問題

1)one vs rest。
假如我有四類要劃分(也就是4個Label),他們是A、B、C、D。於是我在抽取訓練集的時候,分別抽取A所對應的向量作爲正集,B,C,D所對應的向量作爲負集;B所對應的向量作爲正集,A,C,D所對應的向量作爲負集;C所對應的向量作爲正集,A,B,D所對應的向量作爲負集;D所對應的向量作爲正集,A,B,C所對應的向量作爲負集,這四個訓練集分別進行訓練,然後的得到四個訓練結果文件,在測試的時候,把對應的測試向量分別利用這四個訓練結果文件進行測試,最後每個測試都有一個結果f1(x),f2(x),f3(x),f4(x).於是最終的結果便是這四個值中最大的一個。
2)pairwise。
還是假設有四類A,B,C,D四類。在訓練的時候我選擇A,B; A,C; A,D; B,C; B,D;C,D所對應的向量作爲訓練集,然後得到六個訓練結果,在測試的時候,把對應的向量分別對六個結果進行測試,然後採取投票形式,最後得到一組結果。
問題:1,我的上面的理解是否正確?2、投票機制具體是如何實現的,不知道什麼意思。
                                
非常感謝!

發信人: skynet (愛鱷人), 信區: AI
標  題: Re: SVM多類劃分問題
發信站: BBS 水木清華站 (Mon Jul 12 10:59:49 2004), 站內

you are right.
投票是這樣的.
A=B=C=D=0;
(A, B)-classifier 如果是A win,則A=A+1;otherwise,B=B+1;
(A,C)-classifer   如果是A win,則A=A+1;otherwise, C=C+1;
...
(C,D)-classifer   如果是A win,則C=C+1;otherwise,D=D+1;
The decision is the Max(A,B,C,D)

SVM 算法最初是爲二值分類問題設計的,當處理多類問題時,就需要構造合適的多類分類器。目前,構造SVM多類分類器的方法主要有兩類:一類是直接法,直接在目標函數上進行修改,將多個分類面的參數求解合併到一個最優化問題中,通過求解該最優化問題“一次性”實現多類分類。這種方法看似簡單,但其計算複雜度比較高,實現起來比較困難,只適合用於小型問題中;另一類是間接法,主要是通過組合多個二分類器來實現多分類器的構造,常見的方法有one-against-oneone-against-all兩種。

a.一對多法(one-versus-rest,簡稱OVR SVMs)。訓練時依次把某個類別的樣本歸爲一類,其他剩餘的樣本歸爲另一類,這樣k個類別的樣本就構造出了k個SVM。分類時將未知樣本分類爲具有最大分類函數值的那類。

假如我有四類要劃分(也就是4個Label),他們是A、B、C、D。於是我在抽取訓練集的時候,分別抽取A所對應的向量作爲正集,B,C,D所對應的向量作爲負集;B所對應的向量作爲正集,A,C,D所對應的向量作爲負集;C所對應的向量作爲正集, A,B,D所對應的向量作爲負集;D所對應的向量作爲正集,A,B,C所對應的向量作爲負集,這四個訓練集分別進行訓練,然後的得到四個訓練結果文件,在測試的時候,把對應的測試向量分別利用這四個訓練結果文件進行測試,最後每個測試都有一個結果f1(x),f2(x),f3(x),f4(x).於是最終的結果便是這四個值中最大的一個。

note:這種方法有種缺陷,因爲訓練集是1:M,這種情況下存在biased.因而不是很實用.

b.一對一法(one-versus-one,簡稱OVO SVMs或者pairwise)。其做法是在任意兩類樣本之間設計一個SVM,因此k個類別的樣本就需要設計k(k-1)/2個SVM。當對一個未知樣本進行分類時,最後得票最多的類別即爲該未知樣本的類別。Libsvm中的多類分類就是根據這個方法實現的。

還是假設有四類A,B,C,D四類。在訓練的時候我選擇A,B; A,C; A,D; B,C; B,D;C,D所對應的向量作爲訓練集,然後得到六個訓練結果,在測試的時候,把對應的向量分別對六個結果進行測試,然後採取投票形式,最後得到一組結果。

投票是這樣的.
A=B=C=D=0;
(A, B)-classifier 如果是A win,則A=A+1;otherwise,B=B+1;
(A,C)-classifer 如果是A win,則A=A+1;otherwise, C=C+1;
...
(C,D)-classifer 如果是A win,則C=C+1;otherwise,D=D+1;
The decision is the Max(A,B,C,D)

notw:這種方法雖然好,但是當類別很多的時候,model的個數是n*(n-1)/2,代價還是相當大的.

c.層次支持向量機(H-SVMs)。層次分類法首先將所有類別分成兩個子類,再將子類進一步劃分成兩個次級子類,如此循環,直到得到一個單獨的類別爲止。

對c的詳細說明可以參考論文《支持向量機在多類分類問題中的推廣》(計算機工程與應用。2004)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章