site logo

Marico's space

机器学习生命周期:从问题到生产的10个步骤

AI技术与应用 2026-04-25 23:05:21 9

【译者前言】翻译这篇文章的时候,我一直在想为什么 Step 3(数据清洗)坑了这么多项目。说实话,很多人(包括我)一开始都觉得机器学习就是调模型、跑参数,但现实告诉你:数据没准备好,再好的算法也是白搭。希望这篇文章能帮想入门 ML 的朋友少走一些弯路。

cover

每一个 ML 教程都直接跳到模型训练。但在现实世界中,训练是 10 个步骤中的第 7 步——而之前的步骤才是项目成功或失败的关键。本文将带您走过完整的机器学习生命周期,从定义问题到让模型在生产环境中保持健康运行,每个阶段都配有真实案例和实用建议。

The Big Picture

机器学习是一个迭代且结构化的过程。它不是"把数据扔给算法,期待奇迹发生"。它是一个循环——大多数团队会反复循环多次,才能得到一个在生产环境中工作的成果。

以下是 10 个阶段:

1. Problem Definition → 2. Data Collection → 3. Data Cleaning & Preprocessing
→ 4. Exploratory Data Analysis (EDA) → 5. Feature Engineering & Selection
→ 6. Model Selection → 7. Model Training → 8. Model Evaluation & Tuning
→ 9. Model Deployment → 10. Monitoring & Maintenance → (back to 1)

让我们逐一走过每个阶段。

1. Problem Definition — "What are we actually solving?"

这是大多数失败 ML 项目出错的地方。在接触任何数据或代码之前,你需要回答:

  • 我要解决什么业务问题? 不是"我想用 AI",而是"我想将客户流失率降低 15%"或"我想实时检测欺诈交易"。
  • ML 是正确的工具吗? 有时候简单的规则系统或 SQL 查询更好。对于有明确确定性规则的问题,ML 是昂贵的过度设计。
  • 成功的标准是什么? 定义一个可衡量的指标:准确率、精确率、召回率、收入影响、延迟要求。
  • 这是什么类型的 ML 问题? 分类?回归?聚类?推荐?这些决定了后续的一切。

问题定义决定了你需要的数据类型。 如果你定义问题错误,你就会收集错误的数据,构建错误的模型,然后交付没人想要的东西。

示例: 一家银行想"使用 AI"。这不是问题定义。"以低于 0.1% 的假阳性率和 200ms 以下的延迟预测哪些信用卡交易是欺诈的"——这才是问题定义。

说实话,我见过太多团队上来就说"我们想做一个 AI 推荐系统",结果问到具体目标是什么,全都懵了。业务问题定义不清楚,后面的努力大概率是白费。

2. Data Collection — "Do we have enough?"

一旦你知道要解决什么,就需要数据。这一步是收集足够高质量、相关的数据来训练模型。

关键问题:

  • 数据从哪里来? 内部数据库、API、网络爬虫、第三方供应商、公开数据集、用户生成内容?
  • 我需要多少数据? 取决于复杂度。简单分类器可能需要 1,000 个样本。计算机视觉模型可能需要 100,000+ 张标注图像。LLM 需要数十亿个 token。
  • 数据有标注吗? 对于监督学习,你需要标签("正确答案")。标注通常是最昂贵和耗时的部分。
  • 数据具有代表性吗? 如果你的人脸识别系统只用一个 demographics 的照片训练,它会在其他人群上失败。你的数据必须代表现实世界的分布。

常见陷阱:

  • 以为有"大数据",实际上是大噪音
  • 没有检查采样偏差
  • 忽略数据隐私法规(GDPR、KVKK、HIPAA)
  • 收集太多特征而样本不足

我之前参与过一个项目,客户拍着胸脯说"我们有上亿条数据"。结果一看,将近 80% 是重复记录,还有相当一部分是测试环境灌进去的假数据。所以数据"大不大"真不是重点,"干不干净"才是。

3. Data Cleaning and Preprocessing — "Garbage in, garbage out"

这里是你花费实际项目时间 60-80% 的地方。原始数据总是混乱的。

说实话,这个数字可能会让一些人惊讶——但它确实反映了现实。我见过太多团队急着上模型,结果花两天时间训练出来的东西,效果还不如花三周好好清洗一遍数据来的好。

你在这里做的事情:

