SVM多分類的兩種方式

2021-08-17 06:24:30 字數 2723 閱讀 5411

以下內容參考:

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

svm本身是乙個二值分類器,svm演算法最初是為二值分類問題設計的,當處理多類問題時,就需要構造合適的多類分類器。 目前,構造svm多類分類器的方法主要有兩類,直接法、間接法。

一 直接法

直接在目標函式上進行修改

,將多個分類面的引數求解合併到乙個最優化問題中,通過求解該最優化問題「一次性」實現多類分類。這種方法看似簡單,但其計算複雜度比較高,實現起來比較困難,只適合用於小型問題中;

二 間接法

主要是通過組合多個二分類器來實現多分類器的構造,常見的方法有one-against-one和one-against-all兩種。

(1)一對多法(one-versus-rest,簡稱ovr svms)

訓練時依次把某個類別的樣本歸為一類,其他剩餘的樣本歸為另一類,這樣k個類別的樣本就構造出了k個svm。分類時將未知樣本分類為具有最大分類函式值的那類。

假如我有四類要劃分(也就是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)。

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

評價

優點:訓練k個分類器,個數較少,其分類速度相對較快。

缺點:①每個分類器的訓練都是將全部的樣本作為訓練樣本,這樣在求解二次規劃問題時,訓練速度會隨著訓練樣本的數量的增加而急劇減慢;

②同時由於負類樣本的資料要遠遠大於正類樣本的資料,從而出現了樣本不對稱的情況,且這種情況隨著訓練資料的增加而趨向嚴重。解決不對稱的問題可以引入不同的懲罰因子,對樣本點來說較少的正類採用較大的懲罰因子c;

③還有就是當有新的類別加進來時,需要對所有的模型進行重新訓練。

從「一對多」的方法又衍生出基於決策樹的分類:

首先將所有類別分為兩個類別,再將子類進一步劃分為兩個次級子類,如此迴圈下去,直到所有的節點都只包含乙個單獨的類別為止,此節點也是二叉樹樹種的葉子。該分類將原有的分類問題同樣分解成了一系列的兩類分類問題,其中兩個子類間的分類函式採用svm。下圖引用出自於王正海《基於決策樹多分類支援向量機岩性波譜分類》

(2)一對一法(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)-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,代價還是相當大的。

評價:

優點:不需要重新訓練所有的svm,只需要重新訓練和增加語音樣本相關的分類器。在訓練單個模型時,相對速度較快。

缺點:所需構造和測試的二值分類器的數量關於k成二次函式增長,總訓練時間和測試時間相對較慢。

從「一對一」的方式出發,出現了有向無環圖(directedacyclic graph)的分類方法。

圖1 有向無環圖

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

SVM多分類的幾種方式

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

SVM實現多分類的三種方案

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

C DLL匯出的兩種方式和鏈結的兩種方式

第一種 匯出方式 extern c declspec dllexport int plus int x,int y extern c declspec dllexport int sub int x,int y extern c declspec dllexport int mul int x,in...