多分類問題:有N個類別C1,C2,...,Cn,多分類學習的基本思路是“拆解法”,即將多分類任務拆分為若干個而分類任務求解,最經典的拆分策略是:“一對一”,“一對多”,“多對多”
(1)一對一
給定數據集D={(x1,y1),(x2,y2),...,(xn,yn)},yi€{c1,c2,...,cN},一對一將這N個類別兩兩配對,從而產生N(N-1)/2個二分類任務,在測試階段新樣本將同時提交給所有的分類器,於是將得到N(n-1)/2個分類結果,最終把預測最多的結果作為投票結果。
算法:

(2)一對多
一對多則是將每一個樣例作為正例,其他剩余的樣例作為反例來訓練N個分類器,如果在測試時僅有一個分類器產生了正例,則最終的結果為該分類器,如果產生了多個正例,則判斷分類器的置信度,選擇置信度大的分類別標記作為最終分類結果。
算法:

舉例描述:

一對一問題:如果有4個類,首先從中任選兩個類,進行標記,判斷某一個樣例更傾向於哪一個類,記錄預測的結果,對所有的樣例進行判斷,看他應該屬於兩個類中的哪一個,然后選擇其他的兩個類,重復這個過程,最后收集某一個樣例的全部判斷結果,會得到不同的結果,找到其中的所占的比例最大的結果即為最終的結果。
(3)多對多問題:
有一種最常用的技術是:”糾錯輸出碼“,分為兩個階段,編碼階段和解碼階段
編碼階段:對N個類別進行M次划分,每次將一部分類划分為正類,一部分類划分為反類,編碼矩陣有兩種形式:二元碼和三元碼,前者只有正類和反類,后者除了正類和和反類還有停用類,在解碼階段,各分類器的預測結果聯合起來形成測試示例的編碼,該編碼與各類所對應的編碼進行比較,將距離最小的編碼所對應的類別作為預測結果。

例如:在上圖(1)中,f1分類器使得所有的C2為正例,其他為反例,f2分類器使得C1,C3為正,剩余分類器如圖所示,因此可以得到一串輸入碼,以C1為例,其輸入碼為(-1,+1,-1,+1,+1)對於測試用例(-1,-1,+1,-1,+1)計算它與其他類的距離,即計算輸入碼和測試用例的歐式距離以C1和測試用例為例=(-1-1)2+(+1-1)2+(-1-1)2+(+1+1)2+(+1-1)2=12½
海明距離:
