白话机器学习1:分类问题中的评价指标

        机器学习中的评价指标非常多,它们用来衡量模型的性能和预测能力。不同类型的机器学习任务可能需要不同的评价指标。以下是一些常见的评价指标,按照不同类型的机器学习任务分类:

对于分类问题:

  1. 准确率(Accuracy)
  2. 精确率(Precision)
  3. 召回率(Recall)或灵敏度(Sensitivity)
  4. F1分数(F1 Score):精确率和召回率的调和平均
  5. 受试者工作特征曲线(ROC Curve)下方的面积(AUC-ROC)
  6. 预测概率的对数损失(Log Loss)
  7. 混淆矩阵(Confusion Matrix)
  8. Matthews相关系数(MCC)
  9. 汉明损失(Hamming Loss)
  10. Jaccard相似系数

对于回归问题:

  1. 均方误差(Mean Squared Error, MSE)
  2. 均方根误差(Root Mean Squared Error, RMSE)
  3. 平均绝对误差(Mean Absolute Error, MAE)
  4. 平均绝对百分比误差(Mean Absolute Percentage Error, MAPE)
  5. R平方(R²)或决定系数

对于聚类问题:

  1. 轮廓系数(Silhouette Coefficient)
  2. 戴维森堡丁指数(Davies-Bouldin Index)
  3. Calinski-Harabasz指数
  4. Dunn指数

对于排名问题:

  1. 平均精度均值(Mean Average Precision, MAP)
  2. 规范化折扣累计增益(Normalized Discounted Cumulative Gain, NDCG)

对于异常检测:

  1. 命中率(Hit Rate)
  2. 假阳性率(False Positive Rate)

对于推荐系统:

  1. 准确率@K(Precision@K)
  2. 召回率@K(Recall@K)
  3. 覆盖率(Coverage)

        接下来我就举一个简单的例子,来给出分类问题中的评价指标的直观理解。

一、分类问题中的评价指标

        我们使用一台机器或一个模型,它的任务就是从一堆水果中找出所有的苹果。

  1. 准确率(Accuracy): 这就是我们模型做得有多好的整体打分。如果模型选择了100个水果,其中90个确实是苹果,那么准确率就是90%。                                           Accuracy = \frac{TP}{TP + FP}                                                                                                             其中TP是真正例(True Positives,即正确识别的苹果)的数量,而FP是假正例(False Positives,即错误识别为苹果的其他水果)的数量。

  2. 精确率(Precision): 当模型声称找到了一个苹果时,它是对的有多少次?如果模型选了50个水果说是苹果,但其中只有40个是真的苹果,那么精确率就是80%。

      3.召回率(Recall)或灵敏度(Sensitivity): 在所有的苹果中,模型找到了多少?如果有100个苹果,模型只找到了80个,那么召回率就是80%。

         Recall = \frac{TP}{TP + FN}        

        其中FN是假负例(False Negatives,即错过的苹果)的数量。

     4.F1分数(F1 Score): 这个分数试图同时考虑精确率和召回率,给出一个平衡的分数。如果精确率和召回率都很高,F1分数就会很高。所以它是精确率和召回率的一种平衡。它告诉我们机器在同时不错过任何一个真苹果(召回率高)和不错误地把其他水果当作苹果(精确率高)方面表现如何。想象一下,如果你的机器挑出了很多水果说它们是苹果(以增加它找到真苹果的机会,从而提高召回率),但其实其中很多都不是苹果,它的精确率就会很低。反过来,如果机器非常小心,只有在100%确定的时候才会选择一个水果并说它是苹果,那么它可能会错过很多真正的苹果,这样召回率就低了。                                                                                                                F1-Score计算式是精确率和召回率的调和平均数:F1 = 2 \times \frac{Precision \times Recall}{Precision + Recall}

          5.受试者工作特征曲线(ROC Curve)下方的面积(AUC-ROC): 这是用来衡量模型分辨正类和负类的能力。AUC-ROC是一个介于0和1之间的数,这个数越接近1,表示模型的性能越好。

            这个找苹果的机器有一个特殊的功能,我们可以调节它的灵敏度:调高灵敏度,它会更有可能把一个水果识别为苹果,但这样也可能会把一些不是苹果的水果错认为是苹果(比如橘子);调低灵敏度,它就变得更加谨慎,只有非常确定的时候才会说这是一个苹果,这样它可能就会错过一些真正的苹果。

        现在,受试者工作特征曲线(ROC Curve)就像是一个记录本,记录了在我们不断调整机器灵敏度时,机器找出真正苹果和错误标记苹果的能力。每次调整,我们都记录下两件事情:真正例率(True Positive Rate,TPR):机器正确识别为苹果的水果占所有真正的苹果的比率。假正例率(False Positive Rate,FPR):机器错误地把非苹果识别为苹果的情况占所有实际上非苹果水果的比率。

     6.预测概率的对数损失(Log Loss): 预测概率的对数损失(也称为逻辑损失或交叉熵损失)是一个衡量模型预测不确定性的分数。这个分数越低,表示模型越有信心它的预测是正确的,即模型的预测越准确。

        我们模型的任务是从一堆水果中识别出苹果。这是一个二分类问题,其中一个类别是苹果(我们可以标记为1),另一个类别是非苹果(我们可以标记为0)。

        对于二分类问题,对数损失函数定义如下:

        对于给定的真实标签y_i (其中y_i  是0或1)和模型预测该类别的概率\hat{y}_i(即模型预测为苹果的概率),对数损失的计算公式为:

      L(y_i, \hat{y}_i) = -\left( y_i \log(\hat{y}_i) + (1 - y_i) \log(1 - \hat{y}_i) \right) 

        其中L(y_i, \hat{y}_i) 是单个样本的对数损失。如果我们有 N 个样本,那么整体的对数损失为这些单个损失的平均值:

      \text{Log Loss} = -\frac{1}{N} \sum_{i=1}^{N} \left( y_i \log(\hat{y}_i) + (1 - y_i) \log(1 - \hat{y}_i) \right) 

