【机器学习基础】机器学习的模型评估(评估方法及性能度量原理及主要公式)

news2024/11/23 9:24:08

🚀个人主页:为梦而生~ 关注我一起学习吧!
💡专栏:机器学习 欢迎订阅!后面的内容会越来越有意思~
💡往期推荐
【机器学习基础】机器学习入门(1)
【机器学习基础】机器学习入门(2)
【机器学习基础】机器学习的基本术语
💡本期内容:上一篇文章介绍了机器学习的基本术语,离完成学习又近了一步!这篇文章在正式开始算法模型的介绍之前,先说一下机器学习的模型评估,主要包括研究问题、相关文献综述、主要理论公式和案例解释。快来学习吧!!!


文章目录

  • 1 引言
  • 2 相关文献综述
  • 3 模型评估主要理论、评估方法及性能度量
    • 3.1 模型评估的引出及思考
    • 3.2 学习器真的如我们想要的一样吗
    • 3.3 评估方法
      • 3.3.1 留出法(Holdout Method)
      • 3.3.2 交叉验证法 (Cross-Validation Method)
      • 3.3.3 自助法 (Bootstrap Method)
    • 3.4 性能度量
      • 3.4.1查准率、查全率与F1
      • 3.4.2 P-R曲线
      • 3.4.3 ROC与AUC
      • 3.4.4 代价敏感错误率与代价矩阵


1 引言

机器学习模型评估是机器学习领域中的一个重要研究方向,其研究背景在于随着大数据时代的到来,人们面临着越来越多的数据分析和处理任务,而机器学习作为一种高效的数据处理技术,在很多领域都得到了广泛应用。然而,机器学习模型的效果评估是机器学习应用过程中一个非常关键的问题,因此机器学习模型评估的研究具有非常重要的意义。

在这里插入图片描述

  • 研究问题

机器学习模型评估的研究问题主要包括:如何选择合适的评估指标、如何确定评估的实验设计、如何利用评估结果对模型进行优化等。此外,由于机器学习模型的复杂性和多样性,评估方法的选择和设计也是需要解决的重要问题。

  • 研究意义

机器学习模型评估的研究意义在于:

  1. 提高模型的预测精度和泛化能力;
  2. 帮助我们更好地理解模型的内部机制和性能;
  3. 为模型优化和改进提供依据;
  4. 应用于实际问题的解决,提高生产力和效率。

2 相关文献综述

  • 机器学习模型评估概述

机器学习模型评估是对模型性能进行量化和优化的过程。评估不仅涉及对模型在训练集上的性能考察,还包括在测试集上的表现评估。训练集用于训练模型,测试集则用于验证模型在新数据上的泛化能力。此外,为了充分了解模型的性能,还常常采用交叉验证等技术进行评估。

  • 模型评估的性能度量指标

性能度量指标是评估机器学习模型性能的关键工具。常用的性能度量指标包括准确率、精确率、召回率、F1分数、ROC AUC面积等。这些指标可用于二分类、多分类和回归等不同类型的机器学习问题。
准确率表示预测正确的样本数占总样本数的比例,精确率和召回率则分别表示预测为正且确实为正的样本数以及预测为负且确实为负的样本数所占的比例。
F1分数是精确率和召回率的调和平均数,用于综合考虑二者的性能。
ROC、AUC面积则是一种常用的分类性能指标,它表示在所有可能的分类阈值下模型的ROC曲线与y=x线之间的面积。

在这里插入图片描述

  • 主要模型评估方法

主要的模型评估方法包括内部评估和外部评估
内部评估主要基于训练集和测试集进行,如准确率、精确率、召回率和F1分数等。
外部评估则通过比较模型与其他基准模型的性能来进行评估,如ROC AUC面积和交叉验证等。此外,为了充分了解模型的性能,还常常采用交叉验证等技术进行评估。

  • 现有研究不足与问题

