机器学习 - 机器学习模型的评价指标

为了衡量一个机器学习模型的好坏,需要给定一个测试集,用模型对测试集 中的每一个样本进行预测,并根据预测结果计算评价分数。本文,我们来了解一下机器学习模型常用的评价指标。

一、分类问题常用到的混淆矩阵

在分类任务中,我们通常使用混淆矩阵来评估模型的分类效果。混淆矩阵中的几个重要概念包括真正例(True Positive, TP)、假正例(False Positive, FP)、真负例(True Negative, TN)和假负例(False Negative, FN)。下面解释真正例和假正例的含义:

  • 真正例(TP)
    指的是那些实际属于正类(例如“正面情感”或“患病”)的样本,被模型正确预测为正类的数量。例如,在情感分类任务中,如果一条文本实际表达正面情感,并且模型也预测它为正面,那么这条样本就属于真正例。

  • 假正例(FP)
    指的是那些实际属于负类(例如“负面情感”或“健康”)的样本,被模型错误地预测为正类的数量。例如,在情感分类任务中,如果一条文本实际上表达负面情感,但模型却错误地预测为正面,那么这条样本就属于假正例。

举例说明

假设我们有一个二分类情感分析模型,用于判断评论是正面还是负面。对于一个测试集,混淆矩阵如下所示:

真正例 (TP)=40 假正例 (FP)=10 假负例 (FN)=5 真负例 (TN)=45 

  • 这里,真正例 (TP = 40) 表示有 40 条实际正面的评论被模型正确分类为正面。
  • 假正例 (FP = 10) 表示有 10 条实际负面的评论被模型错误地分类为正面。

这种区分对于计算精确率(Precision)、召回率(Recall)等评价指标非常关键,因为它们分别反映了模型在正类预测的准确性和覆盖率。

类别 𝑐 的预测结果的混淆矩阵:

在使用测试集对机器学习模型进行评估时,不同任务(如分类、回归、排序等)会采用不同的评价指标。下面分别介绍一些常见的评价指标及其意义,并举例说明:

