当前位置: 首页 > news >正文

【机器学习深度学习】模型微调时的4大基础评估指标(1)

目录

前言:基础评估指标(从 “对与错” 到 “准与全”)

一、基础评估4大指标

二、类比理解

2.1 准确率(Accuracy):整体对的比例

2.2 精确率(Precision):你说是垃圾的,有多少真的是?

2.3 召回率(Recall):所有垃圾邮件中,你抓住了多少?

2.4 F1 分数(F1 Score):“精确率”和“召回率”的平衡点

小结

三、一个简单的例子练练手

四、大典型业务场景指标侧重


前言:基础评估指标(从 “对与错” 到 “准与全”)

在自然语言处理(NLP)或计算机视觉(CV)等任务中,模型微调(Fine-tuning)已成为迁移学习不可或缺的步骤。我们常说“调模型”,可问题是,调到什么程度才算调得好?核心就在于:如何评估微调后的模型是否达标

本文将系统梳理模型微调过程中的核心评估指标,帮助你科学判断模型性能,避免“调不准、评不清”的尴尬局面。


一、基础评估4大指标

微调模型后,第一步就是搞清楚“预测得准不准”。以下四类基础指标,是所有监督学习任务的评估基石:

指标公式适用场景
准确率 Accuracy(TP + TN) / (TP + TN + FP + FN)类别均衡时反映整体正确性
精确率 PrecisionTP / (TP + FP)假正例代价高(如垃圾邮件)
召回率 RecallTP / (TP + FN)假负例代价高(如疾病漏诊)
F1 分数 F1 Score2 × (P × R) / (P + R)平衡考虑“准”与“全”,适合类别不平衡场景

理解提示

  • TP:预测为正且实际为正

  • FP:预测为正但实际为负

  • FN:预测为负但实际为正

  • TN:预测为负且实际为负


二、类比理解

📦 假设你在做一个“垃圾邮件识别器”

你的模型要判断每封邮件是否是垃圾邮件(正类),正常邮件是非垃圾邮件(负类)。

模型预测后你得到这样的结果:

实际 \ 预测垃圾邮件(正类)正常邮件(负类)
垃圾邮件(正类)✅ 预测对了:TP❌ 漏掉了:FN
正常邮件(负类)❌ 误判了:FP✅ 没判断是垃圾:TN
缩写中文名称含义(预测结果 vs 实际情况)举例说明
TP真正例模型预测是垃圾邮件,实际也是垃圾邮件你说它是垃圾,它也确实是垃圾(预测对了)
FP假正例模型预测是垃圾邮件,但实际是正常邮件你误把正常邮件当成垃圾邮件(误判)
FN假负例模型预测是正常邮件,但实际是垃圾邮件你没发现它是垃圾邮件(漏掉了)
TN真负例模型预测是正常邮件,实际也是正常邮件你说它是正常邮件,它也确实正常(预测对了)

 🧠 四个指标通俗解释

2.1 准确率(Accuracy):整体对的比例

你总共判断了多少封邮件?你猜对了多少?

📌 公式:

Accuracy = (TP + TN) / 总邮件数

 ✅ 适合用在“垃圾邮件”和“正常邮件”数量差不多时。如果90%都是正常邮件,那模型哪怕啥都不做,只说“都是正常邮件”,准确率都能高达90% —— 所以不能总用它判断。


2.2 精确率(Precision):你说是垃圾的,有多少真的是?

你标了10封垃圾邮件,结果只有6封真的是,其它4封是误判的(误伤),那么你的精确率是 60%。

📌 公式:

Precision = TP / (TP + FP)

 ✅ 适合在“误伤很严重”的场景,比如:

  • 正常邮件被误判为垃圾(你可能错过重要邮件)

  • 把好人当坏人(治安系统)


2.3 召回率(Recall):所有垃圾邮件中,你抓住了多少?

10封真实垃圾邮件你只识别出6封,那召回率是60%。还有4封你没发现,被放进了收件箱(漏判)

📌 公式:

Recall = TP / (TP + FN)

 ✅ 适合在“漏掉很严重”的场景,比如:

  • 癌症诊断(不能漏掉任何患者)

  • 安检(不能漏掉任何违禁物品)


2.4 F1 分数(F1 Score):“精确率”和“召回率”的平衡点

当你想又“抓得准”又“抓得全”,F1就是这个中间值。

 📌 公式:

F1 = 2 × (Precision × Recall) / (Precision + Recall)

✅ 适合 类别不平衡任务(比如只有1%的邮件是垃圾),因为准确率可能失真,而F1分数更真实反映模型在“正类”上的能力。


小结

🎯 一个表格总结四者:

指标问的问题更关注哪一类错误?举例适用场景
Accuracy总体猜对了吗?不区分分类均衡的数据
Precision说是“正”的,有多少是对的?少犯假正例(FP)垃圾邮件、司法错判
Recall真正的“正”,你找到了多少?少漏真正例(FN)癌症筛查、异常检测
F1 Score精确率 vs 召回率的折中平衡两者类别不平衡、重点关注正类

三、一个简单的例子练练手

假设我们有 100 封邮件:

  • 实际有 20 封是垃圾(正类),80 封是正常(负类)

  • 模型预测了 25 封为垃圾,其中:

    • 真正是垃圾的有 15 封(TP)

    • 误判的有 10 封(FP)

    • 漏掉的垃圾邮件有 5 封(FN)

    • 判断为正常的 75 封中有 70 封真的是正常(TN)

