外观
你的模型是否数据不足(data deficient)?
Is Your Model Data Deficient?

在模型(model)开发过程中,许多人会遇到这样的情况:无论怎么努力,模型性能都几乎没有提升:
- 特征工程(feature engineering)只能带来边际提升。
- 尝试不同的模型也没有产生令人满意的结果。
- 以及更多……
这通常(并非总是)意味着模型处于数据不足(data deficient)的状态。
换句话说,我们没有足够的数据集(dataset)可供使用。

然而,收集新数据可能是一个耗时且繁琐的过程。因此,在朝这个方向努力之前,最好先了解新数据是否真的有帮助。下面这个技巧,我经常用来判断这一点。
假设这是你完整的训练(training)集和验证集:

将训练数据集(dataset)平均分成 “k” 份。验证集保持不变。

“k” 不需要非常大。根据你拥有的数据量,取 7 到 12 之间的任意值都可以。如果数据充足,建议在该范围内取较小的值(稍后你就会明白原因)。
接下来,在上述子集上依次累加地训练(training)模型,并在验证集上衡量它们的性能:

- 在第一个子集上训练一个模型,并在验证集上评估。
- 在前两个子集上训练一个模型,并在验证集上评估。
- 在前三个子集上训练一个模型,并在验证集上评估。
- 以此类推……
绘制这些模型的验证性能(按训练数据量递增的顺序),通常会出现两类曲线:

- 曲线 A 表示,增加更多数据可能会提升模型性能。
- 曲线 B 表示,模型性能已经饱和。增加更多数据很可能不会带来任何显著的提升。现在,你可能也理解了我前面提到的那句话:“如果数据充足,建议在该范围内取较小的值。”
- 由于我们需要训练多个模型,“k” 取较大的值意味着更多的子集,进而意味着更多的模型。通过这种方式,你可以判断模型是否数据不足,以及收集数据是否有帮助。