尽管已经有很多关于机器学习模型评估的研究,但仍存在一些不足和问题。首先,不同的评估指标可能导致评估结果的差异和误解,因此需要谨慎选择合适的指标。其次,由于数据的复杂性和模型的多样性,现有评估方法可能无法全面反映模型的性能,因此需要开发更加鲁棒和泛化的评估方法。
此外,现有研究还缺乏对不同模型评估方法的比较和分析,因此需要进行更加深入的研究以找出最佳的评估策略。


3 模型评估主要理论、评估方法及性能度量

3.1 模型评估的引出及思考

  • 精度与错误率

我们通常将分类错误的样本数占总样本数的比例称为“错误率”,也即当在m个样本中有α个样本分类错误时,错误率E等于α除以m。相应地,1减去错误率就是精度,也即“精度=1-错误率”。更一般地,我们将学习器的实际预测输出与样本的真实输出之间的差异称为“误差”

  • 训练误差和泛化误差——我要得到什么?

我们还可以将学习器在训练集上的误差称为“训练误差”或“经验误差”,在新样本上的误差称为“泛化误差”。显然,我们希望得到泛化误差小的学习器。然而,由于我们事先并不知道新样本是什么样的,所以实际上我们只能尽力使经验误差最小化

  • 精度越大越好?

在很多情况下,我们可以学习到经验误差很小、在训练集上表现很好的学习器。
例如,甚至可以对所有训练样本都分类正确,也即分类错误率为零,分类精度为100%。然而,这样的学习器是否是我们想要的呢?遗憾的是,这样的学习器在多数情况下都不理想

3.2 学习器真的如我们想要的一样吗

我们实际希望的,是在新样本上能表现得很好的学习器。为了实现这一目标,我们应该从训练样本中学习出适用于所有潜在样本的普遍规律,以便在遇到新样本时能够做出正确的判断。

  • 过拟合与欠拟合

然而,当学习器过于适应训练样本时,它可能会将训练样本自身的某些特点视为所有潜在样本都具有的一般性质,从而导致泛化性能下降。这种现象在机器学习中称为“过拟合”。与之相对的是“欠拟合”,这意味着学习器尚未完全掌握训练样本的一般性质

在这里插入图片描述

如果出现过拟合与欠拟合,需要使用正则化等方法来进行挽救,具体方法后面会讲到。

然而必须认识到,过拟合是无法彻底避免的,我们所能做的只是"缓解"或者说减小其风险。关于这一点,可大致这样理解:机器学习面临的问题通常是 NP 难甚至更难,而有效的学习算法必然是在多项式时间内运行完 ,若可彻底避免过拟合, 则通过经验误差最小化就能获最优解,这就意味着我们构造性地证明了“P=NP” ;因此,只要相信 "P≠NP”,过拟合就不可避免。

  • 如何选择?

在现实任务中,我们往往有多种学习算法供选择,甚至对同一个学习算法,当使用不同的参数配置 ?也会产生不同的模型那么,我们该选用哪个学习算法、使用哪种参数配置呢?这就是机器学习中的"模型选择" (model selection) 问题。
理想的解决方案当然是对候选模型的泛化误差进行评估,然后选择泛化误差最小的那个模型
然而如上面所讨论的,我们无法直接获得泛化误差,而训练误差又由于过拟合现象的存在而不适合作为标准,那么,在现实中如何进行模型评估与选择呢?

3.3 评估方法

测试样本为什么要尽可能不出现在训练集中呢?
为理解这一点,不妨考虑这样一个场景:老师出了10道习题供同学们练习,考试时老师又用同样的这10道题作为试题,这个考试成绩能否有效反映出同学们学得好不好呢?答案是否定的,可能有的同学只会做这10道题却能得高分。

希望得到泛化性能强的模型,好比是希望同学们对课程学得很好、获得了对所学知识“举一反三”的能力;训练样本相当于给同学们练习的习题,测试过程则相当于考试.显然,若测试样本被用作训练了,则得到的将是过于“乐观”的估计结果.

3.3.1 留出法(Holdout Method)