这个公式考虑了两种情况:

  1. 真实标签 y_i为1时,我们关心的是\log(\hat{y}_i)的值。如果模型预测\hat{y}_i接近1,那么 (\log(\hat{y}_i)) 接近0,损失较小;如果\hat{y}_i接近0,那么\log(\hat{y}_i) 会变得很小(负的很大),导致损失增大。

  2. 真实标签 y_i为0时,我们关心的是\log(1 - \hat{y}_i) 的值。如果模型预测 \hat{y}_i接近0,那么\log(1 - \hat{y}_i)  接近0,损失较小;如果 \hat{y}_i接近1,那么\log(1 - \hat{y}_i)会变得很小(负的很大),导致损失增大。

        因此,对数损失惩罚那些正确类别的预测置信度低的情况。对于一个完美的模型,它对真实类别的预测概率将总是1,所以对数损失将是0。请注意,因为对数函数的定义域是(0,1) ,预测概率 \hat{y}_i必须在这个范围内,不能是0或1,否则会导致对数计算为无穷大,即\log(0) = -\infty

在实践中,模型可能会对包含苹果的图片给出一个概率(比如说0.8),而对不包含的图片给出另一个概率(比如说0.1)。对数损失就是用来衡量这些概率预测的准确性。

     7.混淆矩阵(Confusion Matrix): 是一个用来显示模型预测正确和预测错误的次数的表格。它可以帮助我们详细了解模型在哪些方面做得好,在哪些方面做得不好。

        还是以找苹果的二分类问题:苹果(正类)和非苹果(负类)。在这种情况下,混淆矩阵可以被定义为4个部分:

  1. 真正类(True Positives, TP):模型正确预测为苹果的苹果数量。
  2. 假正类(False Positives, FP):模型错误预测为苹果的非苹果数量。
  3. 真负类(True Negatives, TN):模型正确预测为非苹果的非苹果数量。
  4. 假负类(False Negatives, FN):模型错误预测为非苹果的苹果数量。

这四个部分可以在一个2x2的矩阵中展示,如下所示:

真实 / 预测苹果(正类)非苹果(负类)
苹果(正类)TPFN
非苹果(负类)FPTN

