如何避免机器学习陷阱:一份给研究员的指南(1) How to avoid machine learning pitfalls: a guide for academic researchers

如何避免机器学习陷阱,这篇指南,有序的梳理了利用机器学习方法解决问题过程中,值得注意的方方面面。

特此将此篇指南翻译为中文,以供每个相关者尤其是机器学习新手,快速阅读一遍,结合自身经验进行梳理,加深印象,有益无害。


如何避免机器学习陷阱:一份给研究员的指南(1)

How to avoid machine learning pitfalls: a guide for academic researchers

Michael A. Lones*

概要:这份文档主要是对使用机器学习技术过程中一些场景的错误进行简要说明,以及如何避免犯错。省略一句。主要涵盖机器学习的5个阶段:建立模型前要干啥、如何稳定的建立模型、如何可靠的评估模型、如何公平的比较不同模型、以及如何反映最终结果。

1. 介绍

这份指南旨在帮助学术研究领域新手避免使用机器学习时可能发生的错误。作者也是一名聚焦于机器学习课程的学者。目标读者是机器学习领域的学员以及其他新手研究员,并假定读者掌握了基础的相关知识。不同于针对更一般受众的指南,本文更加关注学术向的内容,比如如何严格比较和评估模型,以便论文的发表。为了提高可读性,本文以‘应做’和‘不应做’的方式进行叙述。本文不会事无巨细的罗列细节,但会提供相关文献供读者进一步阅读。本文内容并不会针对特定的学科问题,所以建议读者再结合自身学科的相关指导开展工作,例如医学领域可以【看这里和这里】。欢迎任何反馈,希望本指南能与时俱进。引用本文时,请注明arXiv版本号。

注:∗School of Mathematical and Computer Sciences, Heriot-Watt University, Edinburgh, Scotland, UK, Email: mailto:[email protected], Web:http://www.macs.hw.ac.uk/∼ml355

2. 建模之前

希望能立刻开始训练评估模型是人之常情,但更重要的是花些时间思考项目的目标、充分了解用于研究工作的数据、思考所有需要明确的数据限制、并且知道该问题领域其他研究都做了什么。如果没有先做好这些工作,可能你费尽力气做出的东西并不符合大家的期望。

2.1 了解你的数据

如果你的数据来源可靠,采集方法正确,质量很高那后续工作会很轻松。例如,你是用的数据是从互联网上获取的。那有论文对数据集进行描述么?有的话,请仔细阅读该论文,确保论文是在正规期刊或网站发表的,确认作者是否有提及任何数据的局限。不要认为经常被引用的数据集就一定是高质量的,也许只是因为数据集易于使用,有些广泛使用数据也存在明显的问题【此处有相关讨论】。如果你使用很差的数据训练模型,那么大概率你的模型也很差,毕竟输入垃圾输出往往也是垃圾。所以最好一开始就确认你的数据情况。做一些探索性的数据分析【这里有些建议】。找到不一致或丢失的记录。训练模型前做这些工作比你训练完再向大家解释为啥使用很垃圾的数据要容易得多。

2.2 不要看光你的数据

当你观察数据时,你很可能发现一些规律模式,并引导你的建模过程。但重要的是,你不应对你的模型做出不可测的假设。对数据做出一些假设是合理的,但这些假设应该仅存在与训练阶段,而不是测试阶段。所以在探索性分析阶段,不应过分仔细的观察你的测试数据。不然,你会有意无意的给你的模型引入一些假设,而且还不可测。这是我会反复强调的问题,从测试集泄露信息给训练阶段,是模型泛化效果不好的常见原因。

(译者:可能是说你观察数据后会认为发现一些‘规律’,自觉或不自觉的在建模过程中套用这些‘规律’,如果这些‘规律’是你把所有数据都看完了得出的,那就没有新数据来测试你的‘规律’是不是真的是普遍的规律,就不可测了)

2.3 确认你的数据足够

如果你的数据不够,很难训练出一个泛化好的模型。判断数据是否足够往往也是个棘手的问题:通常取决于你数据集的‘信噪比’。如果‘信号’很强,你可用较少数据进行训练,如果‘信号’很弱,那你需要更多的数据。如果你没有足够的数据(很多领域都这样),对已有数据采用交叉验证方法是个不错的选择。同样,你可用使用数据增强技术【看这里和这里】,这对于小数据增强是很有用的。数据扩张也是有用的方法,当你数据集中部分数据较少时;例如分类问题中,某一类别数据较少,也称类别不平衡【看这里】。当你只有有限的数据时,你也必须限制你机器学习方法的复杂程度,因为模型具有很多的参数时,如深度神经网络,会非常容易过拟合数据集。尽早发现这些问题,并作出缓解措施。

2.4 与领域专家交流

领域专家是可贵的。他们能够帮助你了解解决哪些问题是有益的,也能帮你选择最合适的特征集合以及机器学习的模型,并帮你向最合适的读者发表你的工作。不听取专家意见可能对导致你的工作没有解决实质性的问题,或者解决问题的方式是不恰当的。比如,使用了不透明的机器学习模型取解决一个需要明确知道输出决策过程的问题,就像医学诊断和金融决策【看这里】。在项目初始,专家能帮你理解数据,指出可能有预测作用的特征。在项目末期,专家能帮你把工作发表在特定领域期刊,送达至最有可能从你工作中收益的读者手中。

2.5 文献调研

你不是第一个将机器学习方法使用在特定问题上的人,所以去了解已有的工作是非常重要的。有其他人研究过类似的问题是件好事;学术研究是个迭代的过程,任何研究都为下一个研究提供了信息。已经有其他人探索过你的伟大想法是令人沮丧的,但他们仍留下来大量值得研究的空间,而且驱动他们研究的原因也能驱动你。忽视前人工作会潜在的失去大量有用的信息。例如,他们已经试过你所想的方法,而且发现了不能起效的根本原因(你就不用再试一遍了),或者他们部分的解决了问题,你能在他们的基础上再进一步。所以,开始工作前进行文献调研是非常必要的。不然你可能就要在写论文时解释为什么重复前人的工作。

2.6 考虑模型的部署

为什么你想建立一个机器学习的模型?这是个重要问题,答案会影响你如何部署它。许多学术研究只是学术研究,并不会在实际问题中使用这个模型。这是合理的,因为构建和分析模型本身就能够给解决问题提供很多信息与见解。但同时也有许多学术研究的目标是在实际中用上建立的模型。例如,需要部署在资源有限的场景中,如机器人或者传感器里,模型的复杂度就应该被控制。有时耗时被限制,例如信号分类需要在几毫秒内完成,就需要考虑选择合适的模型。另一个需要考虑的是模型绑定至更广泛的系统。这不是个简单的工作【看这里】。然而,像ML Ops这些方法解决了一些困难【看这里】。


下文:如何避免机器学习陷阱:一份给研究员的指南(2)

你可能感兴趣的:(如何避免机器学习陷阱:一份给研究员的指南(1) How to avoid machine learning pitfalls: a guide for academic researchers)