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

news2024/11/26 23:52:35

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

对于分类问题:

  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.coloradmin.cn/o/1631854.html

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

相关文章

机器学习:基于Sklearn、XGBoost框架,使用XGBClassifier、支持向量分类器和决策树分类器预测乳腺癌是良性还是恶性

前言 系列专栏:机器学习:高级应用与实践【项目实战100】【2024】✨︎ 在本专栏中不仅包含一些适合初学者的最新机器学习项目,每个项目都处理一组不同的问题,包括监督和无监督学习、分类、回归和聚类,而且涉及创建深度学…

【Camera KMD ISP SubSystem笔记】CAM SYNC与DRQ②

DRQ的作用: DRQ负责调度管理pipeline里的node处理逻辑(通过node之间的dependency依赖机制) 利用多线程并行处理Pipeline中并行的node,加快处理速度 DRQ运转流程: DRQ先告诉node fill dependency, 此时seq id 为0…

BetterDisplay Pro for Mac:显示器校准软件

BetterDisplay Pro for Mac是一款出色的显示器校准软件,旨在提升你的视觉体验。它提供了准确的显示器参数调整,包括亮度、对比度、色温和色域等,让你的显示器呈现更真实、清晰、细腻的图像。此外,软件还提供多种预设模式和自定义选…

【PyTorch 实战3:YOLOv5检测模型】10min揭秘 YOLOv5 检测网络架构、工作原理以及pytorch代码实现(附代码实现!)

YOLOv5简介 YOLOv5(You Only Look Once, Version 5)是一种先进的目标检测模型,是YOLO系列的最新版本,由Ultralytics公司开发。该模型利用深度学习技术,能够在图像或视频中实时准确地检测出多个对象的位置及其类别&…

pycharm 安装“通义灵码“并测试

过程:“File>setting>Plugins” 提示: 翻译之后: 点击"接受"之后,提示一下图片,点击ok 安装完成: 安装完"通义灵码"之后,需要登陆,登陆后测试 参考…

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

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

进程的概念(2)

进程优先级 1.什么的优先级 概念:指定进程获取某种资源(CPU)的先后顺序 本质:优先级的本质是优先级数字的大小,Linux中优先级数字越小,优先级越高 task_struct 进程控制快-> struct -> 内部字段 -&g…

MT3608B 航天民芯代理 1.2Mhz 24V输入 升压转换器

深圳市润泽芯电子有限公司为航天民芯一级代理商 技术支持欢迎试样~Tel:18028786817 简述 MT3608B是恒定频率的6针SOT23电流模式升压转换器,用于小型、低功耗应用。MT3608B开关频率为1.2MHz,允许使用微小、低电平成本电容器和电感器高度不…

UE5 GAS开发P40 周期性效果,持续治疗

Periodic Gameplay Effects周期性的游戏效果 它们在一段时间内以固定的间隔重复应用到目标上。这种效果通常用于表示持续性伤害、治疗或其他影响,例如中毒、灼烧或回复效果。 修改GE_CrystalHeal,在Period改为每0.1秒执行一次 假如同时有三个持续时间在进行,那么这…

万兆以太网MAC设计(11)完整UDP协议栈仿真

文章目录 前言一、模块接口二、IP模块与ARP模块之间的联系三、整体协议栈仿真总结: 前言 目前除了巨帧处理逻辑之外,所有的准备工作都已经结束了,先进行整体的功能验证。 一、模块接口 所有模块接口皆采用AXIS数据流的形式,其中…

机器学习:基于Sklearn框架,使用逻辑回归对由心脏病引发的死亡进行预测分析

前言 系列专栏:机器学习:高级应用与实践【项目实战100】【2024】✨︎ 在本专栏中不仅包含一些适合初学者的最新机器学习项目,每个项目都处理一组不同的问题,包括监督和无监督学习、分类、回归和聚类,而且涉及创建深度学…

小程序AI智能名片商城系统直连:打造用户与企业无缝对接的新时代!

在高度不确定性的商业环境中,企业如何快速响应市场变化,实现与用户的零距离接触?答案就是——小程序AI智能名片商城系统直连!这一创新工具不仅为企业打开了与用户直接连接的大门,更为企业提供了持续收集用户反馈、快速…

Rust面试宝典第10题:绘制各种图形

题目 我们需要编写一个图形相关的应用程序,并处理大量图形(Shape)信息,图形有矩形(Rectangle)、正方形(Square)、圆形(Circle)等种类。应用程序需要计算这些图…

Eclipse C++ 无法debug 问题

环境: ubuntu20.04 Eclipse CDT(x86_64) 工程,使用的是默认的CMake Project 现象: 1. 使用Eclipse, 加了断点后,debug 无法停在断点;step over 执行后是从main 直接执行到exit &#xff…

动态增删表格

期望目标&#xff1a;实现一个能通过按钮来动态增加表格栏&#xff0c;每次能添加一行&#xff0c;每行末尾有一个删减按钮。 <el-button type"text" class"primary"click"addMember()">添加</el-button> <el-table:data"m…

C语言趣味代码(四)

这一篇主要编写几个打字练习的小程序&#xff0c;然后通过这些小程序的实现来回顾复习我们之前学过的知识&#xff0c;然后通过这写打字练习的小程序来提升我们的打字技术和编程技术。 1. 打字练习 1.1 基本打字练习 1.1.1 基本实现 首先我们来制作一个用于计算并显示输入一…

React | React.cloneElement 的使用

我看到同事的代码里有 cloneElement&#xff0c;于是去了解了一下这个函数。 就跟它的名字一样&#xff0c;克隆元素&#xff0c;可以基于一个元素创建一个新的元素&#xff0c;并且为新元素添加新的属性或者覆盖已有的属性。 下面是一个简单例子&#xff1a; .node1 {backg…

2024最新docker部署gitlab

docker部署gitlab 快速命令 1 拉取镜像 docker pull gitlab/gitlab-ce2 启动容器 docker run -itd \-p 9980:80 \-p 9922:22 \-v /opt/soft/docker/gitlab/etc:/etc/gitlab \-v /opt/soft/docker/gitlab/log:/var/log/gitlab \-v /opt/soft/docker/gitlab/opt:/var/opt/g…

MATLAB语音信号分析与合成——MATLAB语音信号分析学习资料汇总(图书、代码和视频)

教科书&#xff1a;MATLAB语音信号分析与合成&#xff08;第2版&#xff09; 链接&#xff08;含配套源代码&#xff09;&#xff1a;https://pan.baidu.com/s/1pXMPD_9TRpJmubPGaRKANw?pwd32rf 提取码&#xff1a;32rf 基础入门视频&#xff1a; 视频链接&#xff1a; 清…

为什么我的Mac运行速度变慢 mac运行速度慢怎么办 如何使用CleanMyMac X修复它

近些年伴随着苹果生态的蓬勃发展&#xff0c;越来越多的用户开始尝试接触Mac电脑。然而很多人上手Mac后会发现&#xff0c;它的使用逻辑与Windows存在很多不同&#xff0c;而且随着使用时间的增加&#xff0c;一些奇奇怪怪的文件也会占据有限的磁盘空间&#xff0c;进而影响使用…