‘留出法’ 直接将数据集D划分为两个互斥的集合,其中一个集合作为训练集S,另一个作为测试集T即D=S∪T,S∩T≠∅. 在S上训练出模型后,用T来评估其测试误差,作为泛化误差的估计需要注意的是,训练/测试集的划分要尽可能保持数据分布的一致性,避免因数据划分过程引入额外的偏差而对最终结果产生影响,在分类任务中要保持样本类别比例相似,取样通常采用的是【分层抽样】

在这里插入图片描述

  • 主要步骤
  1. 将原始数据集分成两个部分:训练集和测试集。通常,训练集用于训练模型,测试集用于评估模型。
  2. 使用训练集训练模型
  3. 使用测试集评估模型,计算模型的各项性能指标,如准确率、精确率、召回率等。
  4. 根据测试集的评估结果,对模型进行调整和优化
  5. 重复步骤b-d,直到模型性能达到满意的水平。

3.3.2 交叉验证法 (Cross-Validation Method)

Cross Validation:简言之,就是进行多次train_test_split划分
每次划分时,在不同的数据集上进行训练、测试评估,从而得出一个评价结果;如果是5折交叉验证,意思就是在原始数据集上,进行5次划分,每次划分进行一次训练、评估,最后得到5次划分后的评估结果,一般在这几次评估结果上取平均得到最后的评分。k-fold cross-validation ,其中,k一般取5或10。

  • 交叉验证的优点
  1. 原始采用的train_test_split方法,数据划分具有偶然性;交叉验证通过多次划分,大大降低了这种由一次随机划分带来的偶然性,同时通过多次划分,多次训练,模型也能遇到各种各样的数据,从而提高其泛化能力;

  2. 与原始的train_test_split相比,对数据的使用效率更高。train_test_split,默认训练集、测试集比例为3:1,而对交叉验证来说,如果是5折交叉验证,训练集比测试集为4:1;10折交叉验证训练集比测试集为9:1。数据量越大,模型准确率越高!

在这里插入图片描述

  • 交叉验证法的主要步骤
  1. 将原始数据集分成k个部分,其中k-1个部分作为训练集,剩余的部分作为测试集。
  2. 使用k-1个部分训练模型
  3. 使用剩余的部分测试模型,计算模型的各项性能指标。
  4. 重复步骤b-c,直到每个部分都被用作测试集一次
  5. 对所有的测试结果进行平均,得到模型的最终性能指标。
  6. 根据最终性能指标,对模型进行调整和优化。
  7. 重复步骤b-f,直到模型性能达到满意的水平。

3.3.3 自助法 (Bootstrap Method)

自助法是一种常用的模型评估方法,它通过从原始数据集中有放回地随机抽取样本来构建新数据集进行训练和测试。由于每次抽样可能会产生重复的样本,因此新数据集的大小与原始数据集相同,但是其中大约有36.8%的样本没有出现在新数据集中。这些没有出现在新数据集中的样本被用作测试集,而出现在新数据集中的样本则被用作训练集。

自助法的优点是能够从有限的数据集中产生多个不同的训练集和测试集,从而更好地评估模型的性能。但是,由于每次抽样都会产生不同的数据集,因此自助法会引入额外的随机性,使得模型评估的结果更加不稳定。

在这里插入图片描述

  • 自助法的步骤
  1. 从原始数据集中随机选择n个样本构成一个新的数据集
  2. 使用新的数据集训练模型
  3. 使用原始数据集测试模型,计算模型的各项性能指标
  4. 重复步骤a-c多次(如1000次),得到每个性能指标的平均值和标准偏差
  5. 根据平均值和标准偏差,对模型进行调整和优化
  6. 重复步骤a-e,直到模型性能达到满意的水平。

3.4 性能度量

对学习器的泛化性能进行评估,不仅需要有效可行的实验估计方法,还需要有衡量模型泛化能力的评价标准,这就是性能度量(performance measure).

