12个必须了解的机器学习模型评估指标
添加时间:2024-08-17 13:22:57
构建机器学习模型或深度学习模型的想法遵循建设性反馈原则。你构建一个模型,从指标中获取反馈,进行改进,并继续下去,直到达到理想的分类准确性。评估指标解释了模型的性能。评估指标(evaluation metrics)的一个重要方面是它们区分模型结果的能力。
本文解释了作为数据科学专业人士必须了解的 12 个重要评估指标。你将了解它们的用途、优点和缺点,这将帮助你相应地选择和实施它们。
在线工具推荐:Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线D模型格式在线、背景知识
评估指标是用于评估统计或机器学习模型的性能和有效性的定量措施。这些指标可以深入了解模型的执行情况,并有助于比较不同的模型或算法。
我见过很多分析师和有抱负的数据科学家甚至懒得去检查他们的模型有多稳健。一旦他们完成模型的构建,他们就会匆忙地将预测值映射到看不见的数据上。这是一个不正确的做法。基本事实是建立预测模型不是你的动机。这是关于创建和选择一个模型,该模型可以在样本外数据上提供较高的accuracy_score。因此,在计算预测值之前检查模型的准确性至关重要。
当我们谈论预测模型时,我们谈论的是回归模型(连续输出)或分类模型(名义或二进制输出)。每个模型中使用的评估指标都不同。
分类输出:SVM 和 KNN 等算法创建类输出。例如,在二元分类问题中,输出将为 0 或 1。今天我们拥有可以将这些类输出转换为概率的算法。但这些算法并没有被统计学界很好地接受。
混淆矩阵(confusion matrix)是一个 N X N 矩阵,其中 N 是预测类别的数量。对于当前的问题,我们有 N=2,因此我们得到一个 2 X 2 矩阵。它是机器学习分类问题的性能测量,其中输出可以是两个或多个类别。混淆矩阵是一个包含 4 种不同的预测值和实际值组合的表。它对于测量精确率、召回率、特异性、准确性以及最重要的 AUC-ROC 曲线非常有用。
我们手头问题的准确率为 88%。从上面两个表可以看出,阳性预测值很高,但阴性预测值很低。敏感性和特异性也是如此。这主要是由我们选择的阈值驱动的。如果我们降低阈值,这两对完全不同的数字将会更加接近。
在上一节中,我们讨论了分类问题的精度和召回率,并强调了为我们的用例选择精度/召回率基础的重要性。如果对于某个用例,我们试图同时获得最佳精度和召回率怎么办?F1-Score 是分类问题的精度值和召回值的调和平均值。F1-Score的公式如下:
现在,我想到的一个明显的问题是为什么要采用调和(harmonic)平均值而不是算术(arithmetic)平均值。这是因为 HM 对极端值的惩罚更多。让我们通过一个例子来理解这一点。我们有一个二元分类模型,结果如下:
Fbeta 衡量模型对于用户的有效性,该用户对召回率的重视程度是精确度的 β 倍。
这是一张信息非常丰富的表格。累积增益图表是累积 %Right 和累积 %Population 之间的图表。对于当前的情况,这是图表:
该图告诉你模型将响应者与非响应者区分开的效果如何。例如,第一个十分之一拥有 10% 的人口,拥有 14% 的响应者。这意味着我们在第一个十分位数处获得了 140% 的提升。
这张图告诉你什么?它指出我们的模型在第 7 个十分位之前表现良好。发布后,每十分之一都将偏向于无响应者。任何提升@十分位数高于 100% 直到最小第 3 个十分位数和最大第 7 个十分位数的模型都是一个好的模型。否则你可能会首先考虑过采样。
K-S 或 Kolmogorov-Smirnov 图衡量分类模型的性能。更准确地说,K-S是正负分布分离程度的度量。如果分数将总体分为两个单独的组,其中一组包含所有正样本,另一组包含所有负样本,则 K-S 为 100。
我们还可以绘制%Cumulative Good和Bad来查看最大分离。以下是示例图:
这里介绍的评估指标主要用于分类问题。到目前为止,我们已经了解了混淆矩阵、提升和增益图以及K-S图。让我们继续学习一些更重要的指标。
这又是业内流行的评估指标之一。使用ROC曲线的最大优点是它独立于响应者比例的变化。此声明将在以下部分中变得更加清晰。
ROC 曲线-特异性)之间的图。(1-特异性)也称为假阳性率,敏感性也称为真阳性率。以下是当前案例的 ROC 曲线。
如你所见,此阈值的灵敏度为 99.6%,(1-特异性)约为 60%。该坐标成为 ROC 曲线中的点。为了将该曲线简化为一个数字,我们找到该曲线下的面积 (AUC)。
提升程度取决于人群的总响应率。因此,如果总体的响应率发生变化,同一模型将给出不同的提升图。解决这个问题的方法可以是真实的提升图(找到每个十分位数的提升与完美模型提升的比率)。但这样的比率对于企业来说几乎没有意义。
AUC ROC 考虑预测概率来确定我们模型的性能。然而,AUC ROC 存在一个问题,它只考虑概率的顺序,因此没有考虑模型预测更有可能为正的样本的更高概率的能力。在这种情况下,我们可以使用对数损失,它只不过是每个实例的校正预测概率的对数的负平均值。
从向右缓慢下降的斜率可以明显看出,随着预测概率的提高,对数损失逐渐下降。然而,朝相反方向移动,当预测概率接近 0 时,对数损失会非常迅速地增加。
基尼系数有时用于分类问题。基尼系数可以直接从 AUC ROC 数得出。基尼系数只不过是ROC曲线和对角线之间的面积与上面三角形的面积之比。以下是使用的公式:
基尼系数在60%以上就是一个好的模型。对于本例,我们得到的基尼系数为 92.7%。
这又是任何分类预测问题最重要的评估指标之一。为了理解这一点,我们假设有 3 名学生今年有可能通过考试。以下是我们的预测:
RMSE 是回归问题中最常用的评估指标。它遵循这样的假设:误差是无偏的并且遵循正态分布。以下是 RMSE 需要考虑的关键点:
对于均方根对数误差,我们取预测值和实际值的对数。那么基本上,我们测量的方差有哪些变化?当我们不想惩罚预测值和实际值的巨大差异(当预测值和真实值都是巨大数字时),通常会使用 RMSLE。
我们了解到,当 RMSE 降低时,模型的性能将会提高。但仅凭这些值并不直观。
如果模型的性能等于基线 值就越高。具有所有正确预测的最佳模型的 R 平方值为 1。但是,在向模型添加新特征时,R 平方值要么增加,要么保持不变。R-Squared 不会因为添加对模型没有任何价值的特征而受到惩罚。因此,R-Squared 的改进版本是调整后的 R-Squared。调整后的 R 平方的公式由下式给出:
我们先来了解一下交叉验证的重要性。由于这几天日程比较忙,我没有太多时间参加数据科学竞赛。很久以前,我参加了 Kaggle 上的 TFI 竞赛。在不深入研究我的比赛表现的情况下,我想向你展示我的公共排行榜分数和私人排行榜分数之间的差异。
你会注意到,公共得分最差的第三个条目却是私人排名中最好的模型。“submission_all.csv”上面有超过 20 个模型,但我仍然选择“submission_all.csv”作为我的最终条目(效果确实很好)。是什么原因造成了这种现象呢?我的公共和私人排行榜的差异是由于过度拟合造成的。
交叉验证是任何类型的数据建模中最重要的概念之一。它只是说,在最终确定模型之前,尝试留下一个不训练模型的样本并在该样本上测试模型。
上图显示了如何使用实时样本验证模型。我们简单地将总体分为 2 个样本,并在一个样本上建立模型。其余人口用于及时验证。
如果我们将训练群体和前 50 个群体的训练按照 50:50 的比例进行划分,然后对其余 50 个群体进行验证,结果会怎样呢?然后,我们对另外 50 个样本进行训练,并对前 50 个样本进行测试。通过这种方式,我们可以一次性在整个群体上训练模型,但一次性训练了 50%。这在一定程度上减少了样本选择带来的偏差,但提供了较小的样本来训练模型。这种方法称为二折(2-fodl)交叉验证。
让我们从 2 折交叉验证中将最后一个示例推断为 k 折。现在,我们将尝试可视化 k 倍验证的工作原理。
幕后发生的事情是这样的:我们将整个总体分为 7 个相等的样本。现在,我们在 6 个样本(绿色框)上训练模型并在 1 个样本(灰色框)上进行验证。然后,在第二次迭代时,我们使用不同的样本作为验证来训练模型。在 7 次迭代中,我们基本上已经在每个样本上建立了一个模型,并将每个样本作为验证。这是减少选择偏差并减少预测能力方差的一种方法。一旦我们拥有了所有 7 个模型,我们就会计算误差项的平均值来找出哪个模型最好。
雷竞技APP官方
k = 2:我们只有 2 个与 50-50 示例相似的样本。在这里,我们每次仅针对 50% 的人群构建模型。但由于验证是一个重要的群体,验证性能的方差很小。
测量训练样本的性能是没有意义的。将及时验证批次放在一边是一种数据浪费。K-Fold 为我们提供了一种使用每个数据点的方法,这可以在很大程度上减少这种选择偏差。此外,K 折交叉验证可以与任何建模技术一起使用。