模型的评价指标(分类+回归)

一、分类预测任务

核心问题:预测一个样本属于哪个类别(如:垃圾邮件/非垃圾邮件,猫/狗/鸟)。

1. 基于混淆矩阵的指标

混淆矩阵是理解大多数分类指标的基础。我们以二分类问题(正例/负例)为例:

预测为正例 预测为负例
实际为正例 TP FN
实际为负例 FP TN
  • TP:真正例(预测对了,本来就是正的)

  • FP:假正例(预测错了,本来是负的,预测成了正的)

  • FN:假负例(预测错了,本来是正的,预测成了负的)

  • TN:真负例(预测对了,本来就是负的)

a) 准确率

  • 公式 :

  • 解释所有预测正确的样本占总体本的比例。是最直观的指标。

  • 适用场景:各类别样本数量均衡时。在类别不平衡的数据集上(如99%是负例,1%是正例),一个总是预测为负例的"笨"模型也能获得99%的准确率,但这没有意义。

b) 精确率

  • 公式 :

  • 解释在所有被预测为正例的样本中,有多少是真的正例。衡量的是模型的"查准"能力。

  • 适用场景:非常关注"减少误报"的场景。例如:

    • 垃圾邮件检测:把正常邮件预测为垃圾邮件(FP)的代价很高,我们希望尽可能保证被判断为垃圾邮件的就一定是垃圾邮件。

c) 召回率

  • 公式 :

  • 解释在所有真实的正例样本中,模型成功预测出了多少。衡量的是模型的"查全"能力。

  • 适用场景:非常关注"不漏报"的场景。例如:

    • 疾病诊断:宁愿误判(FP),也绝不能放过一个真正的病人(FN)。我们希望把所有病人都找出来。

d) F1-Score

  • 公式 :

  • 解释精确率和召回率的调和平均数。是两者的综合平衡。

  • 适用场景:当需要同时兼顾精确率和召回率,找到一个平衡点时。在类别不平衡的数据集上,F1通常比准确率更有用。

2. 其他重要指标

a) AUC-ROC

  • 解释 :这个指标考察的是模型整体的排序能力。ROC曲线描绘了当分类阈值变化时,真正例率(Recall)假正例率(FPR) 之间的关系。AUC是ROC曲线下的面积。

  • 数值意义

    • AUC = 0.5:模型没有区分能力,和随机猜测一样。

    • AUC = 1.0:模型是完美的分类器。

    • AUC 越接近 1,模型的整体分类性能越好。

  • 优点:对类别不平衡不敏感,衡量的是模型的"本质"排序能力,与阈值选择无关。

b) Log Loss

  • 解释 :也称为交叉熵损失。它衡量的是模型预测的概率分布与真实分布之间的差异。

  • 数值意义越小越好。一个完美的模型Log Loss为0。

  • 优点:对预测概率的准确性非常敏感。一个预测正例概率为0.51的样本,虽然分类正确了,但不如预测为0.99的样本"自信",Log Loss会惩罚这种不自信。


二、回归预测任务

核心问题:预测一个连续的数值(如:房价、股票价格、气温)。

您之前问的RMSE、MAE等都属于这一类。

1. 均方误差 & 均方根误差

a) MSE

  • 公式 :

  • 解释 :预测值与真实值之差的平方的平均值

  • 特点 :是回归任务中最常用的损失函数 。因为它平方的特性,对异常值(大的误差)非常敏感

b) RMSE

  • 公式 :
  • 解释:MSE的平方根。

  • 特点 :解决了MSE量纲与原始数据不一致的问题(比如房价误差从"元²"变回"元")。它同样对异常值敏感。RMSE会比MAE赋予更大的误差更高的权重

