我想提出的是:肯定有帮助,但不能认为比赛成绩好就一定能证明你的工作能力优异,Kaggle竞赛的内容不等于机器学习/数据挖掘工作的全部。
因此本篇回答的主题是,机器学习工程师/科学家的核心工作内容到底是什么。理解了这个问题,那么kaggle竞赛有什么帮助也便有了答案。
一个好的机器学习工程师,或者说一个机器学习工程师想成长到Tech Lead(技术负责人),需要有用机器学习解决问题的能力。这里有三个关键点:
一个是用“机器学习”,一个是“解决”,一个是“问题”。
一、问题
先说“问题”。在工业界,问题的定义往往是不清晰的,广泛的,甚至是需要Tech Lead自己去发现的。而在Kaggle, 问题是定义明确的,衡量指标是确定的。
举一个例子,Kaggle的一个著名的Zillow房价预测的比赛问题
https://www.kaggle.com/c/zillow-prize-1,就非常明确的说明了参赛者的任务就是用这样一个固定的数据集和这样一些特征,来预测实际房屋售价,并用log error(测录误差)这样一个Metric(指标)来衡量。这是一个被定义得非常明确的问题。而在工业界,一个组往往有一个明确的目标,比如提升推荐系统的线上指标,但是工程师需要去思考这样一个目标可以被拆分成哪些问题或者项目,每个问题或者项目又是否可以被机器学习解决。工程师需要自己去定义问题和项目,去发现目前组里不足然后把不足转化为一个明确的机器学习问题去解决。
二、解决
再说“解决”。在Kaggle,一个机器学习项目主要需要解决的是建一个好的模型。而在工业界,建模只是需要解决的事情之一。比如,机器学习工程师在建模前,首先要解决数据的问题。比如:应该用什么数据集?从公司的数据库里可以拿到哪些特征?特征在线上能实时获得吗?特征线上的空缺率高不高?这些问题都是Kaggle选手不需要去解决的,但是在工业界却是很常见的问题。再比如,模型上线后是否需要迭代?迭代的话频率要多高?迭代训练策略应该是怎么样的?等等。
这也是为什么,硅谷
西雅图的大型科技公司在面试高级机器学习工程师时,都会有一轮ML Design的轮次。这个ML Design的轮次一方面就是在考察面试者有没有发现并解决以上这些,除了
建模之外工业界常会遇到的其他问题的能力。
三、机器学习
最后是“机器学习”。Kaggle比赛使用的机器学习算法模型和工业界模型有一定的区别。Kaggle的建模重视模型的效果,但是在工业界,除了模型效果,我们同样重视模型在线上的推理速度,模型本身的大小,模型训练时间与资源等等。有时候,我们甚至会牺牲模型效果,来获得更小的模型和更低的线上延迟。
建一个好的模型的确是一个机器学习工程师的核心技能,但是这并不是一个好的机器学习工程师最稀缺的技能。目前机器学习社区代码高度开源,机器学习与深度学习框架相对成熟,先进模型基本都有开源实现。在这样的背景下,就业市场上能写出一个复杂模型的人并不在少数。同时,AutoML的出现也让建模这件事受到了巨大的挑战,比如我们组的用AutoML搜索出来的模型结构已经不输最先进模型的效果了。
总而言之,Kaggle竞赛可以帮助证明你建模的相关能力,但这并不是一个好的机器学习工程师最核心的技能,这是需要意识到的一点。
希望以上分享对你有所帮助!