Handling Missing Values

  • 有些行有空字段。你用均值填充?中位数?预测值?还是直接删除?
  • 正确答案取决于数据为什么缺失。"随机缺失"和"系统性缺失"需要不同的处理方法。

Removing Duplicates

  • 重复记录会扭曲模型对分布的理解。

Fixing Inconsistent Data

  • "New York"、"new york"、"NY"、"N.Y." 是同一个城市但四个不同的字符串。
  • 日期格式:"04/20/2026" vs "2026-04-20" vs "20 April 2026"
  • 单位:米 vs 英尺,摄氏度 vs 华氏度

Handling Outliers

  • 工资数据集中大多数值在 $40K-$120K,但有一条记录是 $99,999,999。是真实的还是笔误?异常值可能破坏模型性能,也可能提供关键信号——你必须做出决定。

Data Type Conversions

  • 分类变量需要编码(one-hot、label encoding)
  • 文本需要分词
  • 图像需要调整大小、归一化
  • 日期需要特征提取(星期几、月份、假日标志)

Normalization and Scaling

  • 不同尺度的特征(年龄:0-100,工资:20,000-500,000)可能使使用距离计算的模型产生偏差。标准化(z-score)或 min-max 缩放可以解决这个问题。

座右铭:垃圾进,垃圾出。 无论模型多复杂,都无法从坏数据中学到好的模式。

4. Exploratory Data Analysis (EDA) — "What does the data actually look like?"

在构建任何模型之前,你需要理解你的数据。EDA 是了解全貌的过程。

你要找的内容:

  • 分布 — 你的目标变量平衡吗?如果 99% 的交易是合法的,1% 是欺诈,你就有类别不平衡问题。
  • 相关性 — 哪些特征相互关联?哪些特征预测你的目标?
  • 模式和趋势 — 季节性效应?基于时间的变化?地理聚类?
  • 步骤 3 中遗漏的数据质量问题 — 有时候问题只有在可视化时才显现出来。

工具:直方图、散点图、相关性矩阵、箱线图、配对图。库:Pandas、Matplotlib、Seaborn、Plotly。

示例: 你在构建房价预测器。EDA 显示"卧室数量"和"平方英尺"高度相关(0.92)。同时包含两者可能导致多重共线性。你可能删除其中一个或合并它们。

EDA 通常会让你回到步骤 2 或 3——你意识到需要更多数据,或者你的数据有你之前没看到的问题。

很多人觉得 EDA 是在浪费时间,想直接跳到训练环节。但我的经验是:花 1-2 天做 EDA 能帮你省下后面一整周的调参时间。

5. Feature Engineering and Selection — "Good features > fancy models"

这往往是普通模型和优秀模型之间的差距。特征工程是创建新的输入变量的艺术,帮助模型更好地学习模式。

Feature Engineering (Creating)

  • 从日期: 提取 day_of_week、is_weekend、month、quarter、days_since_last_event
  • 从文本: 字数、情感得分、TF-IDF 值、embeddings
  • 从位置: 到最近城市的距离、人口密度、纬度区间
  • 组合特征: price_per_sqft = price / square_footage,BMI = weight / height²
  • 领域知识: 医生知道"血压 × 年龄"交互很重要;把它编码进去

Feature Selection (Removing)

并非所有特征都有帮助。有些增加噪音。太多特征导致过拟合和训练变慢。技术包括:

  • 相关性分析 — 删除相互高度相关的特征
  • 树模型特征重要性(Random Forest、XGBoost)
  • 递归特征消除 (RFE) — 迭代删除最不重要的特征
  • L1 正则化 (Lasso) — 在训练期间自动将不重要的特征归零

关键洞察:使用优秀特征的简单模型几乎总是击败使用糟糕特征的复杂模型。

6. Model Selection — "Choose the right tool for the job"

现在你选择要尝试的算法。这取决于:

  • 问题类型: 分类 → Logistic Regression、Random Forest、SVM、Neural Network。回归 → Linear Regression、XGBoost、Neural Network。聚类 → K-Means、DBSCAN。序列 → RNN、LSTM、Transformer。
  • 数据规模: 小数据 → 更简单的模型(logistic regression、SVM)。大数据 → 深度学习可以大放异彩。
  • 可解释性需求: 医疗和金融通常需要可解释模型(决策树、线性模型)。推荐引擎可以用黑盒(深度学习)。
  • 延迟要求: 实时推理需要快速模型。批处理可以用更慢的模型。

