要想做出好的产品:
努力去做一个优秀的工程师,而不是一个机器学习专家
事实上,你所面临的绝大多数问题,都是工程问题。 对于一般的现实问题,一个优秀的机器学习专家穷其所能,机器学习算法带来的收益也不会比好的特征带来的收益更大。
所以一般的套路是这样的:
- 先建立一个从头到尾稳固的pipeline
Eric: 意思是最开始就把 training turning predicting给串起来。事实证明这样可以大量节省你的时间,提高试错的效率。研发效率在工业界是非常重要的。
- 从一个合理的目标开始
Eric: 凡事都先设一个小目标,比如先赚一个亿
- 用简单的方式增加符合常识的特征
Eric: 人工特征其实比想象的更加重要
- 确保你的 pipeline 一直稳固
Eric: 看起来好像和1重复,其实意思是说在你不断尝试新特征、迭代模型的过程中,pipeline 一直稳固可用。 实际经验中,我们真的是容易忽略掉 pipeline 的持续可用,比如日志格式变化了,导致特征错乱或失效等等。
单单上面这些方法用好了,就足够让人满意好一阵子,并且产生不错的收益了。当你发现一些简单技巧没法取得更大进步的时候,再换其他的方法。但是你要知道,系统越复杂,那么产出就越慢。
一旦所有的简单 tricks 都用完了,那么就可以再尝试下前沿的机器学习方法。你可以查看第三部分,来获得一些帮助。
这篇文章,总共分成四个部分:
-
第一部分帮助你理解什么时候才是构建机器学习系统的好时机
-
第二部分是关于发布你的第一版pipeline
-
第三部分是关于如何开始和不断的往你的 pipeline 里增加新特征,如何去评价你的模型好坏和训练测试偏差
-
最后一部分是当碰到瓶颈时候应该怎么做
-
随后是相关工作以及附录,告诉你一些文章中例子的背景知识