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