机器学习基础
核对日期:2026-05-13。
1. 阶段目标
本阶段目标是掌握经典机器学习的完整工程闭环:从业务问题出发,定义任务、准备数据、构造特征、训练模型、评估效果、分析失败样例,并判断是否值得上线。
学完本阶段,你应该能做到:
- 判断一个问题是否适合传统机器学习。
- 区分监督学习、无监督学习、回归、分类、排序和聚类。
- 正确划分训练集、验证集、测试集。
- 选择合适评测指标,而不是只看 accuracy。
- 识别过拟合、欠拟合和数据泄漏。
- 完成一个端到端机器学习小项目。
本阶段的核心产出是:
- 一个端到端 ML 项目。
- 一份模型评测报告。
- 一份失败样例分析。
2. 学习前置条件
建议已完成:
- 数学与编程基础。
- Python、pandas、NumPy 基础操作。
- 基本概率、向量、损失函数和数据质量意识。
不要求:
- 深度学习经验。
- 大模型 API 经验。
- 复杂算法推导能力。
3. 核心知识地图
4. 详细讲义
4.1 机器学习解决什么问题
机器学习适合从历史数据中学习稳定模式,并对新样本做预测、分类、排序或分组。
典型问题:
- 用户是否会流失。
- 订单是否有欺诈风险。
- 商品销量可能是多少。
- 一条评论是正向还是负向。
- 用户可以分成哪些群体。
不适合机器学习的情况:
- 没有足够历史数据。
- 规则非常清晰,写代码更简单。
- 标签定义不稳定。
- 预测结果无法验证。
- 业务流程高风险但缺少人工复核。
4.2 监督学习
监督学习有输入 X 和标签 y。模型学习从 X 到 y 的映射。
| 类型 | 目标 | 示例 | 常用指标 |
|---|---|---|---|
| 回归 | 预测连续数值 | 房价、销量、时长 | MAE、RMSE、R2 |
| 二分类 | 判断是/否 | 是否流失、是否欺诈 | Precision、Recall、F1、AUC |
| 多分类 | 从多个类别选一个 | 文本类别、意图识别 | Accuracy、Macro F1 |
| 排序 | 对候选项排序 | 推荐、搜索排序 | NDCG、MRR |
4.3 无监督学习
无监督学习没有明确标签,目标是发现结构:
- 聚类:把相似用户分组。
- 降维:把高维特征压缩成更易观察的空间。
- 异常检测:发现偏离常态的样本。
无监督学习很容易被过度解释。聚类结果不是天然业务分群,必须结合业务变量和后续验证。
4.4 数据划分
标准划分:
训练集:学习参数
验证集:选模型、调参数
测试集:最终验收
时间序列或业务日志不能随便随机切分。比如预测用户未来是否流失,测试集必须在时间上晚于训练集,否则会发生时间穿越。
4.5 特征工程
特征是模型看到世界的方式。常见特征:
| 类型 | 示例 | 注意点 |
|---|---|---|
| 数值特征 | 金额、次数、时长 | 缩放、异常值 |
| 类别特征 | 城市、渠道、类型 | one-hot、目标编码 |
| 时间特征 | 小时、星期、节假日 | 周期性、时区 |
| 行为统计 | 近 7 天点击数 | 时间窗口不能穿越 |
| 文本特征 | 关键词、长度、embedding | 分词、噪声 |
LLM 时代仍然需要特征工程。很多结构化预测问题,用简单特征和树模型就能达到很强效果。
4.6 常见模型
| 模型 | 优点 | 缺点 | 适合 |
|---|---|---|---|
| 线性回归 | 简单、可解释 | 表达能力有限 | 连续值预测基线 |
| 逻辑回归 | 稳定、可解释 | 非线性能力弱 | 二分类基线 |
| 决策树 | 易解释 | 容易过拟合 | 规则结构明显 |
| 随机森林 | 稳定、抗过拟合 | 解释较弱 | 表格分类/回归 |
| GBDT | 表格数据强基线 | 参数较多 | 结构化数据竞赛和业务 |
| KMeans | 简单聚类 | 需要指定 K | 用户分群初探 |
工程建议:先做简单基线,再做复杂模型。没有基线的模型提升没有意义。
4.7 评测指标
不同任务不能共用一个指标。
分类指标
| 指标 | 看什么 | 适合 |
|---|---|---|
| Accuracy | 总体预测对多少 | 类别均衡 |
| Precision | 预测为正的样本有多少真是正 | 误报成本高 |
| Recall | 真正样本中找回多少 | 漏报成本高 |
| F1 | Precision 和 Recall 的折中 | 类别不均衡 |
| AUC | 排序区分能力 | 阈值未定 |
回归指标
| 指标 | 看什么 | 特点 |
|---|---|---|
| MAE | 平均绝对误差 | 直观、抗异常值 |
| RMSE | 平方误差开根 | 对大误差敏感 |
| MAPE | 相对误差 | 真实值接近 0 时不稳定 |
4.8 过拟合、欠拟合和数据泄漏
| 问题 | 表现 | 可能原因 | 修复 |
|---|---|---|---|
| 欠拟合 | 训练集和测试集都差 | 模型太简单、特征不足 | 增加特征、换模型 |
| 过拟合 | 训练集好,测试集差 | 模型太复杂、数据少 | 正则、降复杂度、更多数据 |
| 数据泄漏 | 离线指标异常高,线上崩 | 用了未来信息或标签信息 | 重建特征和切分 |
数据泄漏是机器学习里最危险的问题之一,因为它让你以为模型很好。
4.9 从模型到业务决策
模型输出通常是分数或概率,业务系统还需要:
- 阈值选择。
- 人工复核策略。
- 误报和漏报成本分析。
- 监控数据漂移。
- 定期重训或校准。
模型不是业务决策本身,它只是决策链路中的一个证据来源。
5. 关键概念表
| 概念 | 含义 | 工程判断 | 常见错误 |
|---|---|---|---|
| 样本 | 一条训练数据 | 是否代表真实场景 | 采样偏差 |
| 标签 | 模型要预测的答案 | 标签定义是否稳定 | 标签噪声 |
| 特征 | 模型输入变量 | 线上是否可获得 | 时间穿越 |
| 训练集 | 学习参数 | 越大越稳定 | 混入测试样本 |
| 验证集 | 选模型调参 | 反复比较 | 当成测试集用 |
| 测试集 | 最终验收 | 模拟未来数据 | 被调参污染 |
| 基线 | 最简单可比较方案 | 证明模型有价值 | 没有业务 baseline |
| 阈值 | 分数转动作的边界 | 影响误报/漏报 | 固定不监控 |
6. 工程案例
6.1 用户流失预测
目标:预测未来 30 天是否流失。
关键设计:
- 标签:未来 30 天无活跃。
- 特征:过去 7/14/30 天活跃次数、消费、功能使用。
- 切分:按时间切分,避免未来数据进入训练。
- 指标:Recall 和 Precision 都要看,因为漏掉高风险用户和误打扰用户都有成本。
6.2 订单风险分类
目标:识别高风险订单。
关键设计:
- 类别极不平衡,accuracy 没意义。
- 更关注高风险召回率和人工审核成本。
- 模型输出不直接拒单,而是进入人工审核或更严格验证。
6.3 房价回归
目标:预测房价。
关键设计:
- 数值特征、类别特征、位置特征都重要。
- RMSE 会放大大房价样本的误差。
- 需要分析错误样例:模型在哪些区域或户型上误差大。
6.4 用户分群
目标:理解用户类型。
关键设计:
- 聚类结果需要业务解释。
- K 值不是越多越好。
- 分群之后要验证是否能指导运营动作。
7. 常见误区与反模式
| 反模式 | 表现 | 后果 | 修正 |
|---|---|---|---|
| 只看 accuracy | 类别不平衡还看准确率 | 模型看起来很好但没用 | 看 precision/recall/F1 |
| 没有基线 | 直接上复杂模型 | 不知道是否真的提升 | 做规则或简单模型 baseline |
| 测试集调参 | 反复看测试集改模型 | 测试集失效 | 保留最终测试集 |
| 时间穿越 | 用未来信息构造特征 | 离线虚高,线上失败 | 按时间重建样本 |
| 忽略失败样例 | 只报平均指标 | 看不到业务风险 | 分桶分析错误 |
| 模型替代流程 | 分数直接执行高风险动作 | 误伤用户 | 加人工复核和阈值策略 |
8. 阶段练习
8.1 任务识别
判断以下问题属于回归、分类、聚类还是不适合 ML:
- 预测订单金额。
- 判断用户是否会流失。
- 把用户分成若干群。
- 根据固定规则审批报销。
- 总结一篇文章。
8.2 数据切分
给一份用户行为日志,设计训练集、验证集、测试集切分方案。要求说明:
- 为什么这样切分。
- 是否存在时间穿越风险。
- 测试集如何模拟未来线上场景。
8.3 指标选择
为以下任务选择指标:
- 欺诈识别。
- 垃圾邮件识别。
- 销售额预测。
- 商品搜索排序。
8.4 模型对比
使用 scikit-learn 对同一数据集训练:
- 逻辑回归。
- 决策树。
- 随机森林或 GBDT。
输出指标表和失败样例。
9. 项目任务
9.1 项目要求
完成一个端到端 ML 小项目:
问题定义 -> 数据理解 -> 数据切分 -> 特征工程 -> 模型训练 -> 评测 -> 失败分析 -> 业务建议
建议项目:
- 用户流失预测。
- 信用风险分类。
- 房价预测。
- 评论情感分类。
- 用户分群分析。
9.2 项目报告模板
# 机器学习项目报告
## 1. 问题定义
## 2. 数据来源和字段说明
## 3. 数据质量检查
## 4. 训练/验证/测试划分
## 5. 特征工程
## 6. 模型和基线
## 7. 评测指标
## 8. 结果对比
## 9. 失败样例分析
## 10. 上线风险和改进计划
9.3 评分标准
| 维度 | 分值 | 标准 |
|---|---|---|
| 问题定义 | 15 | 任务、标签、业务目标清晰 |
| 数据处理 | 20 | 数据质量和切分合理 |
| 特征工程 | 20 | 特征可解释且无泄漏 |
| 模型与基线 | 15 | 至少有一个 baseline 和一个改进模型 |
| 评测与失败分析 | 20 | 指标合适,有错误样例 |
| 业务建议 | 10 | 能说明上线风险和下一步 |
10. 验收题
- 监督学习和无监督学习有什么区别?
- 回归和分类分别解决什么问题?
- 为什么要分训练集、验证集、测试集?
- 类别不平衡时 accuracy 为什么会误导?
- Precision 和 Recall 分别适合什么业务风险?
- 什么是数据泄漏?举一个时间穿越例子。
- 为什么需要 baseline?
- 过拟合和欠拟合分别如何识别?
- 传统 ML 什么时候比 LLM 更合适?
- 模型输出分数后,业务系统还需要做什么?
11. 延伸阅读
官方与课程
- scikit-learn User Guide: https://scikit-learn.org/stable/user_guide.html
- Stanford CS229: https://cs229.stanford.edu/
- Google Machine Learning Crash Course: https://developers.google.com/machine-learning/crash-course
实践参考
- scikit-learn Tutorials: https://scikit-learn.org/stable/tutorial/index.html
- imbalanced-learn Documentation: https://imbalanced-learn.org/stable/
- XGBoost Documentation: https://xgboost.readthedocs.io/
12. 本阶段总结
机器学习训练的是“从数据到预测”的闭环能力。它要求你对数据来源、标签定义、特征可用性、评测指标和业务成本负责。
进入下一阶段前,你应该能完成一个小型 ML 项目,并清楚说明模型为什么有效、哪里会失败、上线前还缺什么。下一阶段会进入深度学习,理解神经网络如何从复杂数据中自动学习表示。