当前位置: 首页 > news >正文

评价机器学习模型的指标

为了衡量一个机器学习模型的好坏,需要给定一个测试集,用模型对测试集中的每一个样本进行预测,并根据预测结果计算评价分数。
对于分类问题,常见的评价标准有准确率、精确率、召回率和F值等。给定测试集 𝒯 = {(𝒙(1), 𝑦(1)), ⋯ , (𝒙(𝑁), 𝑦(𝑁))},假设标签 𝑦(𝑛) ∈ {1, ⋯ , 𝐶},用学习好的模型𝑓(𝒙; 𝜃∗)对测试集中的每一个样本进行预测,结果为{y^(1), ⋯y^(N)}。
准确率 最常用的评价指标为准确率(Accuracy):

其中𝐼(⋅)为指示函数.
错误率 和准确率相对应的就是错误率(Error Rate):

精确率和召回率 准确率是所有类别整体性能的平均,如果希望对每个类都进行性能估计,就需要计算精确率(Precision)和召回率(Recall)。精确率和召回率是广泛用于信息检索和统计学分类领域的两个度量值,在机器学习的评价中也被大量使用。
对于类别𝑐来说,模型在测试集上的结果可以分为以下四种情况:
(1) 真正例(True Positive,TP):一个样本的真实类别为𝑐并且模型正确地预测为类别𝑐.这类样本数量记为

(2) 假负例(False Negative,FN):一个样本的真实类别为𝑐,模型错误地预测为其他类.这类样本数量记为

(3) 假正例(False Positive,FP):一个样本的真实类别为其他类,模型错误地预测为类别𝑐.这类样本数量记为

(4) 真负例(True Negative,TN):一个样本的真实类别为其他类,模型也预测为其他类.这类样本数量记为𝑇𝑁𝑐。对于类别𝑐来说,这种情况一般不需要关注。
这四种情况的关系可以用如表2.3所示的混淆矩阵(Confusion Matrix)来表示。

根据上面的定义,我们可以进一步定义查准率、查全率和F值。
精确率(Precision),也叫精度或查准率,类别 𝑐 的查准率是所有预测为类别𝑐的样本中预测正确的比例:

召回率(Recall),也叫查全率,类别𝑐的查全率是所有真实标签为类别𝑐的样本中预测正确的比例:

F值(F Measure)是一个综合指标,为精确率和召回率的调和平均:

其中𝛽 用于平衡精确率和召回率的重要性,一般取值为1.𝛽 = 1时的F值称为F1值,是精确率和召回率的调和平均。
宏平均和微平均 为了计算分类算法在所有类别上的总体精确率、召回率和 F1值,经常使用两种平均方法,分别称为宏平均(Macro Average)和微平均(Mi-cro Average)。
宏平均是每一类的性能指标的算术平均值:

值得注意的是,在有些文献上F1值的宏平均为

微平均是每一个样本的性能指标的算术平均值.对于单个样本而言,它的精确率和召回率是相同的(要么都是1,要么都是0)。因此精确率的微平均和召回率的微平均是相同的.同理,F1值的微平均指标是相同的。当不同类别的样本数量不均衡时,使用宏平均会比微平均更合理些。宏平均会更关注小类别上的评价指标。

在实际应用中,我们也可以通过调整分类模型的阈值来进行更全面的评价,比如AUC(Area Under Curve)、ROC(Receiver Operating Characteristic)曲线、PR(Precision-Recall)曲线等.此外,很多任务还有自己专门的评价方式,比如TopN准确率。

交叉验证(Cross-Validation)是一种比较好的衡量机器学习模型的统计分析方法,可以有效避免划分训练集和测试集时的随机性对评价结果造成的影响。我们可以把原始数据集平均分为𝐾 组不重复的子集,每次选 𝐾 − 1 组子集作为训练集,剩下的一组子集作为验证集。这样可以进行𝐾 次试验并得到𝐾 个模型,将这𝐾 个模型在各自验证集上的错误率的平均作为分类器的评价。

http://www.lryc.cn/news/263419.html

相关文章:

  • C# WPF上位机开发(日志调试)
  • AR室内导航如何实现?技术与原理分析
  • 计算机网络:物理层(奈氏准则和香农定理,含例题)
  • 天津仁爱学院专升本化学工程与工艺专业 《无机化学》考试大纲
  • GO 的 socks5代理 编写
  • MYSQL-简单的联表查询示例
  • Python基于joblib的并行计算进程线程multiprocessing多核并行计算
  • 左右列的单元格合并
  • 机器学习 | 决策树 Decision Tree
  • 面试题总结(十四)【系统移植】【华清远见西安中心】
  • 【Spark精讲】Spark RDD弹性体现在哪些方面?
  • 【从客户端理解Kafka的使用方式】
  • 『OPEN3D』1.5.4 动手实现点云八叉树(OctoTree)最近邻
  • 非制冷红外成像技术实现高灵敏度和高分辨率
  • @Resource 和 @Autowired区别是什么?
  • K8S的一个pod中运行多个容器
  • 《每天一分钟学习C语言·一》
  • zookeeper:启动后占用8080端口问题解决
  • 深度学习中的高斯分布
  • 【已解决】Atlas 导入 Hive 元数据,执行 import-hive.sh 报错
  • 在 Windows PC 上轻松下载并安装 FFmpeg
  • 21.Servlet 技术
  • 【Hive】——DDL(PARTITION)
  • SpringBoot 源码解析4:事件监听器
  • 使用 FastAPI 和 Vue.js 实现前后端分离
  • 算法基础之SPFA判断负环
  • 一些常用的Linux命令及其简要说明(持续更新)
  • 开发企业展示小程序的关键步骤和技巧
  • Python-Selenium-使用 pywinauto 实现 Input 上传文件
  • Go语言运行时与自家平台对比后认识