常用的性能度量包括准确度、灵敏度、特异性、精确度、召回率、F度量和G均值等。不同的性能度量会导致不同的评估结果。其中,准确度是指分类正确的样本数占总样本数的比例;灵敏度是指真实为正例的样本中被正确预测为正例的比例;特异性是指真实为负例的样本中被正确预测为负例的比例;精确度是指被正确预测为正例的样本数占所有预测为正例的样本数的比例;召回率是指真实为正例的样本中被正确预测为正例的比例;F度量是精确度和召回率的加权调和平均数;G均值是灵敏度和特异性的乘积的平方根。

3.4.1查准率、查全率与F1

  • 查准率(Precision):是指预测结果中真正例(True Positive,TP)占所有预测结果中正例(Positive,TP+FP)的比例。公式为:Precision = TP / (TP + FP)。查准率越高,说明模型预测结果中真正例的比例越高,模型对于正样本的识别能力越强。
  • 查全率(Recall):是指预测结果中真正例(True Positive,TP)占所有实际正例(Positive,TP+FN)的比例。公式为:Recall = TP / (TP + FN)。查全率越高,说明模型能够成功预测出的正样本比例越高,模型的识别能力越全面。
  • F1值:是查准率和查全率的调和均值,用于综合评价模型的性能。公式为:F1 = 2 * (Precision * Recall) / (Precision + Recall)。F1值越高,说明模型在准确性和可靠性方面的表现都较好。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.4.2 P-R曲线

查准率和查全率是一对矛盾的度量.一般来说,查准率高时,查全率往往偏低;而查全率高时,查准率往往偏低。

在很多情形下,我们可根据学习器的预测结果对样例进行排序,排在前面的是学习器认为“最可能”是正例的样本,排在最后的则是学习器认为“最不可能”是正例的样本。
按此顺序逐个把样本作为正例进行预测,则每次可以计算出当前的查全率、查准率。
以查准率为纵轴、查全率为横轴作图,就得到了查准率-查全率曲线,简称“P-R曲线”,显示该曲线的图称为“P-R图”.
在这里插入图片描述

3.4.3 ROC与AUC

ROC(Receiver Operating Characteristic)曲线和AUC(Area Under Curve)常被用来评价一个二值分类器(binary classifier)的优劣。ROC曲线也称为受试者工作特征曲线(receiver operating characteristic curve,简称ROC曲线),又称为感受性曲线(sensitivity curve)。

  • ROC曲线:它通过将真正例率(True Positive Rate,TPR)和假正例率(False Positive Rate,FPR)作为横纵坐标来描绘分类器在不同阈值下的性能

与P-R曲线相似,根据学习器的预测结果对样例进行排序,按此顺序逐个把样本作为正例进行预测,每次计算出两个重要量的值,分别以它们为横、纵坐标作图,就得到了ROC曲线,与P-R曲线使用查准率、查全率为纵、横轴不同,ROC曲线的纵轴是真正例率TPR,横轴是假正例率FPR

在这里插入图片描述

AUC:AUC是ROC曲线下的面积,常用于评估模型在二分类问题中的性能。

进行学习器的比较时,与P-R 图相似若一个学习器的 ROC 曲线被另个学习器的曲线完全“包住”,则可断言后者的性能优于前者; 若两个学习器的 ROC 曲线发生交叉则难以一般性地断言两者孰优敦劣.此时如果一定要进行比较.则较为合理的判据是比较 ROC 曲线下的面积即AUC(Area Under ROC Curve)
请添加图片描述

在这里插入图片描述

3.4.4 代价敏感错误率与代价矩阵

