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

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

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曲线上的每个点转化为代价平面上的一条线段,然后去所有线段的下界,围成的面积即为在所有条件下学习期的总体代价。

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

相关文章
|
19天前
|
机器学习/深度学习 算法 数据挖掘
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构。本文介绍了K-means算法的基本原理,包括初始化、数据点分配与簇中心更新等步骤,以及如何在Python中实现该算法,最后讨论了其优缺点及应用场景。
63 4
|
19天前
|
人工智能 JSON 算法
Qwen2.5-Coder 系列模型在 PAI-QuickStart 的训练、评测、压缩及部署实践
阿里云的人工智能平台 PAI,作为一站式、 AI Native 的大模型与 AIGC 工程平台,为开发者和企业客户提供了 Qwen2.5-Coder 系列模型的全链路最佳实践。本文以Qwen2.5-Coder-32B为例,详细介绍在 PAI-QuickStart 完成 Qwen2.5-Coder 的训练、评测和快速部署。
Qwen2.5-Coder 系列模型在 PAI-QuickStart 的训练、评测、压缩及部署实践
|
2天前
|
机器学习/深度学习 传感器 运维
使用机器学习技术进行时间序列缺失数据填充:基础方法与入门案例
本文探讨了时间序列分析中数据缺失的问题,并通过实际案例展示了如何利用机器学习技术进行缺失值补充。文章构建了一个模拟的能源生产数据集,采用线性回归和决策树回归两种方法进行缺失值补充,并从统计特征、自相关性、趋势和季节性等多个维度进行了详细评估。结果显示,决策树方法在处理复杂非线性模式和保持数据局部特征方面表现更佳,而线性回归方法则适用于简单的线性趋势数据。文章最后总结了两种方法的优劣,并给出了实际应用建议。
20 7
使用机器学习技术进行时间序列缺失数据填充:基础方法与入门案例
|
4天前
|
编解码 机器人 测试技术
技术实践 | 使用 PAI+LLaMA Factory 微调 Qwen2-VL 模型快速搭建专业领域知识问答机器人
Qwen2-VL是一款具备高级图像和视频理解能力的多模态模型,支持多种语言,适用于多模态应用开发。通过PAI和LLaMA Factory框架,用户可以轻松微调Qwen2-VL模型,快速构建文旅领域的知识问答机器人。本教程详细介绍了从模型部署、微调到对话测试的全过程,帮助开发者高效实现定制化多模态应用。
|
12天前
|
机器学习/深度学习 人工智能 算法
人工智能浪潮下的编程实践:构建你的第一个机器学习模型
在人工智能的巨浪中,每个人都有机会成为弄潮儿。本文将带你一探究竟,从零基础开始,用最易懂的语言和步骤,教你如何构建属于自己的第一个机器学习模型。不需要复杂的数学公式,也不必担心编程难题,只需跟随我们的步伐,一起探索这个充满魔力的AI世界。
30 12
|
19天前
|
机器学习/深度学习 Python
机器学习中评估模型性能的重要工具——混淆矩阵和ROC曲线。混淆矩阵通过真正例、假正例等指标展示模型预测情况
本文介绍了机器学习中评估模型性能的重要工具——混淆矩阵和ROC曲线。混淆矩阵通过真正例、假正例等指标展示模型预测情况,而ROC曲线则通过假正率和真正率评估二分类模型性能。文章还提供了Python中的具体实现示例,展示了如何计算和使用这两种工具来评估模型。
38 8
|
19天前
|
机器学习/深度学习 算法 UED
在数据驱动时代,A/B 测试成为评估机器学习项目不同方案效果的重要方法
在数据驱动时代,A/B 测试成为评估机器学习项目不同方案效果的重要方法。本文介绍 A/B 测试的基本概念、步骤及其在模型评估、算法改进、特征选择和用户体验优化中的应用,同时提供 Python 实现示例,强调其在确保项目性能和用户体验方面的关键作用。
25 6
|
19天前
|
机器学习/深度学习 Python
机器学习中模型选择和优化的关键技术——交叉验证与网格搜索
本文深入探讨了机器学习中模型选择和优化的关键技术——交叉验证与网格搜索。介绍了K折交叉验证、留一交叉验证等方法,以及网格搜索的原理和步骤,展示了如何结合两者在Python中实现模型参数的优化,并强调了使用时需注意的计算成本、过拟合风险等问题。
41 6
|
16天前
|
机器学习/深度学习 算法 数据挖掘
C语言在机器学习中的应用及其重要性。C语言以其高效性、灵活性和可移植性,适合开发高性能的机器学习算法,尤其在底层算法实现、嵌入式系统和高性能计算中表现突出
本文探讨了C语言在机器学习中的应用及其重要性。C语言以其高效性、灵活性和可移植性,适合开发高性能的机器学习算法,尤其在底层算法实现、嵌入式系统和高性能计算中表现突出。文章还介绍了C语言在知名机器学习库中的作用,以及与Python等语言结合使用的案例,展望了其未来发展的挑战与机遇。
34 1
|
25天前
|
机器学习/深度学习 自然语言处理 算法
深入理解机器学习算法:从线性回归到神经网络
深入理解机器学习算法:从线性回归到神经网络

热门文章

最新文章