Ch04 机器学习修订于 二〇二六年七月二日

4.7 机器学习项目实战流程

一个真实的机器学习项目,写代码训练模型只是其中一小步。CRISP-DM(Cross-Industry Standard Process for Data Mining,跨行业数据挖掘标准流程)是业界最广泛采用的 ML 项目框架,诞生于 1999 年,至今(2026 年)仍然是所有数据科学项目的默认方法论 1。

CRISP-DM 的核心哲学是:ML 项目不是一条从 A 到 B 的直线,而是一个不断回到前面步骤修正假设的循环。你建完模型发现在测试集上效果不行,不是从”训练模型”这个步骤重新开始,而是可能要回到”理解数据”甚至”理解业务”去调整——因为问题很可能出在前面,不在模型上。

打个比方:ML 项目像装修房子。不是画完设计图就按图施工永远不改了——施工过程中发现墙不能拆、水管位置不对、插座预留不够,你随时要改设计图,甚至重新考虑装修预算。CRISP-DM 的六个阶段之间就是这种来回修正的关系。

六阶段详解

阶段一:理解业务(Business Understanding)

这一步不写一行代码,但它是全流程中最重要的环节——方向错了,后面的所有努力都是浪费时间。

核心问题:

  • 你到底要解决什么问题?是预测客户会不会流失?还是识别欺诈交易?
  • 成功的标准是什么?准确率达到 90%?还是把误报率降到 5% 以下?
  • 这个模型的预测结果会被怎么使用?是自动执行决策(如拦截交易),还是给人做参考(如推荐评分)?

如果业务目标没定义清楚,整个项目会陷入”掉包调参 -> 效果不好 -> 换模型 -> 还是不好 -> 重新调参”的死循环。很多”模型效果差”的根因不在模型,在一开始就没想清楚要解决什么问题。

阶段二:理解数据(Data Understanding)

拿到数据后不要立刻训练模型。先花时间了解你手上有什么。这一步叫 EDA(Exploratory Data Analysis,探索性数据分析)2。

要查的内容:

  • 数据长什么样?有多少行、多少列?每列是什么类型(数字、文本、类别)?
  • 缺失值多少?某些列是否 90% 都是空的?
  • 分布合理吗?比如”年龄”列里有没有出现 200 岁的数据?“收入”列里有没有负数?
  • 目标变量(你要预测的那个)的分布均衡吗?如果”欺诈交易”只占 0.1%,那你需要用特殊方法处理类别不平衡。

新手最常犯的错误就是跳过这一步。不理解数据就建模,就像不知道地图就上路——你可以开得很快,但方向可能是错的。

阶段三:准备数据(Data Preparation)

这一步在所有 ML 项目中耗时最长——通常占整个项目时间的 60-70%。内容包括 3:

  • 缺失值处理:填充(用均值、中位数或模型预测)或直接删除。不是所有缺失值都可以随便填——“用户没有填收入”这个信息本身可能也是一个信号。
  • 异常值处理:把明显离谱的数据修正或剔除。但注意——有些异常值是你要检测的目标(欺诈交易本身在金额上可能就是异常的),不能一概删除。
  • 特征编码:把文本类别(如”北京/上海/广州”)转成数字。连续值通常做标准化或归一化。树模型(决策树、随机森林、XGBoost)不要求特征缩放,但线性模型和神经网络需要。
  • 特征工程:从原始数据中创造新特征。比如从完整的日期时间里提取”星期几”和”小时”,从地址里提取”城市”。好的特征工程比调参更能提升模型效果 4。

阶段四:建模(Modeling)

终于到了”调包训练模型”的环节,但这一步比很多人以为的要快——因为前面的数据准备工作才是最耗时的。

建模的关键原则:

  • 先建 baseline(基线模型)。用最简单的模型(如线性回归、决策树)跑一遍,得到一个”最低分数线”。这比你想象的重要——你改了半天复杂模型,发现效果还不如最简单的线性回归,说明你的复杂模型方向有问题。
  • 再逐步提升。在 baseline 的基础上,依次尝试更复杂的模型(随机森林、XGBoost 等),每次只改一个变量,确认效果确实提升再做下一步。
  • 记录每一次实验。用了什么参数、什么特征、什么模型、训练误差和验证误差分别是多少。不记录的话,一周后你就忘了哪个实验效果好、为什么好。MLflow、Weights & Biases 是常用的实验跟踪工具。

如果数据是表格(CSV、数据库表),先试 XGBoost。在表格数据上,XGBoost 在 2026 年仍然经常打败深度学习,而且训练快几十倍 5。如果数据是图像或文本,那必须用深度学习——传统 ML 方法处理不了非结构化数据 6。

阶段五:评估(Evaluation)

