内容一览:假如你刚触摸机器学习不久,而且未来希望在该范畴打开学术研讨,那么这份为你量身打造的「避坑攻略」可千万不要错过了。

关键词:机器学习 科研规范 学术研讨

机器学习学术小白,怎么优雅避坑坑、让自己的论文顺畅宣布?

来自苏格兰赫瑞瓦特大学数学与计算机科学学院的 Michael A. Lones 副教授,曾在 2021 年专门宣布了一篇论文–**「How to avoid machine learning pitfalls: a guide for academic researchers」,**对此进行了具体论说。

阅读完整论文 (V2):

学术科研无从下手?27 条机器学习避坑指南,让你的论文发表少走弯路

Michael A. Lones 首要研讨方向包括优化、机器学习 数据科学、杂乱体系和非标准计算 以及在生物学、医学、机器人和安全问题中的运用

在这篇论文中,作者从学术研讨的视角出发,结合自己的科研阅历及教学经历,收录了在运用机器学习技能的完整链路中,频繁呈现、需求特别重视的 5 大问题,并提出了相应的处理办法。

适用人群:

对 ML 范畴比较陌生,只具备基础 ML 常识的同学或学者

温馨提示:本文聚焦学术界遍及重视的问题,如:怎么严格评价和比较模型,使得论文能顺畅宣布

接下来,咱们将遵循 ML 模型练习的完整流程,分阶段打开叙述。

阶段 1:创立模型前

许多同学一上来就急着练习和评价模型,往往忽略了更重要的「做功课」,这些「功课」包括:

  • 项目的方针是什么
  • 完成这一方针,需求怎样的数据
  • 数据会不会有局限性,假如有怎么处理
  • 这一范畴的研发进展怎么,已经做了什么

这些前置作业没有做好,光着急跑模型,那么终究很或许呈现模型无法证明预期定论、科研作业无法宣布等尴尬局面。

1.1 了解并剖析数据

数据来历牢靠、搜集办法科学且数据质量高,会对论文宣布大有裨益。这里需求留意,**被广泛运用的数据集不一定都质量好,也有或许是由于它简略获取。**选取数据前先进行一些探索性的数据剖析,扫除数据的局限性。

1.2 不要检查悉数数据,开端前就把测验数据区分出来

测验集的信息泄漏到练习进程,是机器学习模型不能泛化的一个常见原因。 为此,数据探索性剖析阶段,不要过于详尽地检查测验数据,避免有意或无意地做出无法测验的假设,约束模型的通用性。

温馨提示:做出假设是能够的,但是这些假设应该只被纳入模型的练习 (training) 中,而非测验 (testing) 中。

1.3 预备充足的数据

数据不行或许降低模型的概括性和通用性,这取决于数据集的信噪比 (Signal-to-Noise Ratio, SNR)。在机器学习研讨范畴中,一个常见的问题是数据量不行,这时能够经过穿插验证、数据增强等技能,前进现有数据的可用性

1.4 积极向该范畴专家请教

范畴专家具备丰厚的科研经历,能够协助咱们明确需求处理的问题、最合适的特搜集和机器学习模型,以及辅导咱们研讨效果的发布, 起到事半功倍的作用。

1.5 做好文献调研

学术前进是一个迭代的进程,每一项研讨都供给了能够辅导下一项研讨的信息。 **忽视以前的研讨,很或许会让自己错过有价值的信息。**与其写论文的时分,才绞尽脑汁地解说为什么研讨同样的课题、为什么不在现有的效果上开端研讨,不如在开端作业前就做一个文献综述。

1.6 提前考虑模型的布置问题

假如学术研讨的终究方针,是创立一个能够在实际国际中布置的机器学习模型,则需求尽早考虑布置问题, 如环境约束对模型杂乱度的影响、是否有时间约束、怎么与软件体系结合等等。

阶段 2:牢靠地创立模型

以一种有组织的办法创立模型十分重要,这使咱们能够正确地运用数据,并充分考虑模型的挑选。

2.1 测验数据不能参加到模型练习进程中

一但测验数据参加到了模型的装备、练习或挑选中,会极大影响数据的牢靠性和通用性,这也是已发布的机器学习模型经常不能通用于实际国际数据的一个常见原因。

❎ 错误示例(留意躲避):

  • 数据预备期间,用整个数据集变量的均值和范围信息进行 variable scaling(正确做法是只在练习数据中进行)

  • 在切割数据之前进行特征挑选

  • 运用相同的测验数据评价多个模型的通用性

  • 在切割测验数据之前运用数据增强

为了避免以上问题呈现,最好的办法便是在项目开端前,就划分出一个数据子集, 而且在项目结束时只运用这个独立的测验集来测验单一模型的通用性。

