機器學習 傳統二分類器實現多分類理論

2021-10-07 22:10:11 字數 1582 閱讀 7557

機器學習常見的分類器演算法有:邏輯回歸lr 支援向量機svm 決策樹dt 隨機深林rf 貝葉斯演算法bayes

起初設計的目的多是針對二分類問題,而我們在實際應用中總會遇到多分類問題,應該如何實現.

常見的幾種方法:

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

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

一對多法(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個分類器,個數較少,其分類速度相對較快。

這種方法有種缺陷,因為訓練集是1:m,這種情況下存在biased.因而不是很實用。可以在抽取資料集的時候,從完整的負集中再抽取三分之一作為訓練負集。

一對一法(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,adaboost 但是現實中很多問題是多分類的,那這些模型還能用嗎 改變這些模型的原理,重新推導數學公式,然後 實現。這種方法一般不可取,難度大,而且很麻煩 也叫一對其餘法 假設有n個類,每次把乙個...

二分類 多分類

怎麼樣把兩類的分類的模型推廣到多類上?答 a.一對多法 one versus rest,簡稱ovr svms 訓練時依次把某個類別的樣本歸為一類,其他剩餘的樣本歸為另一類,這樣k個類別的樣本就構造出了k個svm。分類時將未知樣本分類為具有最大分類函式值的那類。b.一對一法 one versus on...

從二分類到多分類

從二分類到多分類,實際採用的是拆解法思想 將多分類問題拆分成許多二分類問題,為每乙個二分類問題訓練乙個分類器。測試時,對這些分類器的結果進行整合,得到最終 結果。根據拆分策略不同,分為以下三類 一對一 one vs.one,ovo 訓練 將n個類別兩兩配對,產生n n 1 2個二分類任務,每個任務使...