1. 程式人生 > >整合學習-多樣性的度量和增強

整合學習-多樣性的度量和增強

多樣性度量

在整合學習中,我們希望分類器具有多樣性。多樣性度量(diversity measure)是用於度量整合個體分類器的多樣性。常規的做法是度量兩個分類器的相似性,通常有如下指標。
給定資料集 D = { ( x i

, y i ) } 1 m D=\{(\bm{x}_{i},y_{i})\}_{1}^{m}
,對二分類任務, y i { 1 , +
1 } y_{i}\in \{-1,+1\}
,對於兩個分類器 h i h_{i} h j h_{j} 的預測結果列聯表(contingency table)為:

h i = + 1 h_{i}=+1 h i = 1 h_{i}=-1
h j = + 1 h_{j}=+1 a a c c
h j = 1 h_{j}=-1 b b d d

(1)馬修斯相關係數(Matthews correlation coefficient)
針對二分類問題:
M C C i j = a d b c ( a + b ) ( a + c ) ( c + d ) ( b + d ) MCC_{ij}=\frac{ad-bc}{\sqrt{(a+b)(a+c)(c+d)(b+d)}}
從公式中可以看出,值域為 [ 1 , 1 ] . [-1,1]. 當預測結果中沒有 1 -1 + 1 +1 時, M C C i j = 0 MCC_{ij}=0
當預測結果全部正確時,正相關程度例如: M C C i j = 1 MCC_{ij}=1
當預測結果全部錯誤時,負相關程度最大: M C C i j = 1 MCC_{ij}=-1
當預測結果一半正確,一半錯誤時,且正負類標比例相同時,此時相當於隨機猜測:
h i = [ 1 , + 1 , 1 , + 1 ] h j = [ 1 , + 1 , + 1 , 1 ] M C C i j = 0 h_{i}=[-1, +1,-1,+1]\\h_{j}=[-1, +1,+1,-1]\\MCC_{ij}=0
所以相關係數越小,表明兩個分類器相似度越小,差異性越大。
使用sklearn中的函式可以實現馬修斯相關係數的計算,函式中同樣也包括了多分類情況下的計算:https://scikit-learn.org/stable/modules/model_evaluation.html#matthews-correlation-coefficient

>>> from sklearn.metrics import matthews_corrcoef
>>> y_true = [+1, +1, +1, -1]
>>> y_pred = [+1, -1, +1, +1]
>>> matthews_corrcoef(y_true, y_pred)  
-0.33...

(2)不合度量(disagreement measure)
d i s i j = b + c a + b + c + d dis_{ij}=\frac{b+c}{a+b+c+d}
值域為 [ 0 , 1 ] [0,1] 。不合度量實質上衡量了分類器結果不一致的比例,值越大,表明差異性越大。

多樣性增強

在整合學習中,需要有效地生成多樣性大的個體學習器,增強多樣性的思路一般是在學習過程中引入隨機性,常見的做法是對資料樣本、輸入屬性、輸入表示,演算法引數進行擾動。
(1)資料樣本擾動
給定的初始資料集,可以產生不同的資料子集,利用不同的資料子集訓練出不同的學習器,資料樣本擾動通常基於取樣法。在bagging中使用自助取樣,Adaboost使用序列取樣,此類做法簡單高效,使用很廣,對很多基學習器。例如決策樹,神經網路等,訓練樣本稍加變化就會導致學習器有顯著變動,此時樣本擾動對不穩定基學習器很有效;有一些基學習器對樣本擾動不敏感,比如線性學習器、支援向量機、樸素貝葉斯,k近鄰學習,稱為穩定基學習器。
(2)輸入屬性擾動
不同的屬性子空間提供了觀察資料的不同視角,從不同屬性子空間中訓練出的個體學習器必然不同。對包含大量冗餘屬性的資料,使用屬性子集能訓練出的多個多樣性大的學習器,還會因為屬性數的減少而節省時間開銷,同時,由於冗餘屬性較多,減少屬性後訓練出的個體學習器不至於太差。若資料只包含少量的屬性,或者冗餘屬性很少,此時對屬性擾動會導致每個分類器可用資訊大大較少,效果較差。
(3)演算法引數擾動
對學習器的超引數進行擾動。例如,可以通過調整正則化係數來控制神經網路的不同引數;決策樹的屬性選擇機制可以替換為其他屬性選擇機制。