从开发环境到生产

数据挖掘 机器学习 预测建模 模型选择 软件开发
2021-10-05 04:40:30

作为我在一家公司参与硕士学位的一部分,我一直在从事一个项目。在过去的几个月里,我开发了一个预测模型,它本质上是一个文档分类模型。研究和模型的最大限制是缺乏可用于训练的数据。我有一个包含 300 个文档的小型数据集,其中特征超过 15000 个术语(在特征选择之前)。

  1. 我们如何识别或估计获得一定程度的信心所需的数据点(文档)的数量,从而使我们能够在测试阶段进入生产环境?那么,如何估计性能指标所需的必要数据集大小才能足够可行以确保它是一个可靠的模型?

  2. 行业中是否有标准或指标来确定模型何时经过充分测试并符合生产条件?

我找不到关于这个主题的文献。

谢谢

2个回答

没有一种完善的方法来估计您需要的数据点数量。它更像是一门艺术而不是一门科学。随着您获得更多经验,您将沿途学习一些常识课程(事后看来)。例如,您永远不应该拥有比数据点更多的参数;如果您正在构建随机森林,则树的数量不应超过数据点。如果你在做深度学习,你的神经元不应该多于数据点(这些是极端的例子)。根据经验,尽量避免拥有比数据点多 10 倍的特征。300 个数据点非常小,因此您可能应该将自己限制在线性模型中。

正如霍布​​斯所提到的,交叉验证和/或保留集是判断模型准备情况的正确方法,而与数据点与特征的比率无关。如果训练集上的误差比测试/验证集上的误差好 10%,那么您可能过度拟合并且您的模型不适合生产。10% 的门槛在很大程度上是一个经验法则。

另外值得一提的是,一旦您对自己的模型适合生产感到满意,就永远不要部署它然后就走开。如果您的模型有价值,您应该进行持续的后期制作监控。在现实世界中,随着模型训练环境的发展,模型的性能将不可避免地随着时间的推移而下降(无论模型构建时它有多强大/准确)。这对于金融和保险行业来说当然是正确的。

如果您的模型的性能比您预期的差得多,也可以使用生产监控来拔掉插头。如果您对模型的潜在稳定性有非常低的看法,请静默部署它(不要让预测进入下游系统)并衡量如果您假设部署它,您的模型会如何做。

最后一条建议:当您对新文档进行预测时,您几乎总是会遇到您在训练集中没有考虑到的单词。您应该找到一种方法将这种意识融入您的模型中。例如,您可以选择仅使用关键字作为预测变量,也可以为新词创建指示变量。无论哪种方式,您都不应该期望词汇量保持不变。

我以前遇到过这个问题,虽然我对这个领域还比较陌生,但我有一些想法。

在回答您的第一个问题时,如果交叉验证您的模型产生一致的结果,那么您可能有足够的数据。如果新数据严重影响您的模型,则您可能没有足够的数据。有许多指标可以衡量模型的稳健性,我主要使用 AUC。

这是一篇关于更多数据与更好算法的有趣帖子: http ://www.kdnuggets.com/2015/06/machine-learning-more-data-better-algorithms.html