机器学习规则:ML工程最佳实践----rules_of_ml section 【翻译】

宦琪
2023-12-01

This document is intended to help those with a basic knowledge of machine learning get the benefit of best practices in machine learning from around Google. It presents a style for machine learning, similar to the Google C++ Style Guide and other popular guides to practical programming. If you have taken a class in machine learning, or built or worked on a machine­learned model, then you have the necessary background to read this document.

Before Machine Learning

  • Rule: #1: 不要害怕开发没有应用机器学习技术的产品

  • Rule: #2: 设计评价指标并设立优先级

  • Rule: #3: 先使用复杂的启发式规则,然后选择机器学习方法

ML phase I : Your First Pipeline

  • Rule #4: 初版模型要简单,主要任务是确定系统流程的正确性

  • Rule #5: 系统运行状况要和算法的状况保持独立,以便之后算法迭代不会对系统造成较大影响。

  • Rule #6: 系统工作各阶段过度时,丢弃数据要谨慎

  • Rule #7: 寻找特征或者从外部补充其他相关数据

监控
  • Rule #8: 了解系统的时效性

算法运行对于数据的时效性有差异,如热榜需要每天更新数据,点击率预估更新部分数据频率更高。

  • Rule #9: 导出模型之前检测问题

  • Rule #10: 当心未被报告的失败

某些错误是不会有类似程序出错的异常,只会影响模型的性能,所以部署监控。

  • Rule #11: 文档化每个特征及其维护者

第一个目标
  • Rule #12: 不要过多的考虑优化指标的选择

起初的时候,只要选择正确的方法所有指标都会提升,没有必要刚开始对于指标的选择过多考虑。

  • Rule #13: 选择简单、可观察、可归因的指标作为第一个优化目标

  • Rule #14: 开始时使用可解释的模型,以便于调试

  • Rule #15: 对垃圾邮件过滤和质量排序,在策略上要区分开

对于垃圾邮件过滤,需要关注正反两类样本;但质量排序中只需要关注正常的样本,纵然也会存在违规、广告等,请记住,你的模型是排序,不是进行过滤。

ML Phase II: 特征工程(Feature Engineering)

  • Rule #16: 对模型重建和迭代做出规划

  • Rule #17: 开始时,使用可直接观察或者记录的特征(而不是算法学习得到的特征)

  • Rule #18: 挖掘能够在不同的上下文中泛化的特征

  • Rule #19: 尽可能使用具体的特征

如评价博文的热度,首选博文近几天的浏览量,而不是博文表达的主题是不是流行。

  • Rule #20: 使用可理解的方式修改或组合新特征

如 Titanic生还预测中,姐妹个数+孩子个数表示家庭人口大小。

  • Rule #21: 在线性模型中学习到的特征权重数量和使用到的数据量成比例

  • Rule #22: 清除掉不会再使用的特征

人工系统分析(Human Analysis of the System)
  • Rule #23: 你不能代表大多数的用户

所以你不能代表用户做判断模型的表现好坏,要做A/B Test。

  • Rule #24: 评估模型间的差异

  • Rule #25: 选择模型时,实用性比预测能力更重要

如果模型不能达到业务的性能要求,即使指标再高也不会让你上线的。

  • Rule #26: 观察模型误判的数据,寻找规律,抽取新特征

  • Rule #27: 量化观察到的不利行为

  • Rule #28: 注意区分短期行为和长期行为

如端午节很多人在购物中购买粽子,这并不代表这些人是个吃货,为此专门构造特征表示购买粽子的行为是不合适的。

训练偏差(Training-Serving Skew)
  • Rule #29: 为保证服务和训练效果相同,最好将服务时的特征集合保存以作训练

  • Rule #30: 对采样样本加权而不是随意丢弃

  • Rule #31: 模型训练之后才上线,在此过程中数据有可能已经发生变化

如果训练特征有一个特征表示博文的浏览量,那么等到模型训练完,浏览量已经发生变化了。

  • Rule #32: 尽可能在训练和服务时复用代码

  • Rule #33: 使用不同数据集做训练和测试

  • Rule #34: 在二值分类过滤中(垃圾邮件检测),不要为了纯净数据过大的牺牲性能

  • Rule #35: 认识排序问题中的固有偏差

如下载排行榜中靠前的APP在本质上就诱导用户下载

  • Rule #36: 避免位置特征的回馈循环

    • 内容的位置会显著影响用户与它交互的可能性(置顶App的下载量通常下载量更大)

    • 处理这类问题的有效方法是加入位置特征

    • 注意要保持位置特征和其他特征的分离性

    • 不要交叉(cross)位置特征

    • 理想情况下,让模型变成位置特征函数和其他特征函数的和

  • Rule #37: 评估训练和服务之间的偏差

ML Phase III: 缓慢提升、精细优化、复杂模型

  • Rule #38: 如果优化目标没有包含此信息,就不要浪费时间在这些新特征上。

  • Rule #39: 基于多个指标做决策

  • Rule #40: 保持集成模型Simple

    • 每个模型只能选择其一:只接收其他模型输入或只接收原始特征,不能两者兼有

  • Rule #41: 当性能平稳后,寻找新方向而不是精炼已有信息

  • Rule #42: 不要期望多样性、个性化和受欢迎程度有紧密联系

    • 在以受欢迎程度为目标的系统上,多样性和个性化通常得到更低的权重

    • 这并不是说多样性、个性化不重要,而是可以通过后处理来提高或者根据多样性和相关性改进目标

  • Rule #43: 其他人对不同的产品倾向相似,但你或许不同于此

具体查看:

  • part1

  • part2

  • part3

英文全文查看:Rules of Machine Learning: Best Practices for ML Engineering


很久很久没有给大家推送什么了,最近比较混乱,还好黄老师给我们翻译了一个干货,现在视觉和机器学习领域的入门门槛越来越低了,大家有没有蠢蠢欲动呢。

希望有想法的人早点开始呀。

不要等风都吹完了,你才想起来立flag。

公众号居然有400人了,而且还在不断增长,本着宁缺勿滥的原则,一般有干货,或者老王我自己写了东西才给大家推送(还有几个其他编辑不知道在忙啥,听说雷总分手了,无心运营),我们有一个qq技术交流群:593683975

当然交流交流生活也可以,不过我们IT人好像也没啥生活。

深更半夜的老王我穿着裤衩去水房打完水,看看文章,不亦快哉!

此处有风吹过~~~


点击下方阅读原文查看全部翻译

 类似资料: