name: machine-learning description: 机器学习开发模式、模型训练、评估与部署。适用于构建ML流水线、训练模型、特征工程、模型评估或将ML系统部署到生产环境。 author: Joseph OBrien status: unpublished updated: ‘2025-12-23’ version: 1.0.1 tag: skill type: skill
机器学习
全面的机器学习技能,涵盖从实验到生产部署的完整ML生命周期。
何时使用此技能
- 构建机器学习流水线
- 特征工程与数据预处理
- 模型训练、评估与选择
- 超参数调优与优化 n- 模型部署与服务
- ML实验跟踪与版本管理
- 生产ML监控与维护
ML开发生命周期
1. 问题定义
分类类型:
- 二分类(垃圾邮件/非垃圾邮件)
- 多分类(图像类别)
- 多标签分类(文档标签)
- 回归(价格预测)
- 聚类(客户细分)
- 排序(搜索结果)
- 异常检测(欺诈检测)
按问题类型的成功指标:
| 问题类型 | 主要指标 | 次要指标 |
|---|---|---|
| 二分类 | AUC-ROC, F1 | 精确率, 召回率, PR-AUC |
| 多分类 | 宏平均F1, 准确率 | 每类指标 |
| 回归 | RMSE, MAE | R², MAPE |
| 排序 | NDCG, MAP | MRR |
| 聚类 | 轮廓系数, Calinski-Harabasz指数 | Davies-Bouldin指数 |
2. 数据准备
数据质量检查:
- 缺失值分析与填补策略
- 异常值检测与处理
- 数据类型验证
- 分布分析
- 目标泄漏检测
特征工程模式:
- 数值型:缩放、分箱、对数变换、多项式特征
- 类别型:独热编码、目标编码、频率编码、嵌入
- 时间型:滞后特征、滚动统计、周期性编码
- 文本型:TF-IDF、词嵌入、Transformer嵌入
- 地理空间:距离特征、聚类、网格编码
训练/测试集划分策略:
- 随机划分(标准)
- 分层划分(类别不平衡)
- 基于时间的划分(时序数据)
- 分组划分(防止数据泄漏)
- K折交叉验证
3. 模型选择
算法选择指南:
| 数据规模 | 问题 | 推荐模型 |
|---|---|---|
| 小 (<10K) | 分类 | 逻辑回归, SVM, 随机森林 |
| 小 (<10K) | 回归 | 线性回归, 岭回归, SVR |
| 中 (10K-1M) | 分类 | XGBoost, LightGBM, 神经网络 |
| 中 (10K-1M) | 回归 | XGBoost, LightGBM, 神经网络 |
| 大 (>1M) | 任意 | 深度学习, 分布式训练 |
| 表格数据 | 任意 | 梯度提升 (XGBoost, LightGBM, CatBoost) |
| 图像 | 分类 | CNN, ResNet, EfficientNet, Vision Transformers |
| 文本 | NLP | Transformers (BERT, RoBERTa, GPT) |
| 序列 | 时间序列 | LSTM, Transformer, Prophet |
4. 模型训练
超参数调优:
- 网格搜索:穷举,适用于小空间
- 随机搜索:高效,适用于大空间
- 贝叶斯优化:智能探索 (Optuna, Hyperopt)
- 早停法:防止过拟合
常见超参数:
| 模型 | 关键参数 |
|---|---|
| XGBoost | learning_rate, max_depth, n_estimators, subsample |
| LightGBM | num_leaves, learning_rate, n_estimators, feature_fraction |
| 随机森林 | n_estimators, max_depth, min_samples_split |
| 神经网络 | learning_rate, batch_size, layers, dropout |
5. 模型评估
评估最佳实践:
- 始终使用预留的测试集进行最终评估
- 开发过程中使用交叉验证
- 检查过拟合(训练集与验证集差距)
- 使用多个指标进行评估
- 定性分析错误
处理不平衡数据:
- 重采样:SMOTE, 欠采样
- 类别权重:加权损失函数
- 阈值调优:优化决策阈值
- 评估:使用PR-AUC而非ROC-AUC
6. 生产部署
模型服务模式:
- REST API (Flask, FastAPI, TF Serving)
- 批量推理(定时任务)
- 流式处理(实时预测)
- 边缘部署(移动端, IoT)
生产注意事项:
- 延迟要求 (p50, p95, p99)
- 吞吐量(每秒请求数)
- 模型大小与内存占用
- 回退策略
- A/B测试框架
7. 监控与维护
监控内容:
- 预测延迟
- 输入特征分布(数据漂移)
- 预测分布(概念漂移)
- 模型性能指标
- 错误率与错误类型
重训练触发条件:
- 性能下降至阈值以下
- 检测到显著数据漂移
- 计划性重训练(每日、每周)
- 新训练数据可用
MLOps最佳实践
实验跟踪
为每个实验跟踪:
- 代码版本(git提交)
- 数据版本(哈希或版本ID)
- 超参数
- 指标(训练集、验证集、测试集)
- 模型工件
- 环境(包、版本)
模型版本管理
models/
├── model_v1.0.0/
│ ├── model.pkl
│ ├── metadata.json
│ ├── requirements.txt
│ └── metrics.json
├── model_v1.1.0/
└── model_v2.0.0/
ML的CI/CD
-
持续集成:
- 数据验证测试
- 模型训练测试
- 性能回归测试
-
持续部署:
- 预生产环境验证
- 影子模式测试
- 渐进式发布(金丝雀)
- 自动回滚
参考文件
如需详细模式和代码示例,请根据需要加载参考文件:
references/preprocessing.md- 数据预处理模式与特征工程技术references/model_patterns.md- 模型架构模式与实现示例references/evaluation.md- 综合评估策略与指标
与其他技能的集成
- performance - 用于优化推理延迟
- testing - 用于ML特定测试模式
- database-optimization - 用于特征存储查询
- debugging - 用于模型调试与错误分析