在数据科学领域,模型性能的提升是核心追求。当模型在现有数据上表现不尽如人意时,数据科学家们会尝试多种技术,从调整模型复杂度到数据清洗与预处理等。然而,人们常常被建议“只需要”获取更多数据。但获取更多数据远非易事,更重要的是,我们或许应该停下来,审视这种普遍的观念。
那么,添加更多数据真的总能带来更好的模型性能吗?
本文将通过真实数据和一款为此目的构建的工具,对这一说法进行深入探讨。文章旨在揭示数据收集和扩展过程中隐藏的微妙之处,挑战“数据量增加必然带来性能提升”的固有观念,并呼吁在实践中采取更审慎、更具策略性的数据运用方式。
何谓“更多数据”?
首先,需要明确“更多数据”究竟意味着什么。在最常见的场景中,我们通常将数据视为表格形式。当提及获取更多数据时,人们首先想到的往往是向数据框中增加更多行,即增加更多数据点或样本。
然而,另一种方法是增加更多列,即增加更多属性或特征。第一种方法是垂直扩展数据,而第二种方法则是水平扩展数据。
接下来,我们将探讨这两种数据扩展方法的共性和特性。

案例一:增加样本量
首先,考虑增加样本量的情况。那么,增加样本量必然会提高模型性能吗?
为了深入探究这个问题,一个工具被开发出来并托管在HuggingFace平台上。该工具允许用户在使用决策树分析UCI Irvine学生辍学与学业成功预测数据集[1]时,实验改变属性集、样本量和/或模型复杂度的效果。尽管该工具和数据集主要用于教育目的,但从中仍能得出超越基本设定的宝贵通用见解。

…


假设学校院长交给一批学生记录,并要求找出预测学生辍学的因素以解决此问题。初始提供了1500个数据点,其中700个数据点作为隐藏测试集,其余用于训练。这批数据包含学生的国籍、父母职业,以及GDP、通货膨胀率和失业率等信息。
然而,初步结果并不理想,F1分数较低。于是,自然而然地,人们会请求院长设法获取更多学生记录(例如来自往年或其他学校的数据)。在数周内,院长陆续提供了新的数据批次。每次获得新数据后,实验都会重新运行。按照传统观念,增加数据量应该会稳步改善建模过程(测试F1分数应单调递增),但实际观察到的情况并非如此。随着更多数据的加入,模型性能反而出现不规则的波动。这令人感到困惑:为什么更多数据有时会损害性能?为什么在添加某个批次数据后,F1分数从46%下降到39%?这种关系难道不应该是因果的吗?

实际上,问题在于额外样本是否必然提供了更多信息。首先,可以思考这些额外样本的性质:
- 它们可能是错误的(例如,数据采集中存在错误)
- 它们可能存在偏差(例如,过度代表了与测试集所代表的真实分布不符的特殊情况)
- 测试集本身可能存在偏差…
- 某些批次数据可能引入了虚假模式,随后又被其他批次抵消。
- 所收集的属性与目标之间可能建立很少或根本没有关联或因果关系(即存在未被考虑的潜在变量)。因此,无论增加多少样本,都无法带来实质性进展!
所以,是的,增加数据量通常是一个好主意,但必须关注数据中的不一致性(例如,两个国籍和社**地位相同的学生,可能因其他因素而走向不同的道路)。我们还必须仔细评估现有属性的有用性(例如,也许GDP与学生辍学率并无关联)。
有人可能会争辩说,当拥有大量真实数据时,这不会成为问题(毕竟,这是一个相对较小的数据集)。这种论点有其道理,但前提是数据经过良好同质化,并考虑了属性集的不同变异性和“自由度”(即每个属性可以取值的范围以及这些值在现实世界中可能出现的组合)。研究表明,即使是那些被认为是“黄金标准”的大型数据集,也可能以有趣且隐蔽的方式表现出偏差,这些偏差在第一眼看来并不容易发现,从而导致误导性的高准确率报告[2]。
案例二:增加属性(特征)
现在,谈到属性,考虑另一种情况:如果院长未能获取更多学生记录,但他走过来对数据科学家说:“嘿,我没能拿到更多学生记录……但我用SQL查询为你获取了更多属性……我相信你现在可以提升模型性能了。对吧?……对吧?!”