通过混淆矩阵,我们可以计算出多种性能指标,如精确率、召回率和F1分数等:

  • 精确率(Precision)是指在所有模型预测为苹果的情况中,实际上是苹果的比例,公式为:Precision = \frac{TP}{TP + FP}
  • 召回率(Recall)是指在所有实际为苹果的情况中,被模型正确预测为苹果的比例,公式为:Recall = \frac{TP}{TP + FN}
  • F1分数(F1 Score)是精确率和召回率的调和平均值,用于在一个指标中同时考虑精确率和召回率,公式为:F1 = 2 \times \frac{Precision \times Recall}{Precision + Recall}

     8.Matthews相关系数(MCC): 这是一个介于-1和1之间的数,用来衡量你的模型的性能。如果是1,表示完美的预测;如果是0,表示不好也不坏,基本上和随机猜测没什么区别;如果是-1,表示预测完全相反。

        从一堆水果中找出所有的苹果,我们可以使用MCC来评估模型识别苹果(正类)和非苹果(负类)的能力。

MCC的计算公式为:\text{MCC} = \frac{(TP \times TN) - (FP \times FN)}{\sqrt{(TP + FP)(TP + FN)(TN + FP)(TN + FN)}}

        这个公式通过考虑所有的预测结果(包括正类和负类的正确与错误预测),来提供一个综合的性能衡量。由于MCC同时考虑了预测的四个方面,即使在数据集不平衡的情况下,它也能提供一个公正而有用的性能评估。

        在大量的水果中(其中苹果只占很小一部分)表现出高准确率,这可能只是因为它总是预测最常见的类别(即非苹果)。在这种情况下,准确率可能会误导我们认为模型表现良好,但MCC将提供一个更真实的性能指标,清楚地显示模型在识别少数类(苹果)方面的实际能力。

     9.汉明损失(Hamming Loss): 这个指标用来测量预测错误的标签的比例。比如,如果一个水果应该被标记为苹果而被错误地标记为橘子,这就会计入汉明损失。

        我们将每个水果的预测(是否被识别为苹果)看作一个标签,那么汉明损失就可以用来衡量模型在这个任务上的平均错误率。

汉明损失的计算公式如下:

\text{Hamming Loss} = \frac{1}{N} \sum_{i=1}^{N} \frac{xor(y_i, \hat{y}_i)}{L}

其中:

  • N 是数据集中样本的总数。
  • L 是每个样本的标签数量,在我们的例子中,由于我们只关心是否为苹果,每个样本的标签数量为1。
  • y_i 是第i个样本的真实标签。
  • \hat{y}_i是第(i)个样本的预测标签。
  • xor(y_i, \hat{y}_i) 是一个逐位异或操作,用来计算每个样本的真实标签和预测标签之间的不一致标签数量。在二分类问题中,如果预测正确,(xor)的结果为0;如果预测错误,结果为1。

由于在我们的例子中,每个样本的标签数量(L=1),汉明损失简化为样本预测错误的比例:

\text{Hamming Loss} = \frac{1}{N} \sum_{i=1}^{N} xor(y_i, \hat{y}_i)

        这意味着,如果所有的水果都被准确地识别(苹果被识别为苹果,非苹果被识别为非苹果),那么汉明损失为0,这是理想情况。如果有错误的预测(比如,苹果被错误地标记为非苹果,或者非苹果被错误地标记为苹果),汉明损失会增加。汉明损失越低,模型的性能就越好。

     10.Jaccard相似系数: 这个指标衡量的是预测正确的正例在所有被预测和实际为正例的集合中所占的比例。简单地说,就是模型找到的真正的苹果和实际上的苹果有多相似。

        使用Jaccard相似系数可以帮助我们评估模型将苹果从其他水果中分离出来的效果。具体来说,我们可以将模型识别为苹果的水果集合与实际为苹果的水果集合进行比较。

Jaccard相似系数的计算公式是:J(A, B) = \frac{|A \cap B|}{|A \cup B|}

其中:

  • A 是第一个集合,在我们的例子中,它代表模型识别为苹果的水果集合。
  • B 是第二个集合,在我们的例子中,它代表实际为苹果的水果集合。
  • |A \cap B|表示集合A和B的交集的元素数量,即正确识别为苹果的数量。
  • |A \cup B|表示集合A和B的并集的元素数量,即模型识别为苹果的数量加上错过的苹果数量。

