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

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

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

在分类任务中,我们通常使用混淆矩阵来评估模型的分类效果。混淆矩阵中的几个重要概念包括真正例(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折交叉验证是最常用的方法,它既充分利用了数据,又降低了由于单次数据划分所带来的评估波动,帮助我们更好地选择和调优机器学习模型。

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

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

相关文章

openAI最新o1模型 推理能力上表现出色 准确性方面提升 API如何接入?

OpenAI o1模型在回答问题前会进行深入思考,并生成一条内部推理链,使其在尝试解决问题时可以识别并纠正错误,将复杂的步骤分解为更简单的部分,并在当前方法无效时尝试不同的途径。据悉,o1不仅数学水平与美国奥林匹克竞赛…

基于ArduPilot开发无人机飞控自动驾驶仪

目录 1、项目参数 2、硬件设计解析 2.1、主控与协处理器架构 2.2、高精度传感器集成 2.3、数据存储与恢复 2.4、电源管理与保护 2.5、通信与接口 本项目基于开源飞行控制固件 ArduPilot 开发,设计并实现了一款高度集成的 自动驾驶仪,可广泛应用于…

传输层协议TCP ( 下 )

文章目录 前言序号与确认序号超时重传RTOJacobson算法内核中超时时间的计算 滑动窗口滑动窗口延迟应答流量控制 拥塞控制慢启动拥塞避免快重传快速恢复 保活机制参考资料 前言 TCP(Transmission Control Protocol,传输控制协议)是互联网最重要…

vscode使用常见问题处理合集

目录 一、使用vite创建的vue3项目,script和style首行代码不会缩进,且格式化属性字段等会换行问题 首行缩进情况如下: 属性、参数格式化换行情况如下: 解决方式: 一、使用vite创建的vue3项目,script和style首行代码不…

【C语言】程序环境与预处理

目录 程序的翻译环境和执行环境 粗谈编译链接 翻译环境 编译的几个阶段及链接 运行环境 预处理详解 预定义符号 #define #define 定义标识符 #define 定义宏 #define 替换规则 #和## 带副作用的宏参数 宏和函数的对比 命名约定 #undef 命令行定义 条件编译 …

类与对象C++详解(中)-----构造函数与析构函数

1.构造函数 构造函数是一个特殊的成员函数,函数名和类名相同,构造函数的作用是初始化,以下是构造函数的一些特点: 1. 函数名与类名相同。 2. ⽆返回值。(返回值啥都不需要给,也不需要写void,不要纠结&#…

计算机网络(1)基础篇

目录 1.TCP/IP 网络模型 2.键入网址--->网页显示 2.1 生成HTTP数据包 2.2 DNS服务器进行域名与IP转换 2.3 建立TCP连接 2.4 生成IP头部和MAC头部 2.5 网卡、交换机、路由器 3 Linux系统收发网络包 1.TCP/IP 网络模型 首先,为什么要有 TCP/IP 网络模型&a…

【JavaEE进阶】验证码案例

目 🌲实现说明 🎄Hutool介绍 🌳准备工作 🌴约定前后端交互接口 🚩接口定义 🚩实现服务器后端代码 🚩前端代码 🚩整体测试 🌲实现说明 随着安全性的要求越来越⾼…

硬件学习笔记--42 电磁兼容试验-6 传导差模电流干扰试验介绍

目录 电磁兼容试验-传导差模电流试验 1.试验目的 2.试验方法 3.判定依据及意义 电磁兼容试验-传导差模电流干扰试验 驻留时间是在规定频率下影响量施加的持续时间。被试设备(EUT)在经受扫频频带的电磁影响量或电磁干扰的情况下,在每个步进…

机器学习·最近邻方法(k-NN)

前言 上一篇简单介绍了决策树,而本篇讲解与决策树相近的 最近邻方法k-NN。 机器学习决策树-CSDN博客 一、算法原理对比 特性决策树最近邻方法(k-NN)核心思想通过特征分割构建树结构,递归划分数据基于距离度量,用最近…

Deesek:新一代数据处理与分析框架实战指南

Deesek:新一代数据处理与分析框架实战指南 引言 在大数据时代,高效处理和分析海量数据是企业和开发者面临的核心挑战。传统工具如Pandas、Spark等虽功能强大,但在实时性、易用性或性能上仍有提升空间。Deesek(假设名称&#xff…

【Vue】打包vue3+vite项目发布到github page的完整过程

文章目录 第一步:打包第二步:github仓库设置第三步:安装插件gh-pages第四步:两个配置第五步:上传github其他问题1. 路由2.待补充 参考文章: 环境: vue3vite windows11(使用终端即可&…

JVM内存模型详解

文章目录 1. 程序计数器(Program Counter Register)2. Java虚拟机栈(Java Virtual Machine Stacks)3. 本地方法栈(Native Method Stacks)4. Java堆(Java Heap)5. 方法区(…

KubeSphere 和 K8s 高可用集群离线部署全攻略

本文首发:运维有术,作者术哥。 今天,我们将一起探索如何在离线环境中部署 K8s v1.30.6 和 KubeSphere v4.1.2 高可用集群。对于离线环境的镜像仓库管理,官方推荐使用 Harbor 作为镜像仓库管理工具,它为企业级用户提供…

代码随想录-训练营-day30

今天我们要进入动态规划的背包问题,背包问题也是一类经典问题了。总的来说可以分为: 今天让我们先来复习0-1背包的题目,这也是所有背包问题的基础。所谓的0-1背包问题一般来说就是给一个背包带有最大容量,然后给一个物体对应的需要…

百问网(100ask)提供的烧写工具的原理和详解;将自己编译生成的u-boot镜像文件烧写到eMMC中

百问网(100ask)提供的烧写工具的原理 具体的实现原理见链接 http://wiki.100ask.org/100ask_imx6ull_tool 为了防止上面这个链接失效,我还对上面这个链接指向的页面保存成了mhtml文件,这个mhtml文件的百度网盘下载链接: https://pan.baidu.c…

【旋转框目标检测】基于YOLO11/v8深度学习的遥感视角船只智能检测系统设计与实现【python源码+Pyqt5界面+数据集+训练代码】

《------往期经典推荐------》 一、AI应用软件开发实战专栏【链接】 项目名称项目名称1.【人脸识别与管理系统开发】2.【车牌识别与自动收费管理系统开发】3.【手势识别系统开发】4.【人脸面部活体检测系统开发】5.【图片风格快速迁移软件开发】6.【人脸表表情识别系统】7.【…

侯捷 C++ 课程学习笔记:C++ 面向对象开发的艺术

在侯捷老师的 C 系列课程中,《C 面向对象开发》这门课程让我对面向对象编程有了更深入的理解。面向对象编程(OOP)是现代软件开发中最重要的编程范式之一,而 C 作为支持 OOP 的语言,提供了强大的工具和特性。侯捷老师通…

神经网络常见激活函数 12-Swish函数

Swish 函数导函数 Swish函数 S w i s h ( x ) x ⋅ σ ( β x ) x 1 e − β x \begin{aligned} \rm Swish(x) & x \cdot \sigma(\beta x) \\ & \frac{x}{1 e^{-\beta x}} \end{aligned} Swish(x)​x⋅σ(βx)1e−βxx​​ Swish函数导数 d d x S w i s h ( x…

CF 137B.Permutation(Java 实现)

题目分析 输入n个样本,将样本调整为从1到n的包含,需要多少此更改 思路分析 由于样本量本身就是n,无论怎么给数据要么是重复要么不在1到n的范围,只需要遍历1到n判断数据组中有没有i值即可。 代码 import java.util.*;public clas…