机器学习入门系列 - 概念篇(2)

ROC与AUC
接下来我们来看一下2分类问题最重要的评估指标,ROC和AUC

ROC曲线

ROC曲线其实是多个混淆矩阵的结果组合,如果在上述模型中我们没有定好阈值,而是将模型预测结果从高到低排序,将每个概率值依次作为阈值,那么就有多个混淆矩阵。
对于每个混淆矩阵,我们计算两个指标,纵坐标是召回率。横坐标是假正类率(作者注:即FPR,False Positive Rate. FPR= FP / (FP + TN)),这样就得到了ROC曲线。里面的逻辑比较复杂我们不细说,但总结的来讲,ROC曲线的面积越大,模型的效果越好;ROC曲线光滑意味着过拟合越少。 但是我们看一个图是难以比较两个模型的效果的。 所以我们把ROC的阴影面积计算出来,就是AUC了。AUC - Area Under Curve被定义为ROC曲线下的面积。AUC值越大,证明这个模型越好。 AUC是我们最重要的评估指标。ROC不好量化,而AUC在0.5~1之间。 值越大越好。非常容易量化模型好坏。

作者注:对以上不明白的,建议【一定要仔细】看下这个ROC百科,结合理解。

分组AUC验证
OK,我们现在终于有了AUC和一些常用的评估指标,常规理解,有了指标就可以开干了! BUT!有了这些往往还是不够,因为我们每一个模型都是有业务场景的,业务场景有很复杂的逻辑和不同的侧重点。 以前在测试模型的时候经常的漏测场景就是忽略了业务含义而做的测试。 举个例子,我们拿某视频网站的视频推荐系统来说。 我们使用二分类模型来做推荐问题, 怎么做呢, 我们有一个用户, 同时有2000个视频候选集,我们分别用这些视频和用户分别用模型算出2000个概率,意思是每个视频用户会点击的概率。然后从高到低排序。把排行前面的视频推荐给用户。 所以我们就把一个推荐系统的问题转换为一个分类问题。只不过这里我们不设置阈值了而已。如果按照我们刚才讲的评估指标,我们计算了AUC,召回,精准。 就可以了么,大家想一想这样做有没有什么问题? 问题是这些指标的统计都是建立在现有测试集下进行的统计的,粒度是非常粗的。 也就是说我们并没有对测试数据进行分类。 举个例子, 在视频网站中, 新用户和新视频的点击情况可能也是比较看重的指标。 尤其是视频网站上每日新增的视频是很多的,对于新增的热点视频的曝光率也就是被推荐的概率也是很重要的维度。 假如我们有一个模型,我们测试之后发现各项指标都很好,但其实可能它对新用户或者新视频的预测并不好,只是由于新增的用户和视频在整个数据集中的占比太小了,所以从整体的评估指标上来看是比较好的。 所以一般我们测试一个模型的时候,要根据业务引入分组AUC的验证。

分组AUC示例分析

什么是分组AUC呢, 是就我们把预测结果按照某一个字段或者某一种维度进行分组,去统计每一个组的AUC,来评估一下我们的模型在相应的业务场景下是否都有比较好的效果。 比如上图是根据用户性别做的分组,如果我们的业务中性别是个很重要的维度,例如购物网站。我想知道我推荐的东西男性和女性都有不错的点击率,而不是清一色偏向了女性用户。 当然这只是个比喻,实际上的情况要根据自己的业务来定。同时统计分组AUC也可以评估测试数据的有效性。 像这个图中除了分组AUC之外也会统计每个组中是否有全0样本,或者全1样本。 如果出现了这种情况,说明我们的测试数据在采集上本身就有问题。

参考文献及原文地址:
孙高飞(ycwdaaaa@testerhome): AI测试深度学习基础 (十三)--演讲稿: 机器学习服务的测试探索

你可能感兴趣的:(机器学习入门系列 - 概念篇(2))