机器学习详解(11):分类任务的模型评估标准

模型评估是利用不同的评估指标来了解机器学习模型的性能,以及其优势和劣势的过程。评估对于确保机器学习模型的可靠性、泛化能力以及在新数据上的准确预测能力至关重要。

文章目录

  • 1 介绍
  • 2 评估准则
  • 3 分类指标
    • 3.1 准确率 (Accuracy)
    • 3.2 精确率 (Precision)
    • 3.3 召回率 (Recall)
    • 3.4 F1 分数 (F1-Score)
    • 3.5 ROC曲线与AUC
  • 4 总结

1 介绍

过拟合和欠拟合是导致机器学习算法性能不佳的两个主要原因。

  • 过拟合:模型在训练数据上表现得非常好,但对新数据泛化能力很差。模型过于复杂,捕捉了数据中的噪声和无关信息,而非真正的规律。
  • 欠拟合:模型过于简单,未能从训练数据中学习到充分的模式和规律,导致训练集和测试集上的性能都很差。

在这里插入图片描述

以下是过拟合和欠拟合的对比:

特性过拟合欠拟合
模型复杂度过高过低
训练集性能极好较差
测试集性能较差较差
原因学习了数据中的噪声和细节未能充分学习数据中的规律
解决方法简化模型、正则化、增加数据量、早停增加模型复杂度、延长训练时间、优化特征

2 评估准则

评估指标根据分类、回归、排序、聚类、主题建模等任务的不同而有所不同。以下是一些常见的指标:

  • 分类指标:Accuracy, Precision, Recall, F1-score, ROC, AUC 等
  • 回归指标:MSE, MAE, R²
  • 排序指标:MRR, DCG, NDCG
  • 统计指标:Correlation
  • 计算机视觉指标:PSNR, SSIM, IoU
  • 自然语言处理指标:Perplexity, BLEU 分数
  • 深度学习相关指标:Inception 分数, Frechet Inception 距离

本篇文章,我们将讨论分类指标

3 分类指标

当目标变量是类别型时,我们面对的是分类问题。选择最合适的指标取决于不同的因素,例如数据集的特性(是否存在类别不平衡)以及分析目标等。

混淆矩阵 (Confusion Matrix)

混淆矩阵是一种用于衡量分类模型性能的工具。通过对预测值和实际值的比较,将结果划分为以下四种情况:

  • T P TP TP (True Positive):模型预测为正类,实际也为正类。
  • T N TN TN (True Negative):模型预测为负类,实际也为负类。
  • F P FP FP (False Positive):模型预测为正类,实际为负类(误报)。
  • F N FN FN (False Negative):模型预测为负类,实际为正类(漏报)。

在这里插入图片描述

分类模型的性能可以通过以下指标进行评估。 根据混淆矩阵有准确率、精确率和召回率几个定义,假设 T P = 10 , T N = 12 , F P = 1 , F N = 2 TP = 10, TN = 12, FP = 1, FN = 2 TP=10,TN=12,FP=1,FN=2,我们下面介绍一下这几个定义,并在例子中据此数据计算。

3.1 准确率 (Accuracy)

准确率表示所有预测中正确预测的比例,公式为: A c c u r a c y = T P + T N T P + T N + F P + F N Accuracy = \frac{TP + TN}{TP + TN + FP + FN} Accuracy=TP+TN+FP+FNTP+TN

例: A c c u r a c y = 10 + 12 10 + 12 + 1 + 2 = 88 % Accuracy = \frac{10 + 12}{10 + 12 + 1 + 2} = 88\% Accuracy=10+12+1+210+12=88%

  • 通俗解释:老师判卷子时,看所有题中有多少题答对了,比如答对了88%,准确率就是88%。
  • 局限性:当类别分布不平衡时,准确率可能会误导。例如,若正类占比很低,仅预测所有数据为负类也可能获得高准确率。

3.2 精确率 (Precision)

