SVM主要在求得最大Margin,並將資料分為兩類,若是要處理超出兩個Classifications問題上,已有不少學者提出了相關研究成果,大致分二個方向:

(1) 對多類別分類問題直接處理
(2) 將多類別分類問題分解成多個二類別問題來處理

 

在(2)中,分解成多個兩個Classifications問題又可歸納成以下兩種方法:

1. 一對多(One-against-all, OAA)

將所需解決的N類別分類問題分解成N個兩類別的分類問題來處理,在訓練過程中必須訓練N個分類器。

Training:當在訓練其中一個分類器時,當下該類別的資料樣本點為+1 class(當下的樣本就是該分類器的類別,此樣本為Training Data),而其餘類別的資料樣本點為-1 class(當下的樣本該分類器的類別,此樣本為Training Data)去進行兩類別分類問題的訓練,就這樣對N個分類器去訓練。
Testing:每筆測試資料(Testing Data)分別進入所訓練完的N個分類器測試,比較各分類器所得的輸出值而獲得分類結果。


2. 一對一(One-against-one, OAO)

將N個類別分類問題分解成N(N-1)/2個二類別分類問題來處理。所以必須訓練N(N-1)/2個分類器。

Training:從N個類別中任選取兩個類別為一個組合,因此共會有N(N-1)/2種組合。依照這每種二類別組合去進行各二類別分類問題的分類器訓練(也就是說,會有N(N-1)/2個分類器,每個分類器也都可以分出兩個類別,而這兩個類別都是N個類別裡的其中一個。反之OAA的分類器只能對該樣本分出該分類器中所能判斷出是不是N個類別中的第i個分類,+1 class就是該類別,-1 class則該類別)
Testing:利用每筆測試資料(Testing Data)分別進入由每個兩類別組合的分類器去訓練出N(N-1)/2個所得的分類結果,經由各分類器分類結果的投票過程,以獲得最多票數的類別即為此筆測試資料的最後的分類結果(也可以說,一筆Testing Data要經過N(N-1)/2個分類器去做分類,而每次的分類都會分出兩個類別中的其中一個,而會給定分數,所以依序會有N(N-1)/2個分數,最後再比較哪一個分類的分數較高,則這筆資料則是屬於該分類)

 

以上是我自己學習的成果,我的說法不一定百分之百正確,甚至以上有可能是錯的,所以希望大家可以給我意見或是糾正我的錯誤,那我才真的有學習到^^!

arrow
arrow
    全站熱搜

    dreamtails 發表在 痞客邦 留言(3) 人氣()