在现实任务中常会遇到这样的情况: 不同类型的错误所造成的后果不同。例如在医疗诊断中,错误地把患者诊断为健康人与错误地把健康人诊断为患者看起来都是犯了“一次错误”,但后者的影响是增加了进一步检查的麻烦,前者的后果却可能是丧失了拯救生命的最佳时机:再如门禁系统错误地把可通行人员拦在门外,将使得用户体验不佳,但错误地把陌生人放进门内,则会造成严重的安全事故.为权衡不同类型错误所造成的不同损失可为错误赋予“非均等代价”(unequal cost)。
请添加图片描述
costij表示将第i类样本预测为第j类样本的代价。
假设将第0类作为正类,第1类作为反类,令D+为正例集,D-为负例集。“代价敏感”(cost-sensitive)错误率为:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
代价曲线画法

  1. 设ROC曲线上点的坐标为(FPR,TPR),则可计算出相应的FNR=1-TPR
  2. 在代价平面上绘制一条从(0, FPR)到(1, FNR)的线段,线段下的面积即表示了该条件下的期望总体代价;
  3. 如此将ROC曲线上的每个点转化为代价平面上的一条线段,然后去所有线段的下界,围成的面积即为在所有条件下学习期的总体代价。
    请添加图片描述

:部分内容与图片来自《机器学习》——周志华

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

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

相关文章

CM211-1 MC022主板输入刷Armbian

咋一看以为是NAND的存储,经过各方搜索,发现BWCMMQ511G08G存储芯片是狭义的NAND,支持emmc协议,故而做尝试。 烧写步骤 1.下载Armbian镜像 Armbian_23.11.0_amlogic_s905l3-cm211_lunar_6.1.60_server_2023.11.01.img.gz 2.将镜像…

Leetcode—4.寻找两个正序数组的中位数【困难】

