Press "Enter" to skip to content

机器学习之类别不平衡问题:不平衡问题的常用指标

本站内容均来自兴趣收集,如不慎侵害的您的相关权益,请留言告知,我们将尽快删除.谢谢.

在上一篇中,我们主要介绍了机器学习中分类模型的评价指标,这些指标主要是基于混淆矩阵演变而来,不同的指标有着不同的适用性。在不平衡问题中,单一的指标就不太适用了,如准确率等。在本篇中,我们来看看有哪些指标能够反映模型的效果,以及在不平衡问题中我们应该采用哪些指标作为我们评价的标准。本篇主要介绍 ROC 曲线和 PR 曲线及其对应的 AUC ,以及 K-S

 

那幺先来看看什幺是类别不平衡问题。

 

1 、什幺是类别不平衡问题

 

所谓的类别不平衡问题指的是数据集中各个类别的样本数量极不均衡。以二分类问题为例,假设正类的样本数量远大于负类的样本数量,通常情况下把样本类别比例超过 4:1 的数据就可以称为不平衡数据,因为此时某些分类器就会因为数据的不平衡性而无法达到性能上的要求。类别不平衡问题是现实中很常见的问题,最常见的例子是欺诈交易检测,欺诈交易的订单应该是占总交易数量极少部分;又如工厂中产品质量检测问题,合格产品的数量应该是远大于不合格产品的。因此,在类别不平衡问题中,一些简单、常用的评价指标(准确率和错误率等)就不再适用了。 在分类问题中,我们通常 是将比较 关注的类作为 正 类, 另外 的作为负类。

 

2、 ROC 曲线

 

ROC 曲线( Receiver Operating Characteristic )在风控领域、医学领域比较常用。 ROC 曲线曲线下的面积( AUC , Area under Curve ),能够用来直观的评价分类器泛化性能 的 好坏,其值介于 0.5 到 1 之间,值越大,表明分类器的泛化性能越好。在大多数比赛中常被用来作为评分标准。

 

ROC 曲线最初是针对二分类问题,因此于常用在二分类问题中,当然在多分类问题下,也能够获取到 ROC 曲线,本文主要介绍二分类问题下的 ROC 曲线。

 

 

ROC曲线图

 

可以看到 ROC 曲线的横轴坐标分别是我们上篇文章中提到的 False Positive Rate (FPR ,假正例率 ) 和 True Positive Rate (TPR ,真正例率 ) 又称 Sensitivity( 敏感性 ) 、 Recall ( 查全率,召回率 ) 。可以回顾下两者的具体定义。

 

 

上图的 ROC 曲线使用的 数据集的样本量为 5000 ,特征数量为 10 ,正负类 比例为 492: 4508 。将数据集的 80% 样本作为训练集, 20% 样本作为测试集,测试集中 正负样本的比例为 98 : 901 ,使用逻辑回归( LR , Logistic Regression )算法并画出该分类器的 ROC 曲线(蓝线)。

 

由于我们的分类器对每个样本的预测结果是该样本属于正负类的概率值。最终得到预测样本的类别还需要通过一个阈值进行判断,通常情况下,我们会认为属于哪个类别的概率大,该样本就属于哪个类,此时我们取的阈值 (threshold) 为 0.5 。得到样本的类别后我们就可以得到对应的混淆矩阵,也就能够得到在这个阈值下分类器的 TPR 和 FPR 了。

 

于是我们便可以去绘制 ROC 曲线了。将预测得到的样本概率从大到小排序,于是“最可能 ”属于正类的样本 排在了最前面, “最不可能 ”属于正类的 样本排 到了最后面 。然后分别取每一个样本的概率作为阈值,将整个 测试集切分 成两个部分 ,前一部分则作为正类 ,后一部分则作为 负类。 接着就可以 计算当前阈值下分类器的 TPR 和 FPR ,以 TPR 和 FPR 为纵、横轴作图。当测试集的样本数量较小时, ROC 曲线会显的“不光滑”呈现阶梯状,如下图所示,下图的测试集样本数为 19 。因此 ROC 曲线实际上是不同阈值下 TPR 和 FPR 的轨迹,是二者之间的一个权衡。曲线越靠近左上角,意味着模型的整体性能越好。

 