精确率衡量预测为正类中实际为正类的比例,公式为: P r e c i s i o n = T P T P + F P Precision = \frac{TP}{TP + FP} Precision=TP+FPTP

例: P r e c i s i o n = 10 10 + 1 = 91 % Precision = \frac{10}{10 + 1} = 91\% Precision=10+110=91%

  • 通俗解释:医生诊断病人时,关注确诊为病的人里有多少是真正生病的,比如确诊10个,9个真生病了,精确率是90%。
  • 适用场景:当误报的代价较高时(如医疗诊断中的误报),需要关注精确率。

3.3 召回率 (Recall)

召回率衡量实际为正类中被正确预测为正类的比例,公式为: R e c a l l = T P T P + F N Recall = \frac{TP}{TP + FN} Recall=TP+FNTP

例: R e c a l l = 10 10 + 2 = 83 % Recall = \frac{10}{10 + 2} = 83\% Recall=10+210=83%

  • 通俗解释:警察追逃犯时,关注所有逃犯里抓住了多少,比如有12个逃犯,抓住了10个,召回率是83%。
  • 适用场景:当漏报的代价较高时(如安全检测中的漏报),需要关注召回率。

3.4 F1 分数 (F1-Score)

F 1 F1 F1 分数是精确率和召回率的调和平均,用于综合考虑两者的表现,公式为: F 1 = 2 ⋅ P r e c i s i o n ⋅ R e c a l l P r e c i s i o n + R e c a l l F1 = 2 \cdot \frac{Precision \cdot Recall}{Precision + Recall} F1=2Precision+RecallPrecisionRecall

例: 已知 P r e c i s i o n = 91 % Precision = 91\% Precision=91%, R e c a l l = 83 % Recall = 83\% Recall=83%,则 F 1 = 2 ⋅ 0.91 ⋅ 0.83 0.91 + 0.83 = 0.87 F1 = 2 \cdot \frac{0.91 \cdot 0.83}{0.91 + 0.83} = 0.87 F1=20.91+0.830.910.83=0.87

  • 适用场景:在搜索引擎中既要确保返回结果相关(精确率),又要尽可能多覆盖目标(召回率)。

3.5 ROC曲线与AUC

ROC(Receiver Operating Characteristic)曲线是一种用于评估分类模型性能的图形工具,特别是在二分类任务中非常常用。它通过显示模型在不同阈值下的分类能力来帮助理解模型的区分能力。ROC曲线绘制了以下两个指标之间的关系:

  • True Positive Rate (TPR):真阳性率,也称为敏感度(Recall),公式为: $ TPR = \frac{TP}{TP + FN} $

  • False Positive Rate (FPR):假阳性率,公式为: $ FPR = \frac{FP}{FP + TN} $

通过调整分类阈值,模型在不同的TPR和FPR之间取得平衡,绘制成ROC曲线。

ROC Curve

  • 不同阈值对应的点在图上不一定连续,而是通过将所有可能的阈值下的 T P R TPR TPR F P R FPR FPR 计算出来的离散点连接起来形成的曲线。

AUC (Area Under the Curve)
AUC表示ROC曲线下的面积,值范围为0到1:

  • AUC = 1:理想模型,能完美区分正负样本。
  • AUC = 0.5:随机猜测模型,无分类能力。
  • AUC < 0.5:分类性能低于随机模型(可能因模型异常或标签反转)。

AUC value

优点

  • 不受类别不平衡影响。
  • 提供模型在不同阈值下的整体性能概览。

4 总结

模型评估是确保机器学习模型性能可靠和泛化能力强的关键步骤。通过准确率、精确率、召回率、F1分数和ROC-AUC等指标,能够全面了解分类模型的表现及其在不同场景下的优劣势。选择合适的评估指标,结合实际需求和任务特性,是构建高效模型的核心。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/65406.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

已有docker镜像构建过程分析