温馨提示:时间序列数据的处理要特别当心,由于数据的随机拆分很简略造成泄漏和过拟合。

2.2 测验多个不同模型

国际上不存在放之四海皆通用的机器学习模型,咱们的研讨作业便是要找到适用于特定问题的机器学习模型。Python、R、Julia 等现代机器学习库, 只需对代码进行少量修改,就能够测验多种模型,找到最有效的模型。

温馨提示:

  • 不要运用不合适的模型,运用验证集而非测验集来评价模型
  • 比较模型时,要优化模型的超参数,并进行屡次评价,并在发布效果时纠正多重比较。

2.3 不要运用不合适的模型

现代机器学习库降低了机器学习的实施门槛,同时也使得咱们很简略选用不合适的模型,如将适用于 categorical feature 的模型运用于包括 numerical feature 的数据集,或者在该运用回归模型的时分运用分类模型。在挑选模型时,应尽或许选用适合用例的模型。

2.4 深度学习有些时分并不是最优解

尽管深度神经网络 (DNN) 在某些使命上表现出色,但并不意味着 DNN 适用于一切问题, 尤其是当数据有限、 underlying pattern 相当简略,或模型需求可解说的时分,DNN 的表现或许并不如某些 old fashioned 机器学习模型,如随机森林、SVM。

2.5 优化模型的超参数

超参数对模型的功能影响巨大,且通常需求与特定数据集相匹配。无目的地进行测验,或许并不是找到合适超参数的最佳办法。引荐运用超参数优化战略,如 random search 和 grid search。

温馨提示:关于超参数数量巨大或练习本钱较高的模型而言,这些战略并不适用,能够凭借 AutoML、数据发掘 pipeline 等技能来优化模型的挑选及其超参数。

2.6 优化超参数及挑选 feature 时需求额定仔细