最佳实践: 从简单的开始。先尝试 logistic regression 或决策树。如果达到 85% 准确率,你就有了一个强基准。然后尝试更复杂的模型,看看改进是否值得复杂性。

你通常会尝试3-5 个不同的模型并比较它们的性能。

我见过有人第一次跑 Kaggle 就直接上 BERT+Ensemble+xgboost,调了三天发现效果不如随机森林。不是说 BERT 不好,而是先把基准模型跑起来,再决定要不要上重型武器,这样效率高得多。

7. Model Training — "The model learns about the data"

这是所有人认为 ML 就是的那一步——但正如你所见,它是 10 个步骤中的第 7 步。

训练意味着:

  • 将数据输入算法 — 模型看到样本并调整其内部参数(权重)以最小化误差
  • 将数据分割为训练/验证/测试集 — 通常是 70/15/15 或 80/10/10。永远不要在模型训练过的数据上评估。
  • 选择损失函数 — "什么是错误"的数学定义。分类用交叉熵,回归用 MSE 等。
  • 设置超参数 — 学习率、batch size、epochs、正则化强度。这些不是模型学习的;是你设置的。
  • 迭代 — 训练很少一次完成。你训练,查看结果,调整,重新训练。

关键概念:训练/测试分割。 如果你在模型训练过的数据上评估,你会得到误导性的高分。就像用学生练习过的考试原题来评分一样。

8. Model Evaluation and Tuning — "How is your model doing?"

训练完成了。现在:模型真的好吗?

Evaluation Metrics

不同问题需要不同的指标:

  • Accuracy — 正确预测的百分比。在不平衡数据上具有误导性(99% 准确率的欺诈检测意味着如果你总是预测"不是欺诈"则毫无意义)。
  • Precision — 模型标记为正类的所有内容中,实际为正类的有多少?
  • Recall — 所有实际正类中,模型捕获了多少?
  • F1 Score — precision 和 recall 的调和平均。当需要平衡两者时很好。
  • AUC-ROC — 曲线下面积。衡量模型在所有阈值上分离类别的能力。
  • MSE / RMSE / MAE — 回归:预测值与实际值相差多远?

Hyperparameter Tuning

如果结果不够好,调整超参数:

  • Grid Search — 尝试预定义值的每个组合
  • Random Search — 随机采样超参数空间(通常更高效)
  • Bayesian Optimization — 使用概率模型指导搜索(更智能)

9. Model Deployment — "Moving to production"

模型在 Jupyter 里运行良好——现在要让它在生产环境中工作。

Deployment Options

  • 云服务: AWS SageMaker、Google Vertex AI、Azure ML(托管,简单但贵)
  • 容器: Docker + Kubernetes(更灵活,需要更多运维知识)
  • 无服务器: AWS Lambda、Google Cloud Functions(适合间歇性工作负载)
  • 边缘部署: 移动设备、IoT 设备上的模型(需要模型压缩和优化)

Key Considerations

  • 延迟要求 — 实时推理(<100ms)需要优化模型或使用 GPU 实例
  • 可扩展性 — 流量突增时自动扩缩容
  • 监控 — 跟踪模型性能和系统健康
  • 版本管理 — 能够回滚到之前的模型版本

10. Monitoring and Maintenance — "Keeping your model healthy"

部署不是终点。ML 系统需要持续维护。

What to Monitor

  • 模型性能衰减 — 随着时间推移,数据分布可能发生变化(概念漂移),导致模型性能下降
  • 数据质量 — 输入数据是否仍然是"干净"的?
  • 系统指标 — 延迟、吞吐量、错误率、服务器健康

When to Retrain

  • 模型性能下降到不可接受的阈值
  • 引入新特征或数据源
  • 业务需求发生变化
  • 检测到数据质量问题

关键概念:ML 是迭代的。 部署模型后,监控它,收集反馈,然后改进。循环往复。

结论

机器学习生命周期不仅仅是"训练模型"。

从问题定义到监控维护,有 10 个关键步骤,每一步都需要认真对待。大多数 ML 项目失败的原因是它们跳过或仓促对待步骤 1-6,然后对步骤 7-10 感到惊讶。

记住:

  • 明确定义你要解决的问题
  • 认真对待数据(60-80% 的时间花在这里)
  • 从简单模型开始
  • 监控你的生产模型
  • 把 ML 看作一个迭代过程,而不是一次性项目

如果你能做到这些,你就大大增加了 ML 项目成功的概率。祝你建模愉快。