2023每日刷题(二十九) Leetcode—4.寻找两个正序数组的中位数 直接法实现代码 int mid, mid1, mid2; bool findmid(int n, int k, int x) {if(n % 2 1) {if(k n / 2) {mid x;return true;}} else {if(k n / 2 - 1) {mid1 x;} else if(k n / 2) {…

程序员,你的护城河挖好了吗?

程序员的护城河 在遥远的古代,护城河是一种防御工事,通常用于保护城市或城堡免受外部攻击。它是由人工挖掘或天然形成的河流、壕沟或城墙等,可以作为防御屏障,阻止敌人的进入。 而对于程序员而言,“护城河”是一种比喻…

Java之SpringCloud Alibaba【九】【Spring Cloud微服务Skywalking】

Java之SpringCloud Alibaba【一】【Nacos一篇文章精通系列】跳转Java之SpringCloud Alibaba【二】【微服务调用组件Feign】跳转Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】跳转Java之SpringCloud Alibaba【四】【微服务 Sentinel服务熔断】跳转Java之Sprin…

【milkv】2、mpu6050驱动添加及测试

前言 本章介绍mpu6050的驱动添加以及测试。 其中驱动没有采用sdk提供的驱动,一方面需要配置irq,另一方面可以学习下如何通过ko方式添加驱动。 一、参考文章 驱动及测试文件编译流程: https://community.milkv.io/t/risc-v-milk-v-lsm6ds…

Semantic Kernel 学习笔记2

本来想白瞟免费Bing Search API如下,但是报错无法链接利用免费的必应 Bing 自定义搜索打造站内全文搜索_bing_subscription_key-CSDN博客 改成按照官方推荐申请,并在.env文件中添加BING_API_KEY""字段。 1. 打开https://www.microsoft.com/en-…

Quarkus 替代 SpringBoot

1 概述2 SpringBoot3 Quarkus4 比较5 调查结果6 从 Spring 转换到 Quarkus7 我是 Spring 开发者,为什么要选Quarkus?8 Spring 开发者可以活用哪些现有知识?9 对Spring开发者有额外的好处吗?10 Spring开发者如何开始学习Quarkus&am…

mp4视频批量截取!!!

mp4视频批量截取!!! 问题:如果我们想截取一个mp4视频中的多个片段,一个一个截会很麻烦! 可以将想要截取的开始时间和结束时间保存到 excel表 中,进行批量截取。 1、对一个视频,记…

临床决策分析(DCA)演示APP:理解DCA分析

临床决策分析(DCA)演示APP:理解DCA分析 之前讨论了DCA分析的分析过程和作用,认为其最主要的作用是确定预测模型的决策阈值,从而促进预测模型与临床的结合。DCA的影响不止于此,在DCA分析中,预测…

C++模拟实现——红黑树

一、介绍 红黑树也是对一般的搜索二叉树不能保证平衡的一个改进,和AVL树采用的思路不同,但同样需要旋转,其本质也是一颗平衡搜索二叉树,其节点有颜色的区分,并且被一些规则束缚,在这些规则下,能…

远勤山丨于无声处听惊雷——写在远航汽车投产下线之际

“只要未来有前途的产业必然竞争激烈。新能源汽车目前还有很多新进入者,证明还有很大的成长空间。对于远航汽车,我们非常有信心坐上最后的牌桌。” 2023年11月8日,在山西运城大运新能源生产基地举办的“远航汽车下线仪式”上,大运…

举报“将我的电脑控作己用者”!

既然“麻辣800727”都说是“街子电信”干的,那么,我现在就正式举报:请依法管理宽带网,你国营的也不可以随意侵犯用户的人权,更不可以将自己变成法外之地! 请公开答复,并改正,否则把…

Web实验(总)

目录 网站需求: 思路: 实验步骤: 第一步:准备工作 第二步:新建一个存储网页的目录 第三步:修改本地hosts映射 第四步:修改配置文件,建立基于http服务的网站 1)创建用户song和…

都快2024年了,别只使用React,需要学习一下Vue,不然没出路了

最近,我的朋友因为不熟悉 Vue.js 而未能通过面试。 她平时工作中大部分时间都在使用React,所以也懒得去了解其他前端框架。 世界上所有的前端框架我们都应该熟悉吗? 不,这是极其不合理的。 但为了生存,朋友还是要学…

Vue事件绑定

目录 前言 Vue事件处理 指令的语法格式 事件绑定指令—v-on 回调函数 前言 我们知道如何在原生js中实现事件绑定&#xff0c;那在vue中如何实现呢&#xff1f; Vue事件处理 指令的语法格式 <标签 v-指令名&#xff1a;参数名"表达式">{{插值语法}}</…

2D 3D 工业组态技术 meta2d JavaScript

本心、输入输出、结果 文章目录 2D 3D 工业组态技术 meta2d JavaScript前言2D 3D 工业组态技术 meta2d JavaScript 简介2D 3D 工业组态技术 meta2d JavaScript 特性丰富的组态能力0代码数据通信组态的应用多端适配能力强大的扩展能力追求卓越性能丰富的组件库资源广泛的应用场景…

React Virtual DOM及Diff算法

JSX到底是什么 使用React就一定会写JSX&#xff0c;JSX到底是什么呢&#xff1f;它是一种JavaScript语法的扩展&#xff0c;React使用它来描述用户界面长成什么样子&#xff0c;虽然它看起来非常像HTML&#xff0c;但他确实是javaScript&#xff0c;在React代码执行之前&#…

介绍几种Go语言开发的IDE

文章目录 1.前言2.几种ide2.1 Goland2.2 VsCode示例 2.3 LiteIDE2.4 Eclipse插件GoClipse2.5 Atom2.6 Vim2.7 Sublime Text 3.总结写在最后 1.前言 Go语言作为一种新兴的编程语言&#xff0c;近年来受到了越来越多的关注。 它以其简洁、高效和并发性能而闻名&#xff0c;被广…

基于STC12C5A60S2系列1T 8051单片机的数模芯片DAC0832实现数模转换应用

基于STC12C5A60S2系列1T 8051单片机定时器/计数器应用 STC12C5A60S2系列1T 8051单片机管脚图STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式及配置STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式介绍数模芯片DAC0832介绍通过按键调节数模芯片DAC0832输出模拟量控制…

ThreadLocal原理及使用场景

ThreadLocal意为线程本地变量&#xff0c;用于解决多线程并发时访问共享变量的问题 明显&#xff0c;在多线程的场景下&#xff0c;当有多个线程对共享变量进行修改的时候&#xff0c;就会出现线程安全问题&#xff0c;即数据不一致问题。常用的解决方法是对访问共享变量的代码…