二、分类任务的评价指标

  1. 准确率(Accuracy)

    • 意义:衡量模型在测试集中正确预测的比例。
    • 计算公式
    • 示例:假设一个垃圾邮件分类器在100封邮件中正确分类了90封,则准确率为90%。
  2. 错误率(Error Rate):E=1−𝒜(Accuracy)
  3. 精确率(Precision)(精度或查准率

    • 意义:在模型预测为正类的样本中,真正为正类的比例。适用于关注误报(False Positive)代价较高的场景。
    • 计算公式
    • 示例:在一款肿瘤检测模型中,如果预测为患病的患者中有80%真正患病,则精确率为80%。
  4. 召回率(Recall)(查全率

    • 意义:在所有实际为正类的样本中,被模型正确识别出来的比例。适用于关注漏报(False Negative)代价较高的场景。
    • 计算公式: 
    • 示例:在同一个肿瘤检测模型中,如果所有实际患病的患者中有70%被检测出来,则召回率为70%。
  5. F1 分数(F1 Score)

    • 意义:精确率和召回率的调和平均,用于综合评估模型在正负两方面的表现。
    • 计算公式
    • F值与F1的关系:
  6. ROC曲线与AUC(Area Under the ROC Curve)

    • 意义:ROC 曲线展示了模型在不同阈值下的真阳性率和假阳性率之间的权衡,AUC 则表示曲线下面积,数值越大表示模型整体性能越好。
    • 示例:一个模型的AUC值为0.9,说明其在区分正负类方面表现非常优越。
  7. 混淆矩阵(Confusion Matrix)

    • 意义:直观展示模型的分类结果,包括真正例(TP)、假正例(FP)、真负例(TN)和假负例(FN)。
    • 示例:在二分类任务中,一个混淆矩阵可能如下: 从中可以计算出其他指标。

三、为了计算分类算法在所有类别上的总体精确率、召回率和 F1 值,经常使用两种平均方法,分别称为宏平均(Macro Average)和微平均(Mi- cro Average)

宏平均(Macro-Averaging)和微平均(Micro-Averaging)是用于在多类别分类问题中汇总各类别评价指标的方法。它们主要用于计算诸如精确率、召回率、F1 分数等指标,以便对整个模型的性能做出一个总体评价。

1. 宏平均(Macro-Averaging)

概念:
宏平均是先分别计算每个类别的指标(如每个类别的精确率、召回率或 F1 分数),然后对这些指标取平均。也就是说,每个类别被赋予相同的权重,不论该类别在数据中出现的频率如何。

计算方法:

  • 假设有 K 个类别,对于每个类别 k 计算精确率 P_k 和召回率 R_k(以及 F1 分数 F1_k)。
  • 宏平均精确率为:
  • 宏平均召回率为:
  • 宏平均 F1 分数可以直接平均每个类别的 F1 值,或者先计算宏平均精确率和召回率后,再计算 F1。

特点:

  • 每个类别权重相同,能够反映模型对所有类别均衡的表现。
  • 当类别分布不平衡时,宏平均会更敏感于小类别的性能表现。

2. 微平均(Micro-Averaging)

概念:
微平均将所有类别的预测结果进行全局累加,然后根据全局的真实正例(TP)、假正例(FP)和假负例(FN)来计算指标。换句话说,微平均先将各类别的计数相加,再计算整体的指标。

计算方法:

特点:

  • 各类别的贡献按其在数据集中的样本数加权,频数较高的类别会对指标产生较大影响。
  • 当类别分布不平衡时,微平均可能被多数类主导,而忽略少数类的表现。

3. 举例说明

假设有一个三类别分类问题,类别分别为 A、B、C。假设混淆矩阵如下(每个类别分别计算出 TP、FP、FN):

  • 类别 A:TP = 50,FP = 10,FN = 5
  • 类别 B:TP = 20,FP = 5,FN = 10
  • 类别 C:TP = 5,FP = 5,FN = 20

计算每个类别的指标:

宏平均:

微平均:

4. 总结

  • 宏平均:对每个类别的指标均值进行平均,给予每个类别同等权重,反映模型对各类别表现的平均情况,适合在类别均衡的场景下使用。
  • 微平均:先全局累加各类别的 TP、FP、FN,再计算指标,对类别样本数较多的类别赋予更大权重,适用于类别不平衡的情况。

通过上述例子,可以直观地看出宏平均和微平均的计算方法及其在多类别问题中的不同侧重点。

在实际应用中,我们也可以通过调整分类模型的阈值来进行更全面的评价, 关于更详细的模型评

比如 AUC(Area Under Curve)、ROC(Receiver Operating Characteristic)曲 线、PR(Precision-Recall)曲线等.此外,很多任务还有自己专门的评价方式,比 如 TopN 准确率.

四、回归任务的评价指标

  1. 均方误差(MSE, Mean Squared Error)

    • 意义:衡量预测值与真实值之间差异的平方平均值,越小表示模型预测越准确。
    • 计算公式: 
    • 示例:如果模型预测房价与实际房价之间的MSE为1000(单位可能为万元的平方),则说明平均误差较低。
  2. 均方根误差(RMSE, Root Mean Squared Error)

    • 意义:MSE 的平方根,单位与目标变量一致,更直观地反映误差大小。
    • 计算公式: 
    • 示例:RMSE为30万元,表示预测房价与真实房价平均偏差约为30万元。
  3. 平均绝对误差(MAE, Mean Absolute Error)

    • 意义:衡量预测值与真实值之间绝对误差的平均值,对异常值不如MSE敏感。
    • 计算公式: 
    • 示例:若MAE为25万元,则平均每次预测偏差为25万元。
  4. 决定系数(R^2)

    • 意义:衡量模型对目标变量方差解释能力的指标,值介于 0 到 1 之间,越接近 1 表示模型解释能力越强。
    • 计算公式: 
    • 示例:如果 R^2 为0.85,表示模型可以解释85%的数据波动,其余15%的波动可能来源于噪声或未捕获的因素。

分类任务与回归任务的指标总结:

  • 分类任务的指标主要关注模型对类别的区分能力,如准确率、精确率、召回率、F1 分数、ROC-AUC等;
  • 回归任务的指标主要关注模型预测值与真实值之间的数值差异,如MSE、RMSE、MAE、R2R^2 等;
  • 每个指标都有其特定的意义和适用场景,选择合适的指标有助于全面评估模型在实际任务中的表现。

五、其他任务的评价指标

  • 排序和推荐
    • 常用指标包括平均精度均值(MAP)、归一化折损累积增益(NDCG)等。
  • 聚类
    • 常用指标包括轮廓系数(Silhouette Coefficient)、聚类纯度(Cluster Purity)等。

这些评价指标帮助我们量化模型的性能,并指导模型的优化和改进。

六、另一种模型评估技术 - 交叉验证

交叉验证(Cross Validation)是一种模型评估技术,用于衡量机器学习模型在未见数据上的泛化能力。其核心思想是在有限的样本数据中,通过重复将数据划分为训练集和验证集,来获得对模型性能更稳定、更可靠的估计。下面详细解释其原理并举例说明。

1. 交叉验证的基本原理

  • 数据划分
    在传统的训练-测试分割中,我们将数据集分为训练集和测试集,用训练集训练模型,再用测试集评估性能。然而,单次划分可能受到数据划分方式的偶然性影响,导致评估结果不稳定。

  • 重复评估
    交叉验证通过将数据集多次划分成不同的训练集和验证集,在每次划分上训练和评估模型,再将各次的评估结果进行平均,得出一个更为稳定的性能指标。

  • 常见方法——K折交叉验证
    将整个数据集平均分成K个子集,每次选择其中一个子集作为验证集,其余K-1个子集作为训练集,重复K次,最后计算K次评估指标的平均值。例如,当K=5时,这种方法称为5折交叉验证。

2. 举例说明

场景:房价预测问题

假设我们有一个包含100个样本的房价数据集,每个样本记录了房屋的特征(如面积、房龄等)及其售价。为了评估某个回归模型的表现,可以采用K折交叉验证。

步骤如下:

  1. 将数据集划分为K折
    假设我们采用5折交叉验证,将100个样本平均划分为5个子集,每个子集包含20个样本。

  2. 迭代训练与验证

    • 第1折:用第1个子集作为验证集,其余80个样本作为训练集,训练模型并在验证集上评估性能(例如计算均方误差MSE)。
    • 第2折:用第2个子集作为验证集,其余样本作为训练集,训练模型并记录评估指标。
    • 重复此过程,总共进行5次,每次选择不同的子集作为验证集。
  3. 汇总评估结果

    • 将5次验证得到的评估指标(如MSE、R²等)求平均,这个平均值就作为该模型在整个数据集上的性能指标。

直观理解

  • 交叉验证让每个样本都有机会作为训练集和验证集的一部分,能够更全面地利用数据来评估模型性能。
  • 通过多次划分和评估,减少了单次划分带来的偶然性影响,使得模型性能评估更具鲁棒性。

3. 其他常见的交叉验证方法

  • 留一交叉验证(LOOCV, Leave-One-Out Cross Validation)
    将数据集中的每个样本依次作为验证集,其余所有样本作为训练集。适用于数据量较小的情况,但计算成本较高。

  • 分层交叉验证
    当数据集类别分布不均衡时,为保证每个折中类别比例一致,采用分层抽样划分数据集,以使得训练集和验证集的类别分布与原始数据一致。

交叉验证通过对数据集多次划分和重复训练-验证过程,使得模型评估结果更可靠。K折交叉验证是最常用的方法,它既充分利用了数据,又降低了由于单次数据划分所带来的评估波动,帮助我们更好地选择和调优机器学习模型。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ChatGPT macOS 桌面应用让你的编程体验更上一层楼

高效开发必备:ChatGPT macOS 桌面应用亮点盘点 ©作者|Ninja Geek 来源|神州问学 通过 macOS 版 ChatGPT 应用,已经能够更好的和你的生产力工具无缝配合工作。 大概在三四周之前,Anthropic 在 Claude 上推出了一项名为 Computer Use 的功…

DeepSeek之Api的使用(将DeepSeek的api集成到程序中)

一、DeepSeek API 的收费模式 前言:使用DeepSeek的api是收费的 免费版: 可能提供有限的免费额度(如每月一定次数的 API 调用),适合个人开发者或小规模项目。 付费版: 超出免费额度后,可能需要按…

蓝桥杯(B组)-每日一题

题目: 思路: 首先将所有牛分类 1.a第一头母牛-每年年初生一头小母牛 2.不能生小牛的牛: b1-一岁小母牛 b2-二岁小母牛 b3-三岁小母牛 超过4岁就会再生一头小牛 因此计算每年生的小牛是第一头生的a再加上4岁后的生的 代码实现&#xff1…

deepseek+ollama+anythingLLM搭建本地知识库AI的笔记

所有内容都安装在docker里,安装完ollama后,在其bash里: ollama run deepseek-r1:1.5b 于是就安装好了deepseek, 再安装anythingLLM有点坑: export STORAGE_LOCATION$HOME/anythingllm && \ mkdir -p $STORAGE_LOCATIO…

Python中的json文件操作

1.1 基础知识 什么是JSON:(JavaScript Object Notation)是一种简洁、易读的数据语言,广泛用于数据交换、文档储存和web开发;适合数据量大,不要求保留原有的数据类型。导入:import json&#xf…

使用JavaScript设计一款简单的数字时钟

本文目录 使用 JavaScript 设计一款带日期显示的数字时钟效果预览1. 项目概述2. HTML 结构代码说明 3. CSS 样式代码说明 4. JavaScript 逻辑代码说明 5. 运行效果 使用 JavaScript 设计一款带日期显示的数字时钟 本文将详细介绍如何使用 HTML、CSS 和 JavaScript 设计一款带日…

PPDock:复旦大学团队研发的蛋白质-配体“盲对接“技术

PPDock: Pocket Prediction-Based Protein−Ligand Blind Docking 发表于Journal of Chemical Information and Modeling,第一作者为 Jie Du,通讯作者为 Manning Wang,研究团队来自复旦大学。该研究提出一种新的基于口袋预测的蛋白质 - 配体盲…

VSCode C/C++ 开发环境完整配置及常见问题(自用)

这里主要记录了一些与配置相关的内容。由于网上教程众多,部分解决方法并不能完全契合我遇到的问题,因此我选择以自己偏好的方式,对 VSCode 进行完整的配置,并记录在使用过程中遇到的问题及解决方案。后续内容也会持续更新和完善。…

系统漏洞扫描服务:安全风险识别与防护指南

系统安全的关键在于漏洞扫描服务,此服务能迅速发现潜在的安全风险。借助专业的扫描工具和技术,它确保系统稳定运作。以下将简要介绍这一服务的主要特点。 扫描原理 系统漏洞扫描服务依赖两种主要手段:一是通过漏洞数据库进行匹配&#xff0…

MVC(Model-View-Controller)framework using Python ,Tkinter and SQLite

1.项目结构 sql: CREATE TABLE IF NOT EXISTS School (SchoolId TEXT not null, SchoolName TEXT NOT NULL,SchoolTelNo TEXT NOT NULL) 整体思路 Model:负责与 SQLite 数据库进行交互,包括创建表、插入、删除、更新和查询数据等操作。View&#xff1…

Xcode证书密钥导入

证书干嘛用 渠道定期会给xcode证书,用来给ios打包用,证书里面有记录哪些设备可以打包进去。 怎么换证书 先更新密钥 在钥匙串访问中,选择系统。(选登录也行,反正两个都要导入就是了)。 mac中双击所有 .p12 后缀的密钥&#xff…

【学习笔记】计算机网络(三)

第3章 数据链路层 文章目录 第3章 数据链路层3.1数据链路层的几个共同问题3.1.1 数据链路和帧3.1.2 三个基本功能3.1.3 其他功能 - 滑动窗口机制 3.2 点对点协议PPP(Point-to-Point Protocol)3.2.1 PPP 协议的特点3.2.2 PPP协议的帧格式3.2.3 PPP 协议的工作状态 3.3 使用广播信…

最新版Edge浏览器集成ActiveX控件之金山WpsDocFrame控件

背景 WpsDocFrame控件‌是由金山公司开发的ActiveX控件,主要用于OA系统中,支持在浏览器中嵌入WPS文档的查看和编辑功能。 allWebPlugin中间件是一款为用户提供安全、可靠、便捷的浏览器插件服务的中间件产品,致力于将浏览器插件重新应用到所有…

计算机网络结课设计:通过思科Cisco进行中小型校园网搭建

上学期计算机网络课程的结课设计是使用思科模拟器搭建一个中小型校园网,当时花了几天时间查阅相关博客总算是做出来了,在验收后一直没管,在寒假想起来了简单分享一下,希望可以给有需求的小伙伴一些帮助 目录 一、设计要求 二、…

mars3d接入到uniapp的时候ios上所有地图的瓦片都无法加载解决方案

用的是【Mars3d】官网的uniapp的仓库,安卓没有问题,但是ios的不行 相关链接 mars3d-uni-app: uni-app技术栈下的Mars3D项目模板 解决方案:感觉所有图片请求全被拦截了 uniapp的ios内核不允许跨域,需要先把瓦片下载后转base64&…

springboot019高校心理教育辅导

版权声明 所有作品均为本人原创,提供参考学习使用,如需要源码数据库配套文档请移步 www.taobysj.com 搜索获取 技术实现 开发语言:Javavue。 框架:后端spingboot前端vue。 模式:B/S。 数据库:mysql。 开…

基于java手机销售网站设计和实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…

基于 GEE 计算研究区年均地表温度数据

目录 1 代码解析 2 完整代码 3 运行结果 1 代码解析 (1)定义研究区: // 研究区的范围需要自己提前上传 var dataset table;// 将研究区显示在中心,后面的数字为缩放等级,范围从1 - 24 Map.centerObject(dataset,…

VMware Windows_10_x64 安装 VM Tools 后无法将本机文件复制到虚拟机

有一种情况,安装VM Tools死活安装不上去。这时不要急不要慌,重启本机就好了(本人情况就是如此)。 windows键 R 输入 service.msc 打开服务管理器 找到Virtual Disk服务,选择属性设置为自动,应用后启用服…

python知识和项目经验

一些功能的实现 从.py文件中获取函数对象和参数 的字典 在给定的Python脚本中,通过模块导入和反射机制,如何动态获取包含模型函数的模块中的函数及其默认参数,并构建一个字典以便后续使用? 解决方案 test.py # test.py impor…