SVM多類劃分問題

2021-06-29 06:57:12 字數 1913 閱讀 8853

一般情況下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所對應的向量作為訓練集,然後得到六個訓練結果,在測試的時候,把對應的向量分別對六個結果進行測試,然後採取投票形式,最後得到一組結果。

具體實現

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

和one-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)。層次分類法首先將所有類別分成兩個子類,再將子類進一步劃分成兩個次級子類,如此迴圈,直到得到乙個單獨的類別為止。

svm 多類劃分問題

一般情況下svm有兩種多類劃分的方法,一種是one vs rest另外一種是pairwise。下面是我根據所閱讀的文獻對兩種多類劃分的理解,請大蝦看看是否正確,並且還附帶有問題 1 one vs rest。假如我有四類要劃分 也就是4個label 他們是a b c d。於是我在抽取訓練集的時候,分別...

svm的多類分類問題

最近在看svm用於說話人識別,需要對訓練語音進行正負類區分,從而訓練合適的分類面。現在把自己看的東西大致總結一下,如果有錯的,或者不明白的,請指出,謝謝!傳統的svm使用與說話人確認,因為svm是乙個二分類,而確認也是乙個二分問題,接受 或 拒絕 將目標說話人作為正類,選取合適的冒認者集合作為負類,...

將SVM用於多類分類

svm是一種典型的二類分類器,是採用最大間隔化策略來確定特徵空間中最優超平面的,也就是說它只能回答屬於正類還是負類的問題。而現實中要解決的往往是多類分類問題,如何將乙個二類分類器轉換成乙個多類分類器呢?一 一對多方法 比如有k個類別,每次分類都把1個類別作為正樣本,其餘k 1個類別作為負樣本,依次類...