從二分類到多分類

2022-09-07 23:15:23 字數 1616 閱讀 8261

從二分類到多分類,實際採用的是拆解法思想:將多分類問題拆分成許多二分類問題,為每乙個二分類問題訓練乙個分類器。測試時,對這些分類器的結果進行整合,得到最終**結果。

根據拆分策略不同,分為以下三類:

一對一(one vs. one, ovo)

訓練:將n個類別兩兩配對,產生n(n−1)/2個二分類任務,每個任務使用乙個二分類學習器進行學習;

測試:多個二分類學習器**得到結果中,最多的類別作為最終的分類結果。

一對其餘(one vs. rest, ovr)

訓練:每次將乙個類別作為正例,其餘其他類別樣例均作為反例,產生n個二分類任務;

測試:若僅有乙個分類器**為正類,則屬於該分類器所屬類別。若有多個二分類器**為正類,則通常考慮各分類器的**置信度,選擇置信度最大的類別作為分類結果。

多對多(many vs. many, mvm)

每次將若干個類作為正類,若干個其他類作為反類(可見ovo和ovr是mvm的特例),mvm的正反類構造必須有特殊的設計,不能隨意選取;以下一種最常用的mvm技術是:糾錯輸出碼(error correcting output codes, ecoc);

ecoc編譯碼(訓練和**):

編碼:對n個類別做m次劃分,每次劃分將一部分類別劃為正類,一部分劃為反類,從而形成乙個二分類訓練集;這樣一共產生m個訓練集,可以訓練出m個分類器;

解碼:m個分類器分別對測試樣本進行**,這些**結果標記組成乙個編碼;將這些**結果編碼與每個類別各自的編碼進行比較,返回其中距離最小的類別作為最終**結果;

值得注意的是,在劃分時,有兩種形式:一是二元碼,即每一類要麼劃分為正類要麼負類;二是三元碼,即除了正負類,也可以作為停用類。下面舉個例子:

以圖(a)二元碼為例,使用五種劃分方式,以f3為例,可以看出c3和c4類被劃為正類,c1和c2被劃為負類。測試樣本被每個分類器**,得到一組編碼,和每類編碼進行距離比較,取最近的進行標註。三元碼同理,距離計算如下:

ecoc特點:

ecoc對個別學習器的分類錯誤具有一定的容忍和修正能力(因此被稱為糾錯輸出碼);

ecoc編碼越長,即學習器數量越多,糾錯能力越強,但是計算、儲存開銷會增大;

對有限類別數,ecoc編碼長度超過一定範圍就會失去意義。

二分類 多分類

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

從二分類到多分類的遷移策略

一般情況下問題研究為二分類問題,在解決多分類問題時有時可以直接推廣到多分類,有時不能,不能推廣的時候主要用三種拆分策略對問題進行研究 一對一的策略 給定資料集dd這裡有nn個類別,這種情況下就是將這些類別兩兩配對,從而產生n n 1 2個二分類任務,在測試的時候把樣本交給這些分類器,然後進行投票 一...

二分類實現多分類

很多分類器在數學解釋時都是以二分類為例,其數學推導不適用於多分類,模型本身也只能用於二分類,如svm,adaboost 但是現實中很多問題是多分類的,那這些模型還能用嗎 改變這些模型的原理,重新推導數學公式,然後 實現。這種方法一般不可取,難度大,而且很麻煩 也叫一對其餘法 假設有n個類,每次把乙個...