RMSE - 均方根误差

  • 全称:Root Mean Square Error

  • 它是什么:这是最常用、最通用的指标之一。它的计算思想是:

    1. 先计算每个预测值与真实值的误差

    2. 然后把每个误差平方(这样可以让较大的误差被显著放大,同时避免正负误差相互抵消)。

    3. 再计算这些平方误差的平均值

    4. 最后对平均值开平方根,使得结果的量纲(单位)变回和原始数据一致。

  • 数值代表什么

    • 数值永远是正数理想值是0,表示预测与真实值完全吻合。

    • 数值越小越好。数值越大,说明模型的预测误差越大。

    • 由于它对大的误差非常敏感(因为平方操作),所以当一个模型的RMSE比较低时,说明它不仅能准确预测,而且很少有"预测得特别离谱"的情况。

  • 例子

    • LSTM的RMSE是0.65,ConvLSTM是0.585。这说明ConvLSTM模型的整体预测精度更高,并且其预测结果中较大的错误更少。
2. 平均绝对误差
  • 公式 :

  • 解释 :预测值与真实值之差的绝对值的平均值

  • 特点 :比MSE/RMSE更稳健对异常值不敏感。它给出的是误差的"典型"大小。

MAE - 平均绝对误差

  • 全称:Mean Absolute Error

  • 它是什么:它的计算比RMSE更直观。

    1. 计算每个预测值与真实值的误差

    2. 对所有这些误差取绝对值(避免正负抵消)。

    3. 然后计算这些绝对值的平均值

  • 数值代表什么

    • 数值永远是正数理想值是0

    • 数值越小越好

    • 与RMSE不同,MAE不会特别放大大的误差,它对所有误差都"一视同仁"。因此,MAE更能反映"典型的"或"普通的"误差水平。

  • 例子

    • LSTM的MAE是0.5502,ConvLSTM是0.5521。两者非常接近,ConvLSTM略差一点点。这说明从"普通"的误差水平来看,两个模型的表现几乎一样。

RMSE 与 MAE 的直观对比

你可以这样理解:

假设你有两个模型,它们的预测误差分别是:

模型A: [1, -1, 1, -1]

模型B: [2, -2, 0, 0]

  • 模型A的MAE是1,RMSE也是1。

  • 模型B的MAE也是1,但RMSE是√2 ≈ 1.414。

这说明什么? 虽然两个模型的"平均"误差一样(MAE相同),但模型B出现了更大的单个误差(2和-2),所以它的RMSE更高。RMSE惩罚了那些"严重的错误"

3. 平均绝对百分比误差
  • 公式 :

  • 解释:将绝对误差表示为真实值的百分比,再求平均。

  • 特点非常直观,便于不同模型或数据集之间的比较。但当真实值 yiyi​ 为0或接近0时,公式会失效或产生极端值。

MAPE - 平均绝对百分比误差

  • 全称:Mean Absolute Percentage Error

  • 它是什么 :它衡量的是误差相对于真实值的百分比

    1. 计算每个预测值与真实值的误差。

    2. 将每个误差除以对应的真实值,得到相对误差。

    3. 取这些相对误差的绝对值,再计算平均值,最后以百分比形式表示。

  • 数值代表什么

    • 数值越小越好。理想值是0%。

    • 它的巨大优势是提供了一个容易理解的尺度。例如,MAPE=5%就意味着平均而言,你的预测会偏离真实值5%。

    • 它非常适合用于不同数据集或不同量级数据之间的模型比较。

  • 在表中的例子

    • LSTM的MAPE是2.362%,ConvLSTM是1.324%。这非常直观地告诉我们,ConvLSTM模型的预测平均只偏差了约1.32%,而LSTM偏差了约2.36%。显然ConvLSTM更优。
4. R² 决定系数
  • 解释 :衡量模型对目标变量方差的解释比例。可以理解为,与简单地使用目标变量的平均值作为预测相比,你的模型在多大程度上更好地拟合了数据。

  • 数值意义

    • R² = 1:模型完美拟合数据。

    • R² = 0:模型等于基准模型(均值模型)。

    • R² < 0:模型比基准模型还差。

  • 特点 :是一个无量纲的指标,非常适合评估模型的整体拟合优度。


总结与选择建议

任务类型 关键指标 核心关注点
分类任务 准确率 总体正确率(类别平衡时)
精确率 减少误报(FP)
召回率 减少漏报(FN)
F1-Score 精确率与召回率的平衡(类别不平衡时首选)
AUC-ROC 模型的整体排序能力,与阈值无关
Log Loss 预测概率的准确性
回归任务 MSE/RMSE 对大的误差敏感,应用最广
MAE 对异常值稳健,反映典型误差
MAPE 相对误差,直观便于比较
模型对数据方差的解释能力

