本文由薛雨阳翻译编辑自 Machine Learning for Materials Scientists: An Introductory Guide Towards Best Practices. 希望给材料、化学、生物及相关专业入门机器学习的同学有所帮助。
本文适用于对以机器学习为中心研究的跨专业学者(生物,化学,材料科学专业等)的研究者。这篇文章主要以材料科学为例,涵盖了有关数据,特征工程,模型训练,验证,评估和对比,一些热门的材料评估指标和数据集,模型和架构分享,以及发布的内容。结果,这里还包括了相互Jupyter Notebook和一些示例Python程序来演示一些概念,工作流程和最佳方法实践。 总体而言,此处以一种简单的形式形式的数据驱动的方法和机器学习工作流程以及注意事项。研究人员的读者可以根据本文的建议阅读参考资料,尝试最佳实践,并运用到自己领域上的相关专业知识。
材料科学研究者们正不断地努力提高自己的理解能力,预测和提升材料的性质。由于传统的试错方法成本很高(通常以多番重复材料合成和表征),因此材料科学家越来越依赖于模拟和建模方法来预先了解和预测材料特性。材料信息学(MI)正是材料科学的一门分支,它利用高通量计算来分析大型材料属性数据库独特的见解。材料信息学中采用采用了数据驱动的方法,例如机器学习(ML),以研究材料科学中大量存在的试验和计算数据,从而导致材料科学的研究范式发生根本性的转变。
图1:材料科学中机器学习研究的示意图
但是,在材料科学中实施机器学习技术时,也存在着许多挑战和陷阱。而且如此,许多实验材料科学家缺乏如果和开始数据驱动研究的知识,并且缺乏推荐的最佳实践方法。因此,这篇文章只在帮助那些希望进行数据驱动的材料研究的材料科学学者。我们将逐步演示传统的机器学习项目(如图一所示),从简单的加载和处理数据,分离数据,特征工程,你和不同的机器学习模型,评估模型性能,比较各个模型的性能以及将结果可视化。我们包含模型和体系结构的共享和发布,以统一介绍研究报告并促进这一新兴领域的合作为目标。在整个过程中,我们重点介绍了在材料科学的典型机器学习研究过程中遇到的一些挑战和常见错误,以及克服和解决这些挑战的方法。和文章的质量,并且确保实验结果的可重复性。
为了演示本文中的讨论的最佳实践,我们创建了一些交互式的Jupyter笔记本电脑,其中以教程的形式组织了相关的的Python代码(表1)这些相互间的笔记本将引导读者完成材料科学中的基本机器学习研究:固体无机化合物热容量的预测。我们通过几个经典的Python软件包scikit-learn
和Pytorch
这些交互式Jupyter Notebooks可以通过作者的GitHub在线存储库来访问。关于配置环境,使用方法,更多说明和相关信息都可以在此处找到。请注意,阅读本文需要具备中级的Python编程语言和一般编程知识。
编号 | 课程内容 |
---|---|
1个 | 加载数据;数据的检验,处理及清洗 |
2 | 将数据分割为训练集,验证集以及测试集 |
3 | 数据特征化;从经典模型建模,评估模型,不同数据集分割方法的效果 |
4 | 神经网络建模,评估模型,到处模型,避免过拟合 |
5 | 结果可视化 |
表1:Jupyter笔记本教程及相关主题
机器学习是一种强大的工具,但并非每个材料科学问题都可以用其解决。划定何时使用机器学习,何时使用其他方法可能会更加合适,这一点是很重要的。你需要考虑机器学习可以为您的项目增加什么价值,以及是否有更适当的合适的方法。当无法进行人类学习的时候(例如,数据和数据中的相互作用对于人类的理解和概念化而言过于复杂和难以处理),机器学习可能最有用。相反,机器学习通常无法从少量数据中找到找到的关系和表示形式,而人类学习反而会比较成功。 在开发机器学习工具和工作流程时,请先考虑他们如何(以及以其他轻松程度)能被自己使用,还可以被相关研究领域人员使用。如果其他研究人员想要使用您的方法,他们可以上手吗,对他们来说值得吗?例如,如果您将这样密度泛函(DFT)从头算起的数据或晶体结构作为您的机器学习模型的输入特征之一,那么其他研究人员自己使用DFT或其他模拟方法会不会更简单,而不是您的机器学习模型呢? 使用机器学习作为工具是要考虑的另一个限制是模型的可解释性与预测能力的权衡。如果您正在寻找对材料的物理或化学解释,那么在使用功能强大且复杂的模型时(例如神经网络),您不太可能找到它们:这些模型虽然可以展现出很高的模型性能,但它们通常过于复杂而难以理解。这些就是所谓的黑盒模型,因为在他们的输入和输出之外,人们相反,较简单的模型可能更容易理解,但往往缺乏较复杂模型的预测能力。 通常,一个好的ML项目应执行以下一项或多项操作:从给定应用或特性的已知化合物库中筛选附加材料,获取和处理数据同步新见解,概念化新的建模方法,或者探索特定材料应用中的机器学习。以上几点,请在判断机器上学习在项目中的适用性时考虑。
机器学习已经吸收了许多无机材料特性的研究,例如机械,电子,热力学和传输特性。它也已经深入了许多不同材料的应用领域,例如光伏材料,储能材料,催化剂,光催化剂,热电材料,高温在表2中,我们重点介绍了无机材料性能以及应用领域的文献中的一些当前实例。这里我们不试图去总结这些研究的方法或者结果;我们建议有兴趣的读者参考所引用的著作以及其他文献中写的很好的评论。
材料特性 | 参考文献 |
---|---|
机械性能 | 1,6,9,25–30 |
形成能量 | 7,9,29,31–34 |
带隙 | 6,9,29,35–39 |
状态密度 | 40,41 |
晶体结构/稳定性 | 32,42–52 |
德拜温度/热容量 | 6,53,54 |
热膨胀系数 | 6,53 |
谐振系数 | 6,53,55–57 |
塞贝克系数 | 56,58 |
材料类别 | 参考文献 |
光伏材料 | 34,59,60 |
能源储备 | 61–65 |
催化剂/光催化剂 | 2,66–71 |
热电材料 | 4,13,56,72,73 |
高温超导体 | 74,74–80 |
高熵合金 | 81,82 |
金属玻璃合金/玻璃形成能力 | 34,83,84 |
表2:无机材料研究中使用机器学习的示例
表3中展示了一些常用的材料属性数据库。
表3:材料数据库的主要属性信息的比较
其他主要存储晶体结构信息的数据库如下表4所示。这些存储库不一定包含材料属性信息,但这些。库存储所有游戏中的结构信息也。很有价值。
表4:材料数据库的主要结构信息的比较
与材料信息学相关的资源和数据库在不断增加因此,上面提到的仅是一些最常用的数据库。每个数据及都是不同的,并且可能包含特定于领域的信息和功能,这些信息和功能仅限于某些研究领域或应用。在和谐数据库中,通过试验或计算得出,整理和记录数据的方法也可能存在差异。因此,不同数据库中的材料属性值可能无法直接比较。当您比较数据库中的属性数据时,尤其是当您计划汇总或合并来自不同来源的数据时,请注意这一点。
确保数据集足够大,并且包含要研究的材料空间中材料成分组合的大多数例子。考虑到数据集中的数据平衡和偏差也很重要。您的数据是否基于化学方程式,测试条件,结构类型或其他条件形成的聚类?有些簇的样本数量是过多还是不足?机器学习中使用许多统计模型本质上都是重复出现的,并且会收到数据及不平衡或偏差的影响。数据可视化技术,例如基于t-分布随机领域嵌入(t-SNE)和统一流形逼近与投影(UMAP),或者简单的元素相关度映射都可以使用调查数据集不平衡和偏差。 然而,您的数据集太大(这可能是在材料科学领域罕见的奢侈财富),您可能会发现自己的biubiu等待很容易才能在项目的原型设计阶段进行训练和验证模型。在这种情况下,您可以将数据集的子样本作为小规模的“玩具数据集”,然后使用它来进行测试和调整模型。在玩具数据集上对模型进行了满意的调整后,在对原始数据及进行采样以创建玩具数据集时,请注意,在采样过程中不能发布任何数据集偏差。另外,通过对数据集进行二次采样并不能解决所有与性能有关的问题。如果您的模型只能在玩具数据集上成功训练,而不能再整个数据集上训练(例如,由于内存或时间限制),则您可能需要专注于提高模型性能。
确保将原始数据集的存档副本保存,并可以随时随时被检索。如果您对数据集进行任何更改,请详细地记录下来更改的步骤,确保将来能够在数据集上重现他们。为了简化手工版本控制,可以考虑为您的数据集使用版本控制系统软件(例如Git,Mercurial或Subversion)。
整理好数据后,请以更高级别的精度来检查和探索数据,以查看是否存在任何明显的缺陷和问题。这可能(经常)包括缺失或者不符合实际的值,例如NaN或者不符合常理的负值,离群值或无限值,格式错误或损坏的值(例如错误的文本编码,数据库的更改引起的不匹配格式等等)。如果发现任何异常情况,请以适当的方式处理,并注意不要确保记录所有执行的数据清洗和处理步骤,这是能够确保重现的重要一步,而重现往往是机器学习研究中经常忽略的一步。阶段,您可能会发现一些其他有问题的数据样本,这些样本会不利地印象模型的性能。在这种状况下,请考虑在完成模型之前再一次执行数据清洗。
分割方法应以一种可重现的方式来执行(例如指定随机数种子);或者,您可以将分割的数据例如,如果您在训练数据集中的不同测量条件下(例如温度或压力),请确保其没有出现在测试数据中。)对化学化合物进行多次测量,如果要求模型预测相同化合物在不同状态下的表现,则在测试阶段,结果将会是良好的。但是,这个模型可能在以前从未见过的特定化合物情况下表现不佳。为了对泛化性能进行真正严格的评估,请注意在分割数据集时避免发生数据相对的情况。
在训练阶段,我们只能讲训练数据暴露给模型,作为学习过程的一部分。验证集合可用于评估和调整不同的模型超参数,并与不同模型/超参数组合的预测进行比较以评估模型的性能。在之下,测试数据集只能在模型最终确定后利用评估模型性能的最后一步。不得在测试数据集上对模型进行训练或调整。对所有建模和模型比较,基准测试步骤使用相同的训练集,验证集和测试集。
训练数据及可以进一步划分以用于交叉验证(交叉验证)。交叉验证是一种用于估计模型对未见过数据性能真实能力的方法,并捕获特定于模型的问题(例如过拟合或选择偏差)的方法。一种对于数据子集k = 1, 2, ...
,我们在其他k-1
个数据集上进行训练,并使用第一个k
数据集进行验证。我们通常将产生的K
个预测误差取值,以与对配对训练,验证,测试划分中的模型性能进行评估指标,可以更准确地估计模型的真实预测性能。一般来说文献中K
的取值是5或10。再输入数据集较小的情况下,k
折交叉验证或其他交叉验证方法也可以采用更鲁棒模型的数据重采样技术,来避免验证集上的过拟合(如线性回归模型)。
原文链接
https://chemrxiv.org/articles/preprint/Machine_Learning_for_Materials_Scientists_An_Introductory_Guide_Towards_Best_Practices/12249752/1