Cost-Sensitive Learning / ReSampling / Weighting / Thresholding / BorderlineSMOTE / AdaCost / etc.
期望代价
样本x被预测为正类的充要条件:被分类为正样本的期望代价更小
阈值的设定
在不改变算法本身的情况下,将非代价敏感算法转化为代价敏感算法,也称为meta-learning method
主要分为两大类
多数情况下样本被正确分类的代价为0,因此阈值默认取
非代价敏感算法的阈值一般设定为0.5,改变此阈值则间接实现了代价敏感学习
Thresholding的相关理论阐述
Theorem 1解读: 设算法将样本推断为正样本的初始阈值为p',为了达到目标阈值p,则训练集中负样本的数量应从初始值n'变为n,且满足以下比例关系:
阈值的变化趋势与负样本数成正比关系:为了达到更小的目标阈值,则应对负样本进行欠采样(Under Sampling)
Theorem 1为Sampling(采样法)提供了坚实理论基础: 严格论述了在二分类问题中,如何改变训练集中负样本的比例,使得非代价敏感算法学习到代价最小化的决策边界
常见的过采样方法
欠采样及其缺点:
对比代码: oversampling_contrast.py
对比结果:
Coverage、G_Mean的定义: 模型评估指标
G_Mean = sqrt(Recall * Specificity)
Coverage = 0.4 * TPR(FRP=0.001) + 0.3 * TPR(FRP=0.005) + 0.3 * TPR(FRP=0.01)
对比结论
高样本权重(大于1)可以视为对样本的复制,即为Over_Sampling;低样本权重(小于1)可以视为对样本的删减,即为Under_Sampling
样本的权重应与其被误分的代价成比: 少类样本一般为正样本,FN的代价高于FP的代价;应用Weighting(权重法)时,应对正样本赋予更高的权重
运用fit方法中的sample_weight参数实现
sklearn实现的监督算法、XGBoost、LightGBM均提供了fit方法,均含有sample_weight参数
以sklearn文档为例: fit方法中的参数sample_weightt
scale_pos_weight参数:
XGBoost与LightGBM不仅提供了sample_weight参数,还提供了scale_pos_weight参数
XGBOOST相关文档
正样本的先验概率加倍,等价于FN的代价加倍或FP的代价减半
论文原文
EasyEnsemble
BalanceCascade
Theorem 1: 设算法将样本推断为正样本的初始阈值为p',为了达到目标阈值p,则训练集中负样本的数量应从初始值n'变为n,且满足以下比例关系:
Theorem 2: 若训练集中正类样本的先验概率由b变为b',则从训练集中随机抽取的样本x为正样本的后验概率由p变为p',其中
Theorem 3: 对于二分类问题,若决策树的生成过程中以p(1-p)的平方根形式衡量数据集的不纯度,则训练集中正、负样本的先验概率变化不影响决策树的结构;其中p为数据集中正样本的先验概率
Paper_01: The Foundations of Cost-Sensitive Learning [Charles Elkan]
Paper_02: Cost-Sensitive Learning and the Class Imbalance Problem [Charles X. Ling et.al.]
Paper_03: Exploiting the Cost (In)sensitivity of Decision Tree Splitting Criteria [Drummond et.al.]
Paper_05: Exploratory Undersampling for Class-Imbalance Learning [Liu et.al.]