如何选择?

  • 分类任务

    • 默认或均衡数据集:看 准确率F1-Score

    • 关注"宁可错杀,不可放过"(如疾病筛查):追求高召回率

    • 关注"精准打击,避免误伤"(如垃圾邮件过滤):追求高精确率

    • 需要一个全面的、与阈值无关的评价:看 AUC-ROC

    • 非常关心模型输出的概率是否校准:看 Log Loss

  • 回归任务

    • 默认选择:RMSE(因其对大误差的惩罚特性,应用最广)。

    • 数据中有异常值,想更稳健地评估:用 MAE

    • 需要向业务人员解释,或比较不同量纲的数据:用 MAPE

    • 想知道模型到底比"瞎猜"好多少:用

在实际工作中,通常不会只看一个指标,而是结合多个指标从不同角度对模型进行综合评估。希望这个总结对你有帮助!


一、数据集的划分与交叉验证

1、数据集的划分:训练集、测试集和验证集

2、交叉验证 Cross-Validation:将数据集划分为训练集,验证集,测试集

正常情况下如上图,当超参数C取1时,验证集的Acc最大,此时是最好的情况,我们会选这组最优的参数来跑测试集。但是当数据集不大的时候往往会出现下图问题:

为了解决以上问题,我们提出了一种**K-Fold交叉验证**的方法,就是将Test测试集以外的数据随机且均匀地分成k份,分别将每一份作为Validation验证集来求Acc,最后取每一份Acc和的平均值。如下图,将Test测试集以外的数据随机且均匀地分成4份,就叫**4-Fold交叉验证**。K-Fold交叉验证有个极端情况,那就是将K取最大值(样本总数),此时Training:Validation = K-1 :1,即每次从训练数据中抽取一条数据作为验证集,这就叫**留一交叉验证**。

2.1 分层交叉验证Stratified Cross-Validation

上面讲了**K-Fold交叉验证**,但是目前又面临了一个新问题如图,为了解决上图这种在训练集和验证集中正负样本不平衡的问题,所以**分层交叉验证**出现了,如下图所示:

2.2 嵌套交叉验证 Nested Cross-Validation

模型的好坏,取决于Test跑测试集所得到结果的准确性,现在出现一个情况:尽管在我们模型训练的过程中模型已经表现的很好了,但是因为我们Test测试集样本数量太少,导致测试出来的结果并不理想,此时我们说这个模型是个失败的模型未必就有点太冤枉我们的模型了,为了解决这种问题,我们提出了**嵌套交叉验证**。举个例子:下图是将所有数据集分成4等份,将每一份依次作为Test测试集去测试,剩下的数据作为Traning训练集。嵌套交叉验证就是我们会在每一次测试时,会再将Traning训练集再做一个3-Flod交叉验证。

二、分类模型的评估

1、混淆矩阵 Confusion Matrix

对于一个二分类问题来说,分类器所得到的结果是一个2X2的矩阵,比如下面这张判断是否是汉堡的机器学习例子:

对于一个三分类问题:比如判断图片是汉堡、薯条还是甜甜圈

对于N分类如下图,总之我们希望的就是绿色部分(猜对了)的数量尽量打些,而橙色部分(猜错了)的数量尽可能的小。

2、准确率Accuracy 精确率Precision 召回率recall F1值

对于对各分类器来说,怎样才能表示哪一个分类器表现的更好呢?有没有一个评估指标呢?

现在出现了一个极端的情况,我的分类器返回结果全猜对,这样就会导致召回率为1,但是精确率会很低。

结论就是,我们不能一味的去追求召回率或一味的去追求精确率,我们需要做到一个平衡。于是又出现了一个叫**F1**的值。

上面是对于二分类问题来说的,如果是N分类的话如下:

3、ROC曲线与AUC值

对于一个二分类问题,如何判断图片是否为汉堡,现在我需要给分类器一个阈值0.5,概率>0.5即判断为汉堡;反之判断为不是汉堡。

实际上我们也不知道这个阈值取多大,所以我们干脆在[0,1]之间随机取,多尝试几轮,最后我们就会得到很多个混淆矩阵,如下图:

**现在我们有一个需求:有没有一种方法能把所有混淆矩阵表示在一个二维空间里呢?**为了解决这个问题,于是**ROC曲线(Receiver Operator Characteristic)**就出现了。纵坐标是TPR值、横坐标是FPR值。

在一个混淆矩阵中,在[0,1]之间随机取不同的值,每次取一个阈值就可以计算出对应的TPR和FPR值,即在ROC曲线中就对应一个点,将所有点连起来就生成了一个ROC曲线。

现在有分类器A和分类器B,它们对应的ROC曲线如下图,请判断哪个分类器的效果更好。

因为在真实类别中,TP+FN的和恒不变,FP+TN的和恒不变,所以不论是TPR值还是FPR值的分母都恒不变,所以我们只需要看分子,在TPR中分子是TP(表示真正对的里面猜成"is"的数量)、而FPR中的分子是FP(表示真正错的里面猜成"is"的数量),所以**TPR越大且FPR越小表示分类器效果越好**,即**ROC曲线越靠近左上角越好**。

将这种关系我们用一个具体数值表示,那就是**AUC值(Area Under Curve)**,即ROC曲线与x轴围成的面积与整个面积的比值。如果**AUC值越大,那就代表该分类器的效果越好**。

以上是二分类的情况,那么对于N分类问题该如何求AUC值呢?

4、ROC曲线与PR曲线的关系

上面讲ROC曲线的时候说过,在一个混淆矩阵中,在[0,1]之间随机取不同的值,每次取一个阈值就可以计算出对应的TPR和FPR值,即在ROC曲线中就对应一个点,将所有点连起来就生成了一个ROC曲线。

如果我们将纵坐标换成Precision精确率的值,横坐标换成Recall召回率的值,将所有点连接成曲线就成了PR曲线,**ROC曲线是越靠近左上角表示分类器效果越好,PR曲线越靠近右上角表示分类器效果越好**。

那么ROC曲线与PR曲线有什么重要关系呢?

在一篇论文中表示,如果在ROC空间中L1曲线 **dominates** L2曲线,那么在PR空间中L1曲线也一定 **dominates** L2曲线 ,说人话就是:**如果在ROC空间中L1曲线所有点都位于L2曲线的上方,那么在PR空间中L1曲线的所有点也一定位于L2曲线的上方**,反之亦成立。

ROC曲线是根据TPR和FPR值来确定的,由公式可知TP和FP都会影响ROC曲线形状,所以**ROC曲线对正负样本都关心**;而PR曲线是根据Precision和Recall确定的,由公式可知PR曲线形状只受TP值的影响,所以**PR曲线对正样本(目标样本)更关心**。

相关推荐
2401_832298102 小时前
OpenClaw 4.5 深度解析:从安全硬化到生态重构,AI 执行框架迈入信任时代
人工智能·安全
格林威2 小时前
Linux系统工业相机:Linux udev 规则绑定相机设备
linux·运维·开发语言·人工智能·数码相机·计算机视觉·工业相机
小女孩真可爱2 小时前
paddleocr使用50显卡训练报错
人工智能·ocr
杀生丸学AI2 小时前
【4DGS】4C4D:4个摄像头4DGS成像
人工智能·深度学习·三维重建·3dgs·4dgs·动态重建·高斯溅射
盼小辉丶2 小时前
PyTorch实战(41)——Hugging Face在PyTorch中的应用
人工智能·pytorch·深度学习·hugging face
todoitbo2 小时前
装了 QClaw 之后,我卸掉了好几个 Mac 软件
人工智能·macos·ai·软件·openclaw·qclaw
宝贝儿好2 小时前
【LLM】第一章:分词算法BPE、WordPiece、Unigram、分词工具jieba
人工智能·python·深度学习·神经网络·算法·语言模型·自然语言处理
青瓷程序设计2 小时前
基于深度学习的【猫类识别系统】~Python+深度学习+人工智能+算法模型+2026原创+计算机毕设
人工智能·python·深度学习
FluxMelodySun2 小时前
机器学习(三十) 半监督学习与生成式方法
人工智能·机器学习