另外图中的红色虚线是随机线也称无识别率线,在该线上的任意一点都表示对应阈值下 TPR 与 FPR 相等,对应的 是 “ 随机 猜测 ” 模型,该 模型 没有任何的识别能力。

 

而 AUC 则是 ROC 曲线下的面积,其意义为:假设一个分类器的 AUC 值为 0.7 ,表示的是在测试集的正样本中随机抽取一个样本 A ,再从测试集的负样本中随机抽取一个样本 B ,在 70% 的情况下,分类器判断 A 为正样本的“可能性”比判断 B 为正样本的“可能性”大,即分类器预测 A 为正类的概率大于 B 。在随机线上方的点,即为 TPR 大于 FPR 的点,这样的点表示的是正样本被判断为正样本的概率大于负样本被判断为正样本的概率。

 

ROC 曲线的优缺点

 

由于 ROC 曲线使用了 TPR 和 FPR 两个指标,从 两者的计算公式可以看出, TPR 主要关注正类的预测结果, FPR 主要关注负类的预测结果, ROC 曲线结合二者,作为 二者之间的一个权衡 能够 反映模型的整体性能。

 

同时 , ROC 曲线 使用的两个指标, 都只 关注某一 类, 因此 当样本 中某一类的数量 发生变化,即样本 的 正负 类比例发生变动 时, ROC 曲线 也不会 发生明显 的变化。 同样 在上述的数据集上,我们将测试集的 负 样本个数 增加 10 倍, 即 测试集 中 正 负样本 变 为 98 : 9010 ,此时 的 ROC 曲线如 下图中绿 线 所示,蓝线 为 之前的 ROC 曲线 。 可以 看到 增加 了 10 倍 的 负 样本后, ROC 曲线没有 明显的变化 ,表明 ROC 曲线在类别数量发生明显改变的情况下依然能客观地识别出较好的分类器, 具有鲁棒性。 相反, 后续将提到的 PR 曲线在这 种 情况 下就会有明显的变化。

 

 

负样本增加10倍后的ROC曲线与原始ROC曲线图

 

在某些情况 下, ROC 曲线 不受 类别个数 影响 的 优点也是其缺点。 正如 上述的例子中,当 负 样本增加了 10 倍 之后,从 ROC 曲线 上无法 反映 出 变化 。 从下图的混淆 矩阵中, 我们可以 明显的看出两种情况下的区别。 可以 看到此时 实际为负,预测为正的样本 点大量增加( 即 FP ) , 这将导致 正 类的 精准率( Precision ) 显着 的降低 。从分类 报告中可以看到 正 类的 Precision 从 0.94 降低 到了 0.14 。也就是 说,在 极 不平衡 的 数据集下, ROC 曲线会给出 一个 过于 乐观的 估计 。

 

 

(a) 原始数据的混淆矩阵

 

 

(b) 负样本增加10倍后的混淆矩阵

 

(a) 原始数据的分类报告

 

 

precision recall f1-score support
Positive 0.94 0.17 0.29 98
Negative 0.92 1.00 0.96 901
Avg/

total

0.92 0.92 0.89 999

 

(b) 负样本增加10倍后 的分类报告

 

 

precision recall f1-score support
Positive 0.14 0.16 0.15 98
Negative 0.99 0.99 0.99 9010
Avg/

total

0.98 0.98 0.98 9108

 

3、 P-R 曲线

 

所谓 的 P-R 曲线就是 Precision – Recal l 的曲线, 也就是查准 率 – 查全 率 曲线 ,以 Precision 为横坐标 , Recal l 为 纵坐标就可以画出 P-R 曲线 了。

 

 

同样 使用上述的数据集( 正 负样本比例为 492:  4508 ) , 得到的 P-R 曲线如 下图所示 。

 

 