例如,如果有10个苹果和90个其他水果,模型识别出了8个苹果,并且其中有7个是真正的苹果(一个是错误识别的),则:

  • A(模型识别为苹果的集合)包含8个元素。
  • B(实际为苹果的集合)包含10个元素。
  • A \cap B(正确识别为苹果的集合)包含7个元素。
  • A \cup B(被识别为苹果的集合加上未被识别的真苹果的集合)包含11个元素(因为有一个非苹果被错误地识别为苹果)。

因此,Jaccard相似系数为:J(A, B) = \frac{7}{11} \approx 0.636

这个值反映了模型在区分苹果和非苹果水果方面的效果。Jaccard相似系数越接近1,表示模型的性能越好;相似系数越低,表示模型的性能越差。

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

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

相关文章

[NeurIPS-23] GOHA: Generalizable One-shot 3D Neural Head Avatar

[pdf | proj | code] 本文提出一种基于单图的可驱动虚拟人像重建框架。基于3DMM给粗重建、驱动结果,基于神经辐射场给细粒度平滑结果。 方法 给定源图片I_s和目标图片I_t,希望生成图片I_o具有源图片ID和目标图片表情位姿。本文提出三个分支:…

pytorch中创建maskrcnn模型

0.模型输入/输出参数参见 链接: pytorch的mask-rcnn的模型参数解释 核心代码 GeneralizedRCNN(这里以mask-rcnn来解释说明) # 通过输入图像获取fpn特征图,注意这里的backbone不是直接的resnet,而是fpn化后的 features self.backbone(images.tensors) # 由于是mask-rcnn,故而…

SpringCloud系列(10)--Eureka集群原理及搭建

前言:当注册中心只有一个,而且当这个注册中心宕机了,就会导致整个服务环境不可用,所以我们需要搭建Eureka注册中心集群来实现负载均衡故障容错 Eureka架构原理图 1、Eureka集群原理 2、创建Eureka Server端服务注册中心模块 (1)在…

R语言使用sjPlot包优雅绘制回归模型的交互效应图

交互作用效应(p for Interaction)在SCI文章中可以算是一个必杀技,几乎在高分的SCI中必出现,因为把人群分为亚组后再进行统计可以增强文章结果的可靠性,进行可视化后可以清晰的表明变量之间的关系。不仅如此,交互作用还可以使用来进…

Dockerfile实战(SSH、Systemctl、Nginx、Tomcat)

目录 一、构建SSH镜像 1.1 dockerfile文件内容 1.2 生成镜像 1.3 启动容器并修改root密码 二、构建Systemctl镜像 2.1 编辑dockerfile文件 ​编辑2.2 生成镜像 2.3 启动容器,并挂载宿主机目录挂载到容器中,然后进行初始化 2.4 进入容器验证 三、…

照片误删怎么办?华为手机删除的照片如何恢复?

我们在使用华为手机时,可能会因为各种原因不小心删除一些照片。如果这些照片对我们来说很重要,那么恢复它们是非常必要且急迫的。那么华为手机删除的照片如何恢复呢?本文将为您介绍3种恢复华为手机中误删照片的方法。 如何恢复华为手机中被删…

Codeforces Round 941 (Div. 2)(A-D)

