为什么你的"机器学习"模型 表现良好但生产失败

2026年9月7日1 次浏览来源:Dev.to阅读原文

机器学习模型在开发期间可以达到95%的精度,在部署后仍然非常出色。

这是机器学习的令人沮丧的现实之一。

你训练模型,在测试组上评价它,看到令人印象深刻的结果,并且认为困难的部分已经结束了.

然后真正的用户开始与之互动.

预测越来越不准确。

为什么?

因为一个模型没有“真实世界”的训练。

它受过你提供的数据培训。

而这两件事并不总是一样。

本质上,机器学习模式是现实的抽象.

下面是业绩良好的模型在生产中可能仍然失败的一些原因。

1.

您的培训数据并不代表生产 假设您建立了一个模型来预测某项交易是否为欺诈。

你的培训数据可能是这样的: Monte Country December Fraud 500 Nigeria Mobile 0 1200 Nigeria Web 0 9000 Nigeria Mobile 1........................

如果您的历史交易大多来自移动用户,该模型可能会学习出对移动交易特别有效的模式.

但部署后,假设公司开始从网络用户那里收到更多的交易.

输入数据的分布已经改变.

你的模型在数学方面并没有突然变差.

它所看到的世界已经改变。

这通常被描述为数据漂移或更广义的分布转移[1].

您的测试集可能与您的培训数据过于相近。

当测试数据与培训数据过于相近时, 模型可以运行极佳。

考虑一个包含2024年和2025年客户记录的数据集.

如果随机将整个数据集分解为培训和测试集,这两年的记录可能会出现在两集中.

这可能适合于某些问题。

但假设顾客的行为随时间而改变。

接受随机混合历史数据培训的模型在评价期间可能看起来非常出色,而在2026年被要求预测行为时则会挣扎.

对于时间问题,如何分割数据。

有时按时间顺序划分比较现实: 培训:2024年1月-2025年12月 测试:2026年1月-2026年3月 目标不仅仅是获得高分的测试分.

目标是建立一个类似于该模型实际使用的评价.

3.

您的预处理可能不是相同的 想象一下您在训练前将数字变量标准化 。

在开发期间,您计算出与培训数据的平均和标准偏差.

但当模型部署时,有人会以不同方式执行预处理.

也许一栏的缩放不正确。

也许缺失的值处理方式不同。

也许用不同的映射来编码一个绝对变量。

模型本身没有改变。

输入模型的数据有。

这就是为什么预处理通常应作为机器学习管道的一部分,而不是作为断开步骤的集合.

例如,通过Scikit-Learn,可以结合预处理和建模: 管道有助于确保始终如一地实施同样的转变。

4.

目标可以改变,有时问题不是输入数据。

目标变量的意义会改变.

想象一个模型预测一个客户是否会拖欠贷款.

如果公司改变其“违约”的定义,历史标签和未来标签就可能不再完全相同。

这个模型仍然在解决它训练来解决的问题.

但问题本身已经改变。

这有时被称为概念漂移[2].

5.

制作有问题,你的笔记本 不是一个模型 在笔记本中只需要 产生预测。

生产系统还有其他要求。

它可能需要:迅速回应;处理上千项请求;处理缺失或出乎意料的值;处理不断变化的数据库;保持一致的预处理;日志预测;监测性能.

一个精度很高但无法接受的转售模型

分享