多样性度量
在集成学习中,我们希望分类器具有多样性。多样性度量(diversity measure)是用于度量集成个体分类器的多样性。常规的做法是度量两个分类器的相似性,通常有如下指标。
给定数据集
D
=
{
(
x
i
,
y
i
)
}
1
m
D=\{(\bm{x}_{i},y_{i})\}_{1}^{m}
D={(xi,yi)}1m,对二分类任务,
y
i
∈
{
−
1
,
+
1
}
y_{i}\in \{-1,+1\}
yi∈{−1,+1},对于两个分类器
h
i
h_{i}
hi和
h
j
h_{j}
hj的预测结果列联表(contingency table)为:
h i = + 1 h_{i}=+1 hi=+1 | h i = − 1 h_{i}=-1 hi=−1 | |
---|---|---|
h j = + 1 h_{j}=+1 hj=+1 | a a a | c c c |
h j = − 1 h_{j}=-1 hj=−1 | b b b | d 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)}}
MCCij=(a+b)(a+c)(c+d)(b+d)ad−bc
从公式中可以看出,值域为
[
−
1
,
1
]
.
[-1,1].
[−1,1].当预测结果中没有
−
1
-1
−1或
+
1
+1
+1时,
M
C
C
i
j
=
0
MCC_{ij}=0
MCCij=0。
当预测结果全部正确时,正相关程度例如:
M
C
C
i
j
=
1
MCC_{ij}=1
MCCij=1
当预测结果全部错误时,负相关程度最大:
M
C
C
i
j
=
−
1
MCC_{ij}=-1
MCCij=−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
hi=[−1,+1,−1,+1]hj=[−1,+1,+1,−1]MCCij=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}
disij=a+b+c+db+c
值域为
[
0
,
1
]
[0,1]
[0,1]。不合度量实质上衡量了分类器结果不一致的比例,值越大,表明差异性越大。
多样性增强
在集成学习中,需要有效地生成多样性大的个体学习器,增强多样性的思路一般是在学习过程中引入随机性,常见的做法是对数据样本、输入属性、输入表示,算法参数进行扰动。
(1)数据样本扰动
给定的初始数据集,可以产生不同的数据子集,利用不同的数据子集训练出不同的学习器,数据样本扰动通常基于采样法。在bagging中使用自助采样,Adaboost使用序列采样,此类做法简单高效,使用很广,对很多基学习器。例如决策树,神经网络等,训练样本稍加变化就会导致学习器有显著变动,此时样本扰动对不稳定基学习器很有效;有一些基学习器对样本扰动不敏感,比如线性学习器、支持向量机、朴素贝叶斯,k近邻学习,称为稳定基学习器。
(2)输入属性扰动
不同的属性子空间提供了观察数据的不同视角,从不同属性子空间中训练出的个体学习器必然不同。对包含大量冗余属性的数据,使用属性子集能训练出的多个多样性大的学习器,还会因为属性数的减少而节省时间开销,同时,由于冗余属性较多,减少属性后训练出的个体学习器不至于太差。若数据只包含少量的属性,或者冗余属性很少,此时对属性扰动会导致每个分类器可用信息大大较少,效果较差。
(3)算法参数扰动
对学习器的超参数进行扰动。例如,可以通过调整正则化系数来控制神经网络的不同参数;决策树的属性选择机制可以替换为其他属性选择机制。