模型训练完了,但不代表它可以上线。评估要回答两个问题:

  • 技术层面:模型在没见过的数据上表现如何?
  • 业务层面:这个水平的性能够不够用?上线后的收益大于成本吗?

技术层面的评估要用测试集——训练时模型完全没见过的那部分数据。不要用训练集或验证集来评估——前者会导致你高估效果(过拟合),后者因为你用验证集反复调参,实际上也间接”见过”了 7。

评估指标的选择取决于业务场景:

  • 分类任务不能只看准确率。在欺诈检测、疾病筛查这类极度不平衡的场景(正例只占不到 1%),模型即使永远预测”正常”,准确率也有 99% 以上——但毫无价值。要用查准率(Precision)、查全率(Recall)、F1 分数和 AUC-ROC。
  • 回归任务看 MSE 或 MAE,但要结合业务背景。房价预测误差 5000 元算好算坏?这取决于你的业务需求——如果用来报税,可能要求极高精度;如果只是给购房者参考价,5000 元的误差完全可以接受。

阶段六:部署和监控(Deployment and Monitoring)

模型上线不是终点,而是新周期的起点。上线后需要持续监控 8:

  • 数据漂移(Data Drift):生产环境的数据分布和训练数据不一致了。比如训练时用的是 2023 年的用户数据,2026 年的用户行为模式已经变了——模型的预测开始不准。用 KS 检验(Kolmogorov-Smirnov Test)或 PSI(Population Stability Index)来量化漂移程度。
  • 模型衰退(Model Decay):即使输入数据没变,但现实世界本身变了。模型预测的准确率随时间逐步下降。为每个上线模型设定性能预警阈值(如 AUC 下降 > 5%),超过阈值自动触发重训练。
  • 定期重训练:根据业务节奏设定重训练频率。快节奏业务(如推荐系统)可能每天重训,慢节奏业务(如信用评估模型)可能每月甚至每季度更新。

时间分配

基于真实项目的经验,一个典型 ML 项目的时间分配如下 9:

阶段时间占比说明
理解业务5-10%但方向错了全部作废,时间再紧也不该省这一步
理解和准备数据60-70%数据清洗 + 特征工程 = ML 项目中最耗时、影响最大的部分
建模15-20%调包训练很快,但调参和验证需要反复实验
评估5-10%被严重低估——评估不只是跑一个指标,要理解模型在哪些子场景表现差
部署和监控5-10%部署本身可能很快,但长期监控和迭代才是真正的成本

新手最常见的误区:70% 的时间花在调参和换模型上,数据只用了 30% 的时间粗粗看过——完全反了。

常见陷阱

  1. 跳过 EDA 直接建模。 数据里有一个特征 99% 的值都一样,那这个特征对模型几乎没有帮助。数据里某列全是缺失值但你没发现,模型也在”学着”——这个问题你不看数据就不会知道。
  2. 没有 baseline。 一头扎进 XGBoost 或深度学习,调了一周参数,结果还不如最简单的线性回归。如果你不知道”最简单方案”能拿什么成绩,你就不知道复杂方案到底带来了多少提升。
  3. 只优化模型,不优化数据。 费劲换模型提升 1%,不如回去认真做特征工程可能提升 10%。数据决定了模型效果的上限,模型只是逼近这个上限。
  4. 测试集泄露。 在建模的某个步骤不小心用到了测试集的信息(比如用整个数据集做了归一化,而不是只在训练集上计算均值和标准差)。这会让测试集评估结果虚高——你以为模型很好,实际只是一场”提前看了答案”的假考试。
  5. 上线后就不管了。 模型上线三个月后效果严重下滑,但没人监控——等业务方发现问题时,已经损失了三个月。监控和告警不是可选项。

上一节:4.6 2026年:经典ML vs 深度学习的选型 | 下一节:章首

注释

  1. Shearer, “The CRISP-DM model: The New Blueprint for Data Mining”, Journal of Data Warehousing, 2000 ↩

  2. Tukey, “Exploratory Data Analysis”, Addison-Wesley, 1977 ↩

  3. 详细实现见 第5章 · 模型评估与特征工程 ↩

  4. Domingos, “A Few Useful Things to Know About Machine Learning”, Communications of the ACM, 2012 ↩

  5. Grinsztajn, Oyallon & Varoquaux, “Why do tree-based models still outperform deep learning on tabular data?”, NeurIPS, 2022 ↩

  6. 详见 4.6 2026年:经典ML vs 深度学习的选型 ↩

  7. 详见 评估指标 ↩

  8. MLOps 详细实践见 模型监控 ↩

  9. Google, “Rules of Machine Learning: Best Practices for ML Engineering”, 2020 ↩

关联5

知识图谱

局部图谱 · 点节点跳转