作为策略产品经理,了解机器学习的相关知识,一定程度上可以帮助到日常工作。在本篇文章里,作者便拆解和总结了机器学习的分类任务离线效果评估指标,一起来看看吧,也许会对你有帮助。
前言:网上已经有很多文章介绍AUC、召回率和准确率等指标了,但更多只是从计算公式来讲解,并没有结合工作中实际的业务场景。一上来就介绍指标计算,并没有给到读者一个对于机器学习任务离线效果评估指标体系的整体认知。同时关于AUC指标和ROC曲线的介绍很多文章讲解的都很难理解,本次我们分为两个系列第一篇先介绍分类任务的离线效果评估指标,第二篇介绍回归和聚类任务的离线效果评估指标。
一、机器学习任务类型
在介绍各类机器学习任务离线效果指标评估之前,我们需要清楚机器学习的任务分类。
机器学习的任务类型可以分为两大类,一类是预测类任务比如销量预测、人群分类、推荐系统等,针对新的输入数据做出判断即可。另一类是生成类任务比如ChatGPT模型的构建,需要模型基于历史数据学习后可以完全从零生成新的内容。
本篇文章我们核心介绍机器学习预测类任务。预测类机器学习的任务类型还可以细分为以下三种:
主要分为分类、聚类和回归三大类任务,下面我们分别展开介绍。
1. 分类任务
对模型输入相关数据,模型输出该条数据属于已知K类中的哪一类。
分类任务又可以分为二分类和多分类,比如推荐系统CTR预估就是二分类的任务,模型预估用户对于内容是点击还是不点击,人脸识别就是多分类任务,因为人脸的种类有非常多。
很多读者会认为推荐是回归任务,觉得模型最终输出了一个用户对于推荐内容的兴趣度,是一个具体的数值。但实际推荐系统在线上用户给的反馈就是点击或不点击,我们并不知道用户对于内容的真实兴趣度是多少,无法量化。模型训练时所输入的训练数据的标签也只是点击和不点击,并不是兴趣度是多少,所以此处需要特别注意不能把推荐系统CTR预估任务的类型弄混淆了。
2. 聚类任务
对模型输入相关数据,并设置希望将整体数据分成K个类,模型自动将数据分为K个类。如上图所示,我们将全部数据分为了5个Cluster(簇),也就是5个类。
常见的应用场景有人群分类和图形分类等,将全部的用户按照彼此之间的相似度可以分为K个类。
3. 回归任务
对模型输入相关数据,模型返回具体的预测数值,结果是一个连续值。分类和聚类任务最终模型的输出都是这个样本属于哪一个类别,但是回归任务是输出最终实际的数值是什么,是一个具体的数字。常见的应用场景有销量预测和智能定价。
二、分类任务离线评估指标
不同的任务类型决定了我们使用不同的指标来离线评估模型的效果。本次我们先介绍分类任务的离线效果评估指标,我们以推荐系统CTR预估模型为例。
1. 混淆矩阵
针对分类任务在进行模型效果评估时首先要基于测试集的实际结果和评估结果构建一个混淆矩阵(Confusion Matrix)。本次模型预估用户A对100个物料的点击情况,预估用户点击了哪些物料,没有点击哪些物料 ,是一个二分类任务:“点击”或“不点击”。上图中绿色代表模型在测试集上的预估数据,黄色代表测试集中物料的实际类别。
1)TP (True Positive,真正例)
预测为正样本且真实也为正样本的个数,也就是预估用户会点击实际用户也点击了的样本个数,上述混淆矩阵中为8;
2)FP (False Positive,假正例)
预测为正样本但真实为负样本的个数,也就是预估用户会点击实际用户未点击的样本个数,上述混淆矩阵中为10;
3)FN (False Negative,假负例)
预测为负样本但真实为正样本的个数,也就是预估用户不会点击但实际用户点击了的样本个数,上述混淆矩阵中为2;
4)TN (True Negative,真负例)
预测为负样本且真实也为负样本的个数,也就是预估用户不会点击实际用户也没有点击的样本个数,上述混淆矩阵中为80;
5)Accuracy Rate(准确率)
准确率是指模型整体预测结果的准确性,是否能够将正样本和负样本准确的区分开,既没有错判也没有漏判。计算公式如下:
ACC= (TP+TN)/(TP+FP+TN+FN)=(8+80)/100=0.88
但是准确率存在一个误区,比如金融反欺诈场景里,欺诈用户整体占比很少可能就1/1000,如果欺诈用户识别模型将所有的用户都预测为负样本(此场景下欺诈用户是正样本,正常用户是负样本) ,那么模型的准确率也是99.9%。所以当样本中正负样本比例严重失调时,准确率不具备参考意义。
6)Recall Rate(查全率 or 召回率)
查全率或召回率的定义是指模型能够将数据中所有正样本找到的覆盖度,计算公式如下:
R= TP/(TP+FN)=8/(8+2)=0.8
本案例中真实的正样本一共10个,模型挑选出来8个,所以查全率是80%。查全率同样存在误区,如果模型预估时召回了大量的样本作为正样本,恰好这些预估的正样本把所有真实的正样本都包含了,这样计算出来的查全率就是100%。
但是这里面就会存在很多误判,如果是金融反欺诈模型误判太多就会对正常用户的金融服务使用造成了非常不好的体验。所以我们在看查全率的时候同时也要看模型预估的精确性,也就是下面的查准率指标。
7)Precision Rate(查准率 or 精准率)
查准率或精准率的定义是指模型预估中的正样本多少是真实的正样本,模型预估的精准性如何。计算公式如下:
P= TP/(TP+FP)=8/(8+10)=0.44
本案例中模型预估了18个正样本,但实际只有8个才是真实的,所以查准率是44.4%。查准率也同样存在误区,很多模型在设计时为了担心误判将模型设计的非常严苛,虽然最后模型筛选出来的正样本都是准确的,查准率是100%,但是模型也漏筛了大量的正样本,对比查全率的误区,从一个极端走向了另一个极端。
8)F_β-Score
所以实际模型效果评估时我们需要将查全率和查准率综合在一起进行综合效果评估,也就是 F_β-Score 。计算公式如下:
F_β=((1+β^2)*R*P)/(R+β^2*P)
当 β=1 时就是均衡考虑查全率和查准率的重要性;当 β>1 时,场景更侧重查全率;当 0 <β<1 时, 场景更侧重查准率。在不同场景下对于模型的查准率和查全率侧重点不一样,比如推荐场景更看重查准率,确保推荐给用户都是用户真实喜欢的,不希望引起用户的负反馈。而在金融欺诈场景更看重查全率,确保将所有有风险的客户都能够召回,宁愿错杀一千也不能放过一个。
2. ROC曲线与AUC指标
上述介绍了很多基础指标,即使我们有了 F_β-Score 也很难去规避因为正负样本不均衡导致得到的查全率和查准率并不能够客观真实的反应模型真实的水准的情况。样本的不均衡,要么是正样本太多负样本太少,要么就是正样本太少负样本太多,那么我们能不能构建两个指标分别站在真实的正样本和真实的负样本视角去统计效果了?这样的话即使样本不均衡,但是我们统计的时候两边都进行了统计,就不会因为样本不均衡导致模型效果评估片面了。
这样的两个指标就是真正率( True Positive Rate )和假正率( False Positive Rate )。
真正率=True Positive Rate=TPR= TP/(TP+FN)
真正率的计算公式和查全率计算公式一样,站在所有正样本视角,统计模型能够将所有真实正样本都可以找出来的概率。
假正率=False Positive Rate=FPR= FP/(FP+TN)
假正率是完全站在所有负样本视角,统计模型将真实负样本误识别为正样本的概率。TPR代表的是模型预测响应的覆盖度,FPR代表的是模型预测响应的虚报程度。一个好的模型一定是TPR = 1,FPR = 0,模型能够将所有的真实正样本识别出来,同时模型也不进行虚假上报。
那么我们如何用TPR和FPR两个指标去综合评估模型的分类效果了。因为我们在分类任务中构建出来是一个打分模型,模型是没法直接告诉我们这个样本是正还是负,模型是针对每个样本进行打分。当模型训练好以后我们需要去设定一个分类阈值(Threshold),当分数 > 阈值时,则此样本为正,当分数 ≤ 阈值时,则此样本为负。
每一个阈值都会对应一组(FPR, TPR),我们以FPR为横坐标TPR为纵坐标,一组(FPR, TPR)就是一个点。那么我们应该将阈值设置为多少才合适了?阈值的设置很关键,这个将会影响模型在线上的效果,如何去找出这个最佳阈值?
通用的方法是将模型针对所有预测样本的打分按照从高到低排序,将每一个预测值分别作为分类阈值,这样就可以得到多组(FPR, TPR)。将预测值中最大值作为阈值时,只有大于该值才能是正样本,那么所有样本均为负样本,TPR 和FPR均为 0;将预测值中最小的值作为阈值,那么所有样本均为正样本,TPR 和FPR均为1。基于多组(FPR, TPR),我们可以得到如下图所示的一个曲线图:
上图这个曲线,我们一般称为ROC曲线。ROC(Receiver Operating Characteristic Curve),接收者操作特征曲线,最开始应用于二战雷达分析技术里,后来被引进到了机器学习中。
上图中右侧图是一个将实际预测值作为分类阈值遍历后得到的ROC曲线,当预测的样本够多,ROC曲线就如左侧图所示是一个平滑的曲线。
一个好的ROC曲线,一定是TPR越大的同时FPR越小,模型曲线越陡,而且ROC曲线本身基本不随着正负样本比例的变化而变化。针对当前训练出来的模型我们如何去取一个合适的阈值来作为正负样本的分割线了?
如上图里面的左图所示,一般我们是找ROC曲线里离(0,1)最近点的阈值取值作为当前模型最佳阈值取值,因为(0,1)点是最优的TPR和FPR的取值,离(0,1)最近的点兼顾了TPR和FPR。
假设我们现在针对同样一个分类任务训练出来了两个模型,我们需要从中选择出最优的一个模型,我们能否借助ROC曲线了?
我们针对两个模型分别去画出ROC曲线,如果模型A的ROC曲线完全将模型B的ROC曲线包围,那么即为在相同FPR的情况下,模型A的TPR指标永远高于模型B,很明显模型A的效果要优于模型B。
但实际情况,一般是模型A和模型B各自的ROC曲线有交叉一部分重叠一部分不重叠,那么如何去评估?
这时候引入了一个新的指标AUC,AUC指标全称Area Under Curve(曲线下的面积)。我们去计算ROC曲线下的面积,理论上ROC曲线越陡越好,FPR越小,TPR越大,所以AUC的取值范围是[0,1],AUC越大代表模型效果越好。
AUC指标的业务意义是模型对于样本的排序能力,在CTR预估模型里它代表的业务含义是在一个正样本和一个负样本中,模型将正样本排序在负样本前的概率。
再通俗一点就是说随机选两个内容,模型能够将用户更感兴趣的内容排序在前的能力。当我们将ROC曲线里(0,0)和(1,1)两个点直接连起来时,AUC = 0.5,一个随机分类模型的AUC就是0.5,所以实际模型的AUC值都是大于0.5的。
在离线效果评估时,模型在测试集上的AUC指标表现必须得达到0.7以上才可能在线上有比较明显的正向效果,低于0.7线上效果不显著,因为随机模型的基准AUC就是0.5。
AUC指标如果在0.8-0.9之间,模型的效果就非常好了;实际业务中分类模型的AUC指标不太可能大于0.9,大于0.9基本是测试集数据选取有问题或者数据穿越了。工业界里还没有哪家互联网公司的CTR预估模型离线AUC指标可以大于0.9。作为策略产品经理需要知道AUC的正常取值范围,当算法工程师训练了一个新的分类模型时,第一时间问的指标就应该是离线AUC指标的提升。
下一篇我们将介绍机器学习回归和聚类任务的离线效果评估指标体系。
本文由 @King James 原创发布于人人都是产品经理。未经许可,禁止转载。
题图来自 Unsplash,基于 CC0 协议