P-R曲线图

 

P-R 曲线 与 ROC 曲线 的相同之处 是 它们都使用 了 TPR ( R ecall 、 Sensitivity )作为 图像的一个坐标轴 , 另外与 ROC 曲线 一样, P-R 曲线 也 能 计算 AUC , 用来衡量 分类器 的 好坏 。 但是 与 ROC 曲线 的不同之处在于 另一个 坐标轴的选取, ROC 曲线 使用的是 FPR , 而 P-R 曲线 使用的是 Precision ,所以 P-R 曲线主要关注 正 类 样本的分类情况。 在 类别不平衡问题中 , 我们主要关心的是少数类的 情况 , 相较于 ROC 曲线 , P-R 曲线对 模型的评估会 更准确 。

 

对于上面将 正样本增加 10 倍 的情况下, P-R 曲线 的结果 如下 。 可以 看到, 此时 下图中 P – R 曲线与 原来相比有了 明显 的 下降,对应 的 PR – AUC 值显着 下降 。 而对应的 ROC 曲线在负样本增加 10 倍后整体趋势没有发生明显的变化。

 

 

负样本增加10倍后的P-R曲线与原始P-R曲线图

 

 

负样本增加10倍后的ROC曲线与原始ROC曲线图

 

4 、 K-S 曲线

 

K -S (Kolmogorov-Smirnov) 曲线与 ROC 曲线 一样 , 使用 TPR 和 FPR 两个 指标, 与 ROC 曲线 的区别 主要 在 横纵 坐标的选取上。 以 TPR 和 FPR 分别作为纵轴,以阈值作为横轴,画出两条曲线, K – S 曲线则是两条曲线在每一个阈值下的差值。 K -S 曲线中 的最大值 表示 K-S 统计量

 

K-S = max(TPR-FPR)

 

其 反映的是 分类器对 正负类 最优 的区分能力 , 此时所对应的阈值可以 区分 正负类的最优阈值。 K-S 值越大,表明分类器对正 负类的区分能力 越好。一般而言, K – S>0.2 即可认为分类器有比较好的区分能力。 下图分别为上文中原始数据集和负样本增加 10 倍后数据集对应的 K-S 曲线。

 

 

原始数据集的K-S曲线图

 

 

负样本增加10倍后的K-S曲线图

 

K – S 曲线 的起始点即 K-S 值为 0 时,表示 的是 没有区分能力的 “ 随机 猜测 ” 模型。 另外 需要注意 的是, K -S 值所 代表 的 仅仅是 分类器对 样本的分隔能力, 意味 着 正 负类样本完全分错的情况下, K-S 值 也 能够很高 。

 

本文 主要介绍了 类别 不平衡问题中常用的 指标 ,并对每 种 曲线的绘制方法以及优缺点做了比较全面的说明。具体 总结 如下:

 

1、  在 正负 数量充足 的情况下, 由于ROC曲线 兼顾正类与负类, 能够较好 的反映 模型 的 整体效果,且ROC曲线 不 容易 受 样本数量 变化的影响 。

 

2、  在 类别不平衡问题中, 此时 我们关注样本较少的类 (正 类 ),这 时 通过 P-R 曲线 能够 对 分类器有一个 较为 准确的判断 ,而ROC曲线会给出一个过于乐观的估计。

 

3、  具体场景 具体分析, ROC曲线 和 P-R曲线 都能 说明 一定的问题 ,可以 将二者同时画出,在图像中找到 最优 的点,同时结合混淆矩阵 以及 F1-scores 等 指标 来调整

 

4、  K-S 曲线是TPR- 阈值曲线与 FPR – 阈值曲线的差值,其最大值是 K-S统计量 ,反映的是分类器 对 正负类的区分能力 。K-S值 越大 表明 分类器的区分能力 越 强,但是并不能说明模型的分类准确性越好。

Be First to Comment

发表评论

电子邮件地址不会被公开。 必填项已用*标注