超参数优化和特征挑选是模型练习的一部分,不要在模型练习开端前,对整个数据集进行特征挑选,这会使得信息从测验集泄露到练习进程中。优化模型的超参数或特征,最好运用与练习模型完全相同的数据,一种常见的技能是嵌套穿插验证(也称双重穿插验证。

阶段 3:稳健地评价模型

不合理的模型评价十分遍及,这会阻止学术研讨的进展。因而,需求慎重考虑怎么在试验中运用数据、衡量模型的真实功能并进行陈述。

3.1 运用恰当的测验集

运用测验集来衡量机器学习模型的通用性,并确保测验集的数据是合适的。 测验集不应与练习集堆叠,且需求涵盖更广泛的条件,如一个物体的拍摄数据集,假如练习集和测验集都是在晴天的室外搜集的,测验集就不是独立的,由于没有捕捉到更广泛的气候条件。

3.2 切割数据前不要进行数据增强

数据增强有利于平衡数据集和前进机器学习模型的通用性和稳健性,需求留意的是数据增强应该只运用于练习集,不触及测验集,以防呈现过拟合。

3.3 运用验证集

运用一个独自的验证集来衡量模型功能,这包括一组不直接用于练习,而是用于辅导练习的样本。验证集的另一个好处是能够进行 early stopping。

3.4 对模型进行屡次评价

模型的单一评价并不牢靠,或许轻视或高估了模型的真实功能, 为此,需求对模型进行屡次评价,大多触及到运用不同的练习数据子集对模型进行屡次练习。穿插验证 (Cross-Validation) 是一种特别流行且品种众多的办法,如 Ten-fold Cross-Validation。

温馨提示:陈述屡次评价的均值和标准差的同时,建议保存单个分数记载,以备后续运用计算查验 (statistical tests) 对模型进行比较。

3.5 保存一些数据来评价终究的模型实例

对模型实例的通用性进行牢靠评价的最佳办法,或许便是运用另一个测验集。 所以,假如数据量足够大,最好先保存一些,并用其对终究选定的模型实例进行无偏差 (unbisded) 的评价。

3.6 不要对非平衡数据集运用准确率

慎重挑选评价机器学习模型的目标,例如,分类模型最常用的目标是准确率 (accuracy),假如是平衡数据集(每个类别在数据集中都有相似数量的样本代表)作用就会很好;假如对错平衡数据集,准确率则或许是一个十分具有误导性的目标。

在这种状况下,最好运用 F1 score、科恩卡帕系数 () 或马修斯相关系数 (MCC) 等对 class size imbalance 不敏感的目标。

阶段 4:公平地比较模型

对模型进行比较是学术研讨的基础,但假如以不公平的办法进行比较,而且宣布,就会带偏其他研讨人员。所以,需求确保在同一条件下评价不同模型,并正确运用计算查验 (statistical tests)。

4.1 关于模型而言,并不是数字越高功能越好

论文中常呈现这种表述「此前研讨中的准确率是 94%,本文模型准确率高达 95%,因而更好」。各种原因表明,更高的数字不等同于更好的模型, 假如模型是在同一个数据集的不同分区上练习或评价的,或许功能差异教小;假如是用了完全不同的数据集则或许功能差异巨大。没有进行相同数量的超参数优化也会影响模型功能差异。

因而,要想对两个模型科学地进行功能比较,应该将模型优化到相同程度,并进行屡次评价,然后用计算测验的办法确认功能差异是否显著。

4.2 用计算查验比较模型

引荐用计算查验 (statistical tests) 比较两个模型的功能差异。广义上讲,比较机器学习模型的 test 分为两类:第一类用于比较同类模型实例, 如比较两个练习好的决策树时,能够选用 McNemar 查验;第二类适用于更通用的模型比较, 如比较决策树和神经网络哪个更适合时,选用曼-惠特尼 U 查验。

4.3 对多重比较进行校对

用计算查验比较两个以上模型有些杂乱,multiple pairwise test 相似屡次运用测验集,这或许导致对显著性 (significance) 过于达观 (overly-optimistic) 的解说。

引荐运用多重查验 (multiple test) 校对来处理这个问题,如邦费罗尼校对 (Bonferroni correction)。

4.4 不要过于信任社区基准的效果

关于某些范畴的问题,许多人会选用基准数据集来评价新机器学习模型的功能,由于我们都是运用相同的数据来练习和测验模型,那么比较起来就会愈加直观。这种办法有一些首要缺点。

首要,假如测验集的访问不受限,则不能确保别人没有把它作为练习进程的一部分,这会导致关于效果的过度达观。此外,即便每个运用数据的人只运用了一次测验集,但总体而言,测验集被社区运用了许屡次,这也会导致模型过拟合的产生。为此,应该慎重地解读基准数据集的效果,对功能的前进进行合理研判。

阶段 5:陈述效果

学术研讨需求对常识有贡献,这要求陈述研讨作业的全体状况,包括哪些作业成功、哪些失败。 机器学习通常和 trade-offs 相关,一个模型在一切方面都比另一个模型好是很少见的。所以在陈述效果时需求体现这一点。

5.1 陈述需求透明

把一切研讨作业都透明地共享出来, 这利于其别人重复这项试验,也便利人们比较模型。明晰地记载试验及写出整齐的代码,对自己和别人都有好处。机器学习社区越来越注重试验的可复现,作业流程记载不充分,或许会影响后续宣布。

5.2 多种办法陈述功能

在评价模型功能时,一个更严谨的办法是运用多个数据集, 这能协助克服与单个数据集相关的任何缺点,并给出模型功能的全面描述。为每个数据集陈述多个目标是很好的做法,由于不同目标能呈现不同的效果,添加作业的透明度。

5.3 只针对数据进行归纳

不要提出无效定论,这会把其他研讨人员带入歧途。一个常见的错误是,宣布练习和评价模型的数据不支持的概括定论。模型在一个数据集上表现很好,不意味着在其他数据集上也做得好。尽管能够经过运用多个数据集取得牢靠的 insights,但从试验中研讨和推断出的东西总是有限的。不要夸张发现,意识到局限性。

5.4 慎重陈述显著性差异

上文讨论的计算查验,能够协助查验模型间的差异。但计算查验并不完美,或许会轻视或高估模型的显著性,呈现假阳或假阴的问题。此外越来越多的计算学家建议放弃运用置信度阈值 (confidence threshold)、直接陈述 p 值来测定模型显著性。

除了计算显著性,另一个要考虑的问题,是两个模型间的差异是否真的重要。由于只要样本足够,总是能找到显著的差异,哪怕实际功能差异微乎其微。所以在判别重要性时,能够衡量效应值 (effect size),办法包括 Cohen’s d statistic(更遍及)、Kolmogorov Smirnov(作用更好,引荐)等。

5.5 重视模型运转原理

练习过的模型包括众多有效信息,但许多作者只陈述模型的功能目标,对模型原理不作解说。 研讨的目的不是取得比别人稍高的准确率,而是总结常识并共享给研讨社区,进而添加作业效果宣布的或许性,如,关于决策树一类的简略模型,供给模型可视化;关于深度神经网络一类的杂乱模型,考虑运用 XAI(可解说人工智能)技能提取相关信息。

以上便是「避坑攻略」的完整内容,等待每位刚触摸机器学习的同学,都能收好这份宝典、常读常新,顺畅找到研讨方向、选好课题,并提前顺畅宣布论文!

等待各位的好消息~

原文链接 参考链接:[How to avoid machine learning pitfalls: a guide for academic researchers] arxiv.org/pdf/2108.02…

—— 完 ——