很多分類器在數學解釋時都是以二分類為例,其數學推導不適用於多分類,模型本身也只能用於二分類,如svm,adaboost ,
但是現實中很多問題是多分類的,那這些模型還能用嗎
改變這些模型的原理,重新推導數學公式,然後**實現。
這種方法一般不可取,難度大,而且很麻煩
也叫一對其餘法
假設有n個類,每次把乙個類作為正例,其他類作為反例,訓練乙個二分類器,然後再拿乙個類作為正例,其他類作為反例,再訓練乙個二分類器,依次訓練n個分類器,組成多分類器。
如何進行**呢?
假設有5個類,來個新樣本,
放入第乙個二分類器(假設2為正例),看看是不是2類,如果是,記下乙個,如果不是,記下乙個 ,
然後放入下個二分類器(假設1為正例),看看是不是1類,如果是,記下乙個,否則,記下,
依次...
最後統計記下的結果,被分為每個類別的次數,取max
這個過程用如下圖表示
左圖
1. 每條直線就是乙個二分類器,每次都把乙個類和其他類分開
2. 三叉線為多分類器,實際上這條線是不存在的
3. 直線之間不可能平行,那必然相交,這意味著什麼呢?
// 來看紫色的點
// 在三角和其他類的分類器中,被分為三角;在方形與其他類的分類器中,被分為方形;在圓圈與其他類的分類器中,被分為
// 此時 三角和方形 2:2 打平,那到底紫色點屬於哪一類?只能隨便挑
// 這就是說存在一些模稜兩可的分類區域
右圖
紫色區域就是模稜兩可的分類區域
與一對多法思路類似,方法不同
假設有n個類,每次從中取2個類,訓練乙個二分類器,總共需要 cn
2=n*(n-1)/2個分類器,組成多分類器。
那如何**呢?
假設有5個類,來個新樣本,
放入第乙個分類器(1and2),若是1,記為,否則記為;
放入第二個分類器(1and3),若是1,記為,否則記為;
依次...
最後統計結果,被分到每個類的次數,取max
這種方法會不會產生一對多法的陰影呢?也會,如下圖
從圖上看出陰影部分小很多。
所以一對一法的準確率要高於一對多法,但其分類器個數較多, n*(n-1)/2-2,訓練速度慢
分為兩個步驟
1. 編碼:對n個類別進行m次不同的劃分,然後訓練m個二分類器。
2. 解碼:m個二分類器分別對樣本進行**,得到m長的編碼向量。
把編碼向量與每個類別對應的向量進行比較,如計算距離,取距離最近的作為目標類別。
這裡的類別劃分通過編碼矩陣指定,編碼矩陣主要有,二元碼(每個類別分別指定正類反類),三元碼(正,反,停用)
計算距離時,可以靈活計算,如每個分類器 的編碼與**編碼相減,取絕對值,如上圖,相同時相減為0,不同時相減取絕對值為2,和c1類別相比有3個分類器結果不同,最後計算距離為3,
當然也可以不同為1,同為0,最後選出的結果也是一樣的
一般來說編碼越長,意味著分類器越多,計算量也越大,但不一定效果越好
如層次支援向量機 h-svms
首先將所有類別分為2類,訓練乙個二分類器,然後將每個子類分為2類,訓練二分類器,依次,直到所有類分開。
1, 2, 3, 4,5, 6, 7
1, 2, 3, | 4, 5, 6, 7
1, || 2, 3 | 4, 5 ||| 6, 7
2||||3 4|||||5 6||||||7
這種方法的**可以依次送入二分類器,得到乙個確切的類即可停止。
二分類 多分類
怎麼樣把兩類的分類的模型推廣到多類上?答 a.一對多法 one versus rest,簡稱ovr svms 訓練時依次把某個類別的樣本歸為一類,其他剩餘的樣本歸為另一類,這樣k個類別的樣本就構造出了k個svm。分類時將未知樣本分類為具有最大分類函式值的那類。b.一對一法 one versus on...
從二分類到多分類
從二分類到多分類,實際採用的是拆解法思想 將多分類問題拆分成許多二分類問題,為每乙個二分類問題訓練乙個分類器。測試時,對這些分類器的結果進行整合,得到最終 結果。根據拆分策略不同,分為以下三類 一對一 one vs.one,ovo 訓練 將n個類別兩兩配對,產生n n 1 2個二分類任務,每個任務使...
決策樹matlab實現二分類或者多分類
maketree函式遞迴建立樹 tree struct isnode 1,a 0.0,mark 0.0,child 所有分支遞迴的存在child 中 函式gan d 計算d的資訊率 可以自動適應不同的分類標籤和類別個數 function tree maketree d,a tree struct i...