那么,我们来验证一下。以下面的例子为例,通过逐步增加属性,扩展学生档案,包括他们的婚姻状况、财务状况和移民身份。每次添加一个属性,都会重新训练决策树并评估其性能。正如所示,某些新增属性确实提升了性能,而另一些却实际上损害了性能。这又是为何呢?
更仔细地审视属性集,会发现并非所有属性都携带有用的信息。现实世界是复杂的……某些属性(例如,性别)可能会在训练集中引入噪声或虚假相关性,从而无法很好地泛化到测试集(导致过拟合)。
此外,尽管普遍认为在增加数据量时应该提高模型复杂度,但这种做法并非总能带来最佳结果。有时,在增加属性时,降低模型复杂度反而有助于缓解过拟合(例如,当“课程”属性被引入时)。

结论
回过头来审视全局,我们发现虽然收集更多数据是值得称赞的,但不能自动假定模型性能会因此而提升。这里涉及两种相互作用的力量:模型拟合训练数据的程度,以及这种拟合泛化并扩展到未见数据的可靠性。
下面总结了不同类型的“更多数据”如何影响这些力量——取决于新增数据的质量是好(具有代表性、一致性、信息量)还是差(有偏差、噪声大、不一致):
| 数据扩展方式 | 数据质量良好时 | 数据质量较差时 | ||
|---|---|---|---|---|
| 训练误差 | 测试误差 | 训练误差 | 测试误差 | |
| 更多样本(行) | 可能略微上升(更多变异使拟合更困难) | 通常下降。模型变得更稳定和自信。 | 可能波动,因为存在冲突的例子。 | 通常上升。 |
| 更多属性(列) | 通常下降(更多信号带来更丰富的表示) | 下降,因为属性编码了真实且可泛化的模式。 | 通常下降(模型记忆了噪声模式)。 | 上升,因为存在虚假关联。 |
泛化能力不仅仅取决于数据量,还与数据质量以及模型复杂度的恰当性息息相关。
总而言之,下次当有人建议“仅仅”通过获取更多数据来神奇地提升模型准确性时,请与他们讨论这种方案的复杂性。深入探讨所获取数据的性质、规模和质量特征,并指出数据与模型复杂度之间微妙的相互作用。这将有助于确保他们的努力是富有成效的!
值得深思的经验:
- 在可能的情况下,不要轻信他人之言。亲自实验验证!
- 增加训练数据点时,问问自己:这些样本是否代表了你正在建模的现象?它们是否向模型展示了更有趣的真实案例?或者它们是否带有偏差和/或不一致性?
- 增加属性时,问问自己:这些属性是否被假定携带有助于我们做出更好预测的信息?或者它们大部分只是噪声?
- 最终,进行超参数调优和适当的验证,以消除在评估新训练数据信息量时的疑虑。
亲自动手尝试!
如果您希望亲自探索本文中展示的动态,交互式工具可在此处访问。通过调整样本量、属性数量和/或模型深度进行实验,您将观察到这些调整对模型性能的影响。此类实践实验将丰富您对数据科学和分析背后机制的理解和视角。
参考文献:
[1] M.V.Martins, D. Tolledo, J. Machado, L. M.T. Baptista, V.Realinho. (2021) “Early prediction of student’s performance in higher education: a case study” Trends and Applications in Information Systems and Technologies, vol.1, in Advances in Intelligent Systems and Computing series. Springer. DOI: 10.1007/978-3-030-72657-7_16。该数据集遵循知识共享署名4.0国际(CC BY 4.0)许可协议。这意味着数据集可以用于任何目的的共享和改编,但需注明出处。
