機器學習之SVM多分類

2021-09-29 18:05:14 字數 1569 閱讀 8759

以下內容參考:

王正海《基於決策樹多分類支援向量機岩性波譜分類》

svm本身是應用於二分類的,所以在處理多分類並且想應用svm有必要進行改進svm如果直接在目標函式上進行修改的話,就是將多個分類面的引數合併到乙個最優化問題上,顯然難度太大。

但是對於lr的話,可以直接拓展為softmax多分類。

常見的方法有兩種 one vs one and one vs all

其中libsvm就是one vs one 實現的。k類的資料集中,單獨為每兩類的樣本設計svm,進行分類。最終必須設計k(k-1)/2個分類器,最終用投票的方式進行選擇。這也是libsvm採用的方法,但是當類別有1000個的時候、、、

當對乙個未知樣本進行分類時,最後得票最多的類別即為該未知樣本的類別。

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)-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)

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

直接方法儘管看起來簡潔,但是在最優化問題求解過程中的變數遠遠多於第一類方法,訓練速度不及間接方法,而且在分類精度上也不佔優。當訓練樣本數非常大時,這一問題更加突出。正因如此,間接方法更為常用。

某一類歸為正類,其餘全部是負類
假如我有四類要劃分(也就是4個label),他們是a、b、c、d。

於是我在抽取訓練集的時候,分別抽取

(1)a所對應的向量作為正集,b,c,d所對應的向量作為負集;

(2)b所對應的向量作為正集,a,c,d所對應的向量作為負集;

(3)c所對應的向量作為正集,a,b,d所對應的向量作為負集;

(4)d所對應的向量作為正集,a,b,c所對應的向量作為負集;

使用這四個訓練集分別進行訓練,然後的得到四個訓練結果檔案。

在測試的時候,把對應的測試向量分別利用這四個訓練結果檔案進行測試。

最後每個測試都有乙個結果f1(x),f2(x),f3(x),f4(x)。

於是最終的結果便是這四個值中最大的乙個作為分類結果。

機器學習演算法之SVM的多分類

一 svm可以直接進行多分類嗎 svm本身是對付二分類問題的,所以在處理多分類的時候需要進行必要的改造。同樣是二分類的情況,logistic回歸可以直接拓展為softmax多分類。但是svm如果直接在目標函式上進行修改的話,就是將多個分類面的引數求解合併到乙個最優化問題上,顯然難度太大,目前也沒有任...

機器學習 SVM做多分類問題

引言 svm做二分類問題很簡單明瞭,但是如何用二分類構建多分類問題,自己查詢了部分資料,發現普遍分為兩種,一種是直接法,直接求解多目標函式優化問題,但這種方法計算量很大,不實用,另外一種是間接法,通過多個二分類來實現多分類,常見的有一對多和一對一兩種 最後針對一對一要構建n平方個二分類器,如果n過大...

SVM多分類思路

svm本身是乙個二值分類器 svm演算法最初是為二值分類問題設計的,當處理多類問題時,就需要構造合適的多類分類器。目前,構造svm多類分類器的方法主要有兩類 1 直接法,直接在目標函式上進行修改,將多個分類面的引數求解合併到乙個最優化問題中,通過求解該最優化問題 一次性 實現多類分類。這種方法看似簡...