Rules of machine learning
这篇文章是翻译的martin Zinkevich 的文章。如果大家有兴趣请参照原文
概述
基本方法
- 确保工作流是端到端的(当有新的标记数据加入时,可以很快的迭代模型)
- 目标函数(损失函数)要合理
- 添加符合常识的特征
- 开发过程中,一定要保证工作流稳定
开始之前
Rule #1: 不要过度使用机器学习方法
在不能获得很多数据的情况下,请谨慎使用机器学习
Rule #2: 首先,设计和实现评价标准(metrics)
在开发任何模型前,请先确定评价方法,并且在开发过程中始终通过评价方法追逐模型的表现。如果模型的有些表现无法合理表示,请添加多种评价方法来对模型有一个完整的评估。
没有最好用的评价方法!不同的评价方法表示的是模型表现的不同侧面。
Rule #3: 要让机器学习模型更容易更新和维护
ML Phase I: First Pipeline
Rule #4: 将项目架构搞对而不是把模型搞好
Rule #5: 好的架构应该是和算法独立的
确保所使用的项目架构可以很容的替换核心的学习算法,尽管有些算法对于输入的要求不同,也尽可能的保证适配器能够合理的修正输入特征。
Rule #6: 确保数据输入管道没有遗留重要信息
很多时候我们会使用一些旧的输入管道,这时候就有可能因为使用旧管道而遗漏掉某些特征
Rule #7: 知道你的部署系统多长时间更新一次
根据数据更新的频率和用户需求来确定多长时间更新一次模型
Rule #9: 在输出模型之前确认问题
Rule #10: 部署模型之后,观察错误预测
Rule #11: 确定特征的产生者和相关文档
Rule #12: 不要过度在意学习算法的目标函数
过度思考目标函数会让自己陷入僵局。也许不同的metric之间是相关联的。提升了一个metric,另一个metric自然也会增长。
Rule #13: 选择和用户行为关联度较高的metric
Rule #14: 从可以被理解的模型开始
可以被理解的模型也许不会给你很好的结果,但会让你更好地理解要解决的问题。
Rule #15: Separate Spam Filtering and Quality Ranking in a Policy layer.
ML Phase II: Feature Engineering(特征工程)
Rule #16: 为发布和迭代做好规划
永远不要担心当前模型将会是最终模型,模型应该永远处于迭代的生命周期中
你的系统应该可以灵活的添加和归并特征,在开发过程中应该注重这一方面的灵活性。