将数据分成测试集和训练集纯粹是一种“统计”吗?

机器算法验证 回归 机器学习 交叉验证 数据集 实验设计
2022-03-01 21:30:50

我是一名学习机器学习/数据科学的物理专业学生,所以我并不是说这个问题会引发任何冲突:) 但是,任何物理本科课程的很大一部分都是做实验室/实验,这意味着大量数据处理和统计分析。但是,我注意到物理学家处理数据的方式与我的数据科学/统计学习书籍处理数据的方式之间存在巨大差异。

主要区别在于,当尝试对从物理实验获得的数据进行回归时,回归算法适用于整个数据集,绝对没有分成训练集和测试集。在物理世界中,R^2 或某种类型的伪 R^2 是基于整个数据集为模型计算的。在统计世界中,数据几乎总是被分成 80-20、70-30 等……然后根据测试数据集评估模型。

还有一些主要的物理实验(ATLAS、BICEP2 等)从不进行这种数据拆分,所以我想知道为什么物理学家/实验家进行统计的方式与数据科学家的方式之间存在如此巨大的差异做统计。

2个回答

并非所有统计程序都拆分为训练/测试数据,也称为“交叉验证”(尽管整个程序涉及的内容不止于此)。

相反,这是一种专门用于估计样本外误差的技术;即,您的模型使用新数据集预测新结果的效果如何?例如,当您拥有相对于数据集中样本数量的大量预测变量时,这将成为一个非常重要的问题。在这种情况下,很容易构建一个样本内误差很大但样本外误差很严重(称为“过度拟合”)的模型。在您同时拥有大量预测变量和大量样本的情况下,交叉验证是帮助评估模型在预测新数据时表现如何的必要工具。在竞争预测模型之间进行选择时,它也是一个重要工具。

另一方面,交叉验证几乎总是只在尝试构建预测模型时使用。一般来说,当您尝试估计某些治疗的效果时,它对模型的帮助不是很大。例如,如果您要比较材料 A 和 B 之间的拉伸强度分布(“处理”是材料类型),则不需要交叉验证;虽然我们确实希望我们对治疗效果的估计能在样本外推广,但对于大多数问题,经典统计理论可以比交叉验证更准确地回答这个问题(即估计的“标准误差”)。不幸的是,经典的统计方法1在过度拟合的情况下,标准错误不成立。在这种情况下,交叉验证通常会做得更好。

另一方面,如果您试图根据 10,000 个测量变量来预测材料何时会破裂,这些测量变量是基于 100,000 个观察值投入到某个机器学习模型中的,那么在没有交叉验证的情况下构建一个出色的模型会遇到很多麻烦!

我猜在完成的很多物理实验中,您通常对效果估计感兴趣。在这些情况下,几乎不需要交叉验证。

1有人可能会争辩说,具有信息先验的贝叶斯方法是一种解决过拟合问题的经典统计方法。但这是另一个讨论。

旁注:虽然交叉验证首先出现在统计学文献中,并且肯定被自称为统计学家的人使用,但它已成为机器学习社区中必不可少的基本工具。许多统计模型在不使用交叉验证的情况下也能很好地工作,但是几乎所有被认为是“机器学习预测模型”的模型都需要交叉验证,因为它们通常需要选择调整参数,而这几乎是不可能做到的-验证。

作为(分析)化学家,我遇到了两种方法:品质因数的分析计算[主要用于单变量回归]以及预测品质因数的直接测量。
对我来说,训练/测试拆分是衡量预测质量的验证实验的“小弟”。


长答案:

我们在本科物理化学中进行的典型实验使用单变量回归。感兴趣的属性通常是模型参数,例如测量反应动力学时的时间常数,但有时也包括预测(例如预测/测量某些感兴趣值的单变量线性校准)。
这些情况在不过度拟合方面是非常良性的:在估计所有参数后通常会留下一个舒适的自由度,并且它们用于训练(如在教育中)具有经典置信度或预测区间计算以及经典误差的学生传播——它们是为这些情况而开发的。即使情况并不完全像教科书一样(例如,我的数据中有结构,例如在动力学中,我希望通过反应运行之间的差异+运行中测量之间的差异而不是通过普通的仅单一方差方法),我通常可以进行足够多的实验运行以仍然获得有用的结果。

然而,在我的职业生涯中,我处理的是光谱数据集(通常是 100 到 1000 个变量)p) 以及相当有限的独立案例集(样本)n. 经常n<p,所以我们使用正则化,这并不总是容易说出我们使用了多少自由度,此外,我们尝试至少在一定程度上补偿小的n通过使用(大量)几乎重复的测量——这给我们留下了一个未知的有效n. 不知道n或者df,经典方法不起作用。但由于我主要进行预测,所以我总是有一个非常直接的可能性来衡量我的模型的预测能力:我进行预测,并将它们与参考值进行比较。

这种方法实际上非常强大(尽管由于增加了实验工作量而代价高昂),因为它使我还可以针对训练/校准数据中未涵盖的条件探索预测质量。例如,我可以通过外推来衡量预测质量如何恶化(外推还包括例如在获取训练数据一个月后进行的测量),我可以针对我认为重要的混杂因素等来探究坚固性等。换句话说,我们可以像研究任何其他系统的行为一样研究模型的行为:我们探测某些点,或者对其进行扰动并查看系统答案的变化等。

我想说的是,预测质量越重要(并且过度拟合的风险越高),我们越倾向于直接测量预测质量而不是分析得出的数字。(当然,我们也可以将所有这些混杂因素纳入训练实验的设计中)。医学诊断等某些领域要求在模型“放开”真实患者之前进行适当的验证研究。

训练/测试拆分(无论是坚持*或交叉验证还是自举或......)使这一步更容易。我们保存了额外的实验并且不进行外推(我们只推广到预测训练数据的相同分布的未知独立案例)。我将此描述为验证而不是验证(尽管验证在此处的术语中很深)。如果对品质因数的精度没有太高的要求(在概念验证场景中可能不需要非常精确地知道它们),这通常是一种务实的方式。

*不要将单个随机拆分为训练和测试与正确设计的研究来衡量预测质量相混淆。