A. Card Exchange(思维 Problem - A - Codeforces 题目大意: 给定n张牌,每次选k张相同的牌,把他们变成k-1张任意的牌,求最后手中最少能有几张牌。 思路: 直接判断这n张牌当中有没有k张一样的牌&#xff0c…

【java9】java9新特性之接口的私有方法

在Java 9中,接口可以包含私有方法(包括静态私有方法和实例私有方法)。这允许接口的设计者创建一些辅助方法,这些方法只能被接口中的其他方法所使用,而不能被实现该接口的类直接访问。 Java7 Java7及之前 &#xff0c…

软件项目管理的主要内容是什么?

目录 一、项目需求分析 二、项目计划制定 三、资源分配与调度 四、进度监控与控制 五、质量管理与保障 六、风险管理与应对 七、沟通协调与团队管理 八、项目收尾与总结 九、其他 一、项目需求分析 项目需求分析是软件项目管理的起始点,它涉及与客户的深入沟…

ubuntu22.04 修改内核源码教程

1. 确认当前内核版本 uname -a 2. 去ubuntu官网下载对应版本内核源码 6.5.0-28.29 : linux package : Ubuntu (launchpad.net) 3. 准备编译环境 sudo apt-get install libncurses5-dev libssl-dev build-essential openssl flex bison libelf-dev tar -xzvf linux_6.5.…

Spring Boot整合Redisson的两种方式

项目场景 Spring Boot整合Redisson的两种方式,方式一直接使用yml配置,方式二创建RedissonConfig配置类。 前言 redisson和redis区别: Redis是一个开源的内存数据库,支持多种数据类型,如字符串、哈希、列表、集合和有序…

Spring快速入门!(超详细)——工厂模式

GOF之工厂模式 设计模式:一种可以被重复利用的解决方案。GoF(Gang of Four),中文名——四人组。《Design Patterns: Elements of Reusable Object-Oriented Software》(即《设计模式》一书),19…

【网络安全】00后程序员,找 Bug 赚了 6,700,000元!他是怎么做到的?

1. 漏洞赏金计划(Bug Bounty Programs) 2. 安全咨询服务 3. 安全培训和教育 4. 写作和发表研究 5. 参与安全竞赛(CTFs) 6. 开发和销售安全工具 在网络安全领域,通过合法的方式利用漏洞赚钱主要涉及以下几种方法。…

【七十二】【算法分析与设计】64. 最小路径和,79. 单词搜索,1143. 最长公共子序列,利用记忆化递归填写dp表,可以很容易解决边界和填表顺序

递归填写dp表 利用递归函数填写dp表,可以很容易完成边界的处理,并且不用考虑填表的顺序. 绝大部分的动态规划可以用递归填表. 不用考虑填表顺序,只需要遍历一遍dfs即可. 64. 最小路径和 给定一个包含非负整数的 m x n 网格 grid ,请找出一条从左上角到右下角的路…

网络安全工程师必备的6个渗透测试工具

渗透测试是模拟黑客攻击,评估系统安全性的重要方法。 网络安全工程师需要掌握各种渗透测试工具,才能有效地发现和修复漏洞。 1. Nmap 功能: 强大的网络扫描器,可以扫描网络拓扑、识别主机和服务、发现开放端口和漏洞。 用途: 信息收集、漏洞…

Ubuntu编译安装MariaDB并进行初始化配置

Ubuntu编译安装MariaDB并进行初始化配置 1. 编译安装MariaDB2. 配置MariaDB3. Docker安装MariaDB 1. 编译安装MariaDB MariaDB官方安装文档:https://mariadb.com/kb/en/Build_Environment_Setup_for_Linux/    下载MariaDB源码:https://mariadb.org/ma…

Springboot + MySQL + html 实现文件的上传、存储、下载、删除

实现步骤及效果呈现如下: 1.创建数据库表: 表名:file_test 存储后的数据: 2.创建数据库表对应映射的实体类: import com.baomidou.mybatisplus.annotation.IdType;import com.baomidou.mybatisplus.annotation.Table…

MySQL使用Sequence创建唯一主键

目录 第一章、快速了解Sequence1.1)是什么?为什么使用1.2)Sequence和自增主键的区别 第二章、在MySQL中使用Sequence2.1)创建mysql_sequence表2.1.1)创建表2.1.2)插入数据 2.2)创建函数2.2.1&am…

vue使用debugger调试代码

1.在vue.config.js中 在你的vue文件vue.config.js中找到如下configureWebpack位置,加入devtool:"source map",重新启动项目debugger即可生效。

分享:9.3版本无缝导入AVEVA PDMS高版本工程12.0,12.1,E3D

9.3版本可以无缝导入AVEVA PDMS的工程。 UKP3d导入AVEVA PDMS工程的方法 http://47.94.91.234/forum.php?modviewthread&tid163583&fromuid6 (出处: 优易软件-工厂设计软件专家) (从AVEVA PDMS导出时元件和等级的功能我们正做收尾工作,到时可以…