内容纲要
主要流程
- 定义任务
- 理解业务目标
- 定义问题: 理解数据要要预测的目标, 定义机器学习类型, 分类/回归/推荐/搜索…
- 关键指标: 业务成功的关键指标
- 数据: 数据是核心, 尽可能多的收集数据
- 开发模型
- 数据处理: 让数据可以被模型使用
- 验证: 定义验证指标, 比较模型之间的好坏; 并使用合适的验证方法(留出法/K折)
- 基线: 基线可能就是一个随机猜测所能达到的分数,必须要能够证明模型能够解决这个问题;做feature engineering, 选择合适的模型和参数训练并打败基线
- 训练: 模型要能够过拟合
- 泛化: 通过正则化(L2/Dropout…),特征工程,超参数,调整模型来提升模型的泛化能力
- 测试: 测试集上验证模型性能, 应该和验证集差不多. 测试集可以是提前准备或真是环境运行后标注
- 部署模型
- 部署: 服务器,移动设备,浏览器…, 将模型变成对应服务
- 监控: 监控新模型, AB测试/业务影响等等
- 收集数据: 准备更新下一代模型
数据
数据收集
- 数据的作用远大于模型, 尽可能把时间分配给获取(标注)数据.
- 要控制数据质量,特别使用一些标注平台或外包
- 开发或者使用合适的数据标注工具会大大提升数据标注效率
- 数据代表性: 训练数据应该能够代表上线后的数据,不同的来源或者仅有线上极少的分类数据,这样线上泛化性能不能保证
- 采样偏差(Sampling Bias): 常犯的错误是只从数据中按照条件过滤出一部分数据再采样,这样上线后会见到被过滤掉的没见过的数据, 在这部分的数据上泛化性能差会影响整体性能
- 概念漂移(concept drift): 持续的追踪数据并更新模型, 随着时间推移线上数据的特征也在发生变化
- 理解数据: 不要把数据当做黑盒,要尽可能仔细了解数据的方方面面
数据准备
- 向量化(vectorization): 模型只认向量
- 归一化(Value normalization): 数值应该是很小的值,并且范围统一. 常用是均值为0方差为1, 太大的数值可能会让模型难收敛.
- 缺失值处理(Missing Value): 分类特征可以加一个未知分类, 数值特征可以使用均值或中值;