谷歌机器学习应用的四十三条经验法则

Google 的研究科学家 Martin Zinkevich 曾在 NIPS 2016 Workshop 分享了谷歌机器学习实践的四十三条法则。Martin Zinkevich 也在自己的博客上分享了这四十三条经验法则。文章《Rules of Machine Learning: Best Practices for ML Engineering》旨在帮助具备机器学习基础知识的朋友从谷歌机器学习最佳实践中获益。文章提供了一种机器学习风格,类似 Google C++ 风格指南以及其他流行的实用编程指南。如果你上过机器学习方面的课程或者构建或研究过机器学习模型,那么,你的背景知识足以让你读懂这篇文章。


预备


规则 1:不要害怕发布一款没有用到机器学习的产品。


规则 2:评估指标设计并落实优先处理的事情。


规则 3:在复杂的启发式问题上使用机器学习。


机器学习第一阶段:你的第一个工作流


规则 4:第一个模型要保持简单,设计好基础架构。


规则 5:确保基础结构的可测试性。


规则 6:复制操作时小心删除数据。


规则 7:利用启发式问题设计特征或从外部处理它们。


监控


规则 8:知道要进行系统刷新。


规则 9:输出模型前发现问题。


规则 10:当心未被报告的失败。


规则 11:特征栏包干到户,为之建立详细的文档。


你的第一个目标


规则 12:不要过度考虑选择哪个目标直接予以优化。


规则 13:为你的第一个目标,选择一个简单的、可观察、可归属的评估指标。


规则 14:从一个可诠释的模型开始能让调试工作变得简单些。


规则 15:在一个策略层中分开垃圾过滤和质量排名。


机器学习第二阶段:特征工程


规则 16:计划发布和迭代。


规则 17:从直接可以观察、被报告的特征开始。


规则 18:用能跨语境泛化的内容特征进行探索。


规则 19:可以的话,请使用特别具体的特征。


规则 20:结合并修改现有特征,以人类可以理解的方式创造新的特征。


规则 21:在一个线性模型中可以学到的特征权重数量与你的数据量大致成比例。


规则 21:清除你不再使用的特征。


系统的人类分析


规则 23: 你并不是典型的端用户(end user)。


规则 24: 测量模型之间的差量。-delta 参数。-


规则 25: 选择模型时,实用性能(utilitarian performance)比预测能力更重要。


规则 26: 在测量到的误差中寻找模式,并创造新特征。


规则 27: 尝试量化观测到的不可欲的行为(undesirable behavior)。


规则 28: 意识到相同的短期行为(short­term behavior)并不意味着长期行为相同。


训练表现与实际产品之间的偏差


规则 29: 要让你的实际产品表现得和你训练时一样好,最好的方法是在你的产品中保留训练的特征集,并将这些特征放到日志中,并在训练时使用它们。


规则 30: 重要性加权的样本数据,不要武断放弃。


规则 31: 注意,如果在训练和服务时点将表格中的数据加起来(join data from a table at training and serving time),表格数据会发生变化。


规则 32: 在你训练的流程和实际产品流程之间,尽可能地重复使用同一代码。


规则 33: 如果你用 5 号之前的数据生成了一个模型,那么用 6 号之后的数据来测试模型。


规则 34: 在使用二元分类器进行过滤时(例如垃圾邮件检测),用短期的牺牲获得清洁数据的优良性能。


规则 35: 注意在排序问题中的固有偏差(inherent skew)。


规则 36: 用位置特征避免反馈循环(feedback loops)。


规则 37: 测量训练/实际产品表现之间的偏差(Measure Training/Serving Skew)


机器学习第三阶段:放慢速度、优化细化和复杂的模型


规则 38:如果出现目标不对齐的问题就不要在新的特征上浪费时间。


规则 39:决定不只是基于一个标准做出。


规则 40:保证组件简单。


规则 41: 性能达到高峰时,要寻找新的信息源加以补充,而不是精化现有的信号。


规则 42:不要期望多样性、个性化或者与你所认为的流行性关联。


规则 43:在不同的产品中你的伙伴可能倾向于同一个产品。而你的兴趣不是。

入门谷歌入门机器学习应用