1.使用docker history进行分析   docker history 命令用于查看指定镜像的历史层信息,它显示了镜像创建过程中的每一层,包括创建时间、创建者、大小和注释等信息。 查看镜像历史 docker history myimage:latest 使用示例: root@controller1:~# docker images | grep zj_j…

【Mac】终端改色-让用户名和主机名有颜色

效果图 配置zsh 1.打开终端&#xff0c;进入.zshrc配置 cd ~ vim .zshrc2.添加如下配置并保存 # 启用命令行颜色显示 export CLICOLOR1 ## 加载颜色支持 autoload -U colors && colors # 配置 zsh 提示符 PROMPT"%{$fg_bold[red]%}%n%{$reset_color%}%{$fg_bol…

【Artificial Intelligence篇】智行未来:AI 在日常出行领域的崛起征程

目录 ​编辑 一、引言&#xff1a; 二、AI 在日常出行中的关键技术应用&#xff1a; 2.1自动驾驶技术&#xff1a; 2.2智能交通管理&#xff1a; 2.3出行辅助系统&#xff1a; 三、AI 在日常出行领域的发展现状&#xff1a; 四、AI 在日常出行领域的未来前景&#xff…

指针之矢:C 语言内存幽境的精准飞梭

一、内存和编码 指针理解的2个要点&#xff1a; 指针是内存中一个最小单元的编号&#xff0c;也就是地址平时口语中说的指针&#xff0c;通常指的是指针变量&#xff0c;是用来存放内存地址的变量 总结&#xff1a;指针就是地址&#xff0c;口语中说的指针通常指的是指针变量。…

springboot478基于vue全家桶的pc端仿淘宝系统(论文+源码)_kaic

摘 要 随着我国经济的高速发展与人们生活水平的日益提高&#xff0c;人们对生活质量的追求也多种多样。尤其在人们生活节奏不断加快的当下&#xff0c;人们更趋向于足不出户解决生活上的问题&#xff0c;网上购物系统展现了其蓬勃生命力和广阔的前景。与此同时&#xff0c;为解…

Atcoder Beginner Contest 385

比赛链接: Atcoder Beginner Contest 385 Github 链接&#xff1a;ABC385 A - Equally 只有三个数相等或者两个小的数加起来等于最大的数时输出 Y e s Yes Yes&#xff0c;其他时候输出 N o No No。 时间复杂度&#xff1a; O ( 1 ) O(1) O(1)。 #include <bits/stdc…

Html——12. 定义样式和引入样式

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>定义样式和引入样式文件&#xff08;CSS文件&#xff09;</title><style type"text/css">body{font-size: 40px;}</style><link rel"s…

Kafka优势

目录 1. 分布式架构 2. 持久化日志与顺序写入 3. 批量处理 4. 异步提交与压缩 5. 消费者组与并行消费 6. 高效的数据复制 7. 无锁设计与多线程模型 8. 幂等性和事务支持 9. 流处理集成 10. 灵活的配置与调优 总结 1. 分布式架构 多 broker 集群&#xff1a;Kafka 是…

Gitlab17.7+Jenkins2.4.91实现Fastapi/Django项目持续发布版本详细操作(亲测可用)

一、gitlab设置&#xff1a; 1、进入gitlab选择主页在左侧菜单的下面点击管理员按钮。 2、选择左侧菜单的设置&#xff0c;选择网络&#xff0c;在右侧选择出站请求后选择允许来自webhooks和集成对本地网络的请求 3、webhook设置 进入你自己的项目选择左侧菜单的设置&#xff…

pathlib:面向对象的文件系统路径

pathlib:面向对象的文件系统路径 pathlib官方介绍: Python3.4内置的标准库&#xff0c;Object-oriented filesystem paths&#xff08;面向对象的文件系统路径&#xff09; 文章目录 pathlib:面向对象的文件系统路径1. 使用示例1.1 最常用&#xff1a;获取项目目录1.2 遍历一…

Hive练习题16-20

题目16&#xff1a; 同时在线问题 如下为某直播平台主播开播及关播时间&#xff0c;根据该数据计算出平台最高峰同时在线的主播人数。 id stt edt 1001,2021-06-14 12:12:12,2021-06-14 18:12:12 1003,2021-06-14 13:12:12,2021-06-14 16:12:12 1004…

条款19 对共享资源使用std::shared_ptr

目录 一、std::shared_ptr 二、std::shared_ptr性能问题 三、control block的生成时机 四、std::shared_ptr可能存在的问题 五、使用this指针作为std::shared_ptr构造函数实参 六、std::shared_ptr不支持数组 一、std::shared_ptr<T> shared_ptr的内存模型如下图&…

巩义网站建设:如何打造一个成功的企业网站

巩义网站建设是企业发展中至关重要的一环。一个成功的企业网站不仅仅是一个展示产品和服务的平台&#xff0c;更是企业形象和品牌的代表。在建设企业网站时&#xff0c;首先要考虑用户体验。网站的设计应简洁明了&#xff0c;易于导航&#xff0c;让用户能够快速找到他们需要的…

【Maven】聚合与继承

目录 1. 聚合工程 2. 聚合工程开发 3. 继承关系 4. 继承关系开发 5. 聚合与继承的区别 1. 聚合工程 什么叫聚合&#xff1f; 聚合&#xff1a;将多个模块组织成一个整体&#xff0c;同时进行项目构建的过程称为聚合 聚合工程&#xff1a;通常是一个不具有业务功能的”空…

bash shell的条件语句

&#xff5e; script% touch if.sh &#xff5e; script% chmod 755 if.sh1.if-then-fi #!/usr/bin/env bashFOOD$1 if [ $FOOD"apple" ] thenecho The food is $FOOD fi exit 0~ script % ./if.sh apple The food is apple如果要将多条语句写在一行&#xff0c;可以…

猛将:如何在众多信仰中找到属于自己的力量?

Hi&#xff0c;我是蒙&#xff0c;欢迎来到猛将潜意识&#xff0c;带你运用潜意识快速成长&#xff0c;重塑人生&#xff01; 潜意识有猛将&#xff0c;人生再无阻挡&#xff01; 每日一省写作274/1000天 信仰是什么&#xff1f;我们生活在一个信仰流派繁多的时代&#xff0c;…

jwt在express中token的加密解密实现方法

在我们前面学习了 JWT认证机制在Node.js中的详细阐述 之后&#xff0c;今天来详细学习一下token是如何生成的&#xff0c;secret密钥的加密解密过程是怎么样的。 安装依赖 express&#xff1a;用于创建服务器jsonwebtoken&#xff1a;用于生成和验证JWTbody-parser&#xff1…

RDFS—RDF模型属性扩展解析

目录 前言1. 什么是RDFS&#xff1f;1.1 RDFS的核心概念1.2 RDFS与RDF的区别 2. RDFS的基础概念2.1 类&#xff08;Class&#xff09;2.2 属性&#xff08;Property&#xff09;2.3 关系&#xff08;Relation&#xff09;2.4 定义域&#xff08;Domain&#xff09;2.5 值域&…

光滑曲线弧长公式的推导

前言 本文将介绍如何用定积分计算空间中一段光滑曲线的弧长。首先我们会给出光滑曲线以及曲线弧长的定义&#xff0c;然后从定义出发&#xff0c;用求黎曼和的思想推导出弧长的计算公式。 光滑曲线的定义 设平面曲线的参数方程为 { x x ( t ) , y y ( t ) , t ∈ [ T 1 , …

设计一个基于Spring Boot开发的电商网站,部署在阿里云上

系统架构设计&#xff0c;包含网络、部署架构等关键信息&#xff0c;要保证系统的高可用。设计中请明确指出使用的产品名称。 为了设计一个基于Spring Boot开发的电商网站系统架构&#xff0c;并确保其高可用性&#xff0c;以下是一个详细的系统架构设计方案&#xff0c;包含网…