我们来算一下四个指标:

  • Accuracy = (TP + TN) / 所有邮件 = (15 + 70) / 100 = 85%

  • Precision = TP / (TP + FP) = 15 / (15 + 10) = 60%

  • Recall = TP / (TP + FN) = 15 / (15 + 5) = 75%

  • F1 = 2 × (0.6 × 0.75) / (0.6 + 0.75) ≈ 66.7%


四、大典型业务场景指标侧重

下面按 5 大典型业务场景 展开,说明为什么要偏重某一指标、具体怎么做权衡,并给出常见做法参考。读完你就知道:面对不同任务,该把“注意力”放在 Accuracy、Precision、Recall 还是 F1 上。

场景类型错误成本特点首选指标为什么常见做法 & Tips
1. 类别基本均衡(情感三分类、猫狗二分类等)正反例数量相近,FP 与 FN 代价也差不多准确率 (Accuracy)既能直观反映整体正确率,又不会被类别失衡“稀释”- 仍需同时监控 P/R,防止模型“懒惰”- 若类别稍不平衡,可补充 Macro‑F1
2. 假正例代价高(垃圾邮件、司法误判、广告点击扣费)把正常样本错判为正样本会直接伤害用户或带来损失精确率 (Precision)希望“凡是你说是正类的,基本都靠谱”- 通过升高阈值提高 Precision- 将 FP 加入损失函数权重- 提供手动复核流程来弥补召回下降
3. 假负例代价高(癌症筛查、金融欺诈预警、危险品检测)漏掉真实正样本可能造成巨大风险召回率 (Recall)情愿多报几个可复查,也不能漏掉关键正例- 降低阈值提升 Recall- 采用级联模型:先高 Recall 粗筛→再高 Precision 精筛- 人工二审去除 FP
4. 类别极度不平衡(罕见缺陷检测、少数客户流失预测)正类稀少,Accuracy 失真,FP/FN 代价往往都高F1(宏或加权)同时关注“抓得全”与“抓得准”,避免单边倾斜- 报告 Macro‑F1 + per‑class P/R- 采样或代价敏感学习处理失衡- PR‑Curve 找最佳阈值
5. 多标签 / 大规模分类(文本多标签、商品千分类)单条样本可属于多类,或类数特别多微平均 F1 或 Micro P/R把所有 TP/FP/FN 汇总,更能体现全局覆盖- 业务看“能覆盖多少标签” → 看 Recall- 看“推荐列表质量” → 看 Precision@k- 别忘对长尾类别做 Macro‑分析

 具体权衡与实践建议

1、先问业务:错哪一种更痛?

  • 如果“错抓”比“漏掉”更痛 → 抓 Precision

  • 如果“漏掉”后果更严重 → 抓 Recall

  • 两者都痛且样本少 → 看 F1

2、多维监控不只单指标

  • 报告里同时列出 P、R、F1、支持数 (support)

  • 绘制 PR‑Curve / ROC‑Curve,方便运营或医学专家选阈值

3、阈值调优是最简单的杠杆

  • 二分类 softmax / sigmoid 输出 → 调阈值直接移动 P、R

  • 训练后根据验证集或业务线下实验(A/B)选点

4、代价敏感学习

  • 在损失函数里加权,把 FP 或 FN 的损失系数调高

  • 适用于极端不平衡或需定量衡量金钱/风险成本

5、把评估写进持续集成

  • 每次微调都产出同一套指标 + 混淆矩阵 + 曲线

  • 用 TensorBoard/wandb 做曲线对比,避免“局部最优”假象

快速记忆口诀

“均衡看准率,误伤看精确;漏检看召回,两难看 F1。”

只要先搞清“正类是谁、错误代价怎么量化”,再对号入座,你就能选对评估指标,给微调找准方向。

http://www.dtcms.com/a/268227.html

相关文章:

  • [netty5: WebSocketServerHandshaker WebSocketServerHandshakerFactory]-源码分析
  • 机器学习绪论
  • LeetCode 100题(1)(10题)
  • 线性代数--AI数学基础复习
  • 暑假算法日记第二天
  • DTW模版匹配:弹性对齐的时间序列相似度度量算法
  • 基于联合国国家指标 2025数据(UN Countries Metrics 2025: HDI, GDP, POP, AREA)的综合可视化分析
  • PDF转换工具,即开即用
  • BUUCTF在线评测-练习场-WebCTF习题[GXYCTF2019]BabyUpload1-flag获取、解析
  • 微前端架构在嵌入式BI中的集成实践与性能优化
  • Redis存储Cookie实现爬虫保持登录 requests | selenium
  • Python: 正则表达式
  • 树的知识点整理
  • CentOS6的“ifupdown“与Debian的“ifupdown“有什么不同? 笔记250706
  • jxWebUI--web组件说明
  • 深入解析 Kafka Broker 如何管理分片与副本
  • Flowith,有一种Agent叫无限
  • 零成本搭建浏览器远程Linux桌面:Ubuntu/Debian方案全解析
  • Windows部署本地照片管理Immich
  • Mysql 数据库结构优化
  • 工业相机和镜头
  • 前端开发常见问题(从布局到性能优化)
  • axios笔记
  • debian及衍生发行版apt包管理常见操作
  • 从前端转nest.js开发的学习路线
  • 【系统分析师】2023年真题:论文及解题思路
  • Leet code每日一题
  • python库 dateutil 库的各种案例的使用详解
  • ASP.NET代码审计 Web Forms框架 SQL注入漏洞
  • stm32地址偏移:为什么相邻寄存器的地址偏移量0x04表示4个字节?