转:十步制胜 Kaggle 数据科学竞赛

来源:互联网 发布:linux c list用法 编辑:程序博客网 时间:2024/05/14 19:03

Kaggle 是一个领先的数据科学比赛平台,由最初的 KDD 和 Netflix 以及其他比赛发展而来。如果你是(或想要成为)数据科学家,参加 Kaggle 比赛是一个提升技能和名声,同时还可能赢得一些奖金的有效方法。这篇文章总结了我和其他参赛者的经验,提出了顺利完成一个 Kaggle 比赛的 10 个步骤。

由于这篇文章是为 Kaggle 比赛而提出的,所以对于一个有明确分析数据和预测建模方法的问题,其中的大部分步骤或许是无用的。然而,在实际问题中,数据科学家常常要和问题相关人员花费大量时间去明确问题细节并搜集相关数据。解决一个类似 Kaggle 比赛的问题往往是一个数据科学家工作中比较有趣的部分。

一:阅读比赛说明

令人吃惊的是有太多人忽略细节了,比如忘记首次提交的截止日期。明确比赛时间、能够复述问题要求、提交正确格式的答案等等细节问题这些都非常重要。正如平常一样,在开始建模和编程之前,必须要明确你在做什么。

二:理解评判测试标准

圆满完成比赛的一个很重要的部分就是明确评判标准。通过利用符合评判标准的优化方法可以很容易的大幅提升分数。一个经典的例子就是优化平均绝对误差和平均方差。对于一个给定的数据集,在没有更多的数据的时候,标示最小化平均绝对误差的指标是中位数,而对应于平均方差的则是均值。在 EMC 数据科学马拉松中,在没有足够数据的情况下,我们采用了中位数而没用均值最为标准进行评价,事实证明这样做的效果很好。

三:了解数据

在 Kaggle 比赛中,严格专业化(不要过度拟合数据)是非常正确的。这并不像机器学习的学术论文那样,研究人员可以在不同的数据集上测试提出的模型。这也不像应用型的工作那样关心数据漂移以及预测结果是否有意义。在比赛中,探索数据中的异常现象可以给予一定的帮助。例如在之前提到的马拉松赛中,我们注意到我们必须预测每个小时的空气污染情况,然而测量结果却并没有每个小时都能实时更新(可能是因为测量设备的限制)。因此我们最初做了一个简化版的模型去预测每个小时最后的测量值。这反而成了我们最具价值的切入点。显然,也就是说当时我们预测的是测量设备的测量结果而不是实际的污染情况—这在现实生活中绝对是要避免的。

四:首先明确要做什么而不是如何做

许多初学者总是过度担心需要用什么工具(Python 还是 R, 随机森林还是深度学习?),其实这个时候他们应该考虑的是如何理解数据和应该以何种模式建模。例如在参加 Yandex 个性化搜索比赛的时候,我们花了很多时间分析数据,考虑对于用户来说什么才是有意义的。这样思考很容易想出方案,因为我们都用搜索引擎。对于任何一个问题,必须对数据和问题细节足够熟悉,与数据融为一体才能高效的思考。

五:建立本地验证环境和评判标准

相比于只依靠积分榜,拥有自己的评判标准可以加速进程并做出更加可靠的结果。只有在数据量太小或者已经没有时间(比赛即将结束)的情况下才能够跳过本地的标准。如果你的本地标准建立的比较好而且与积分榜的评价标准一致(你需要做一两次提交测试一下),没有必要提交太多次结果。少做几次提交,降低过度拟合积分评价标准的概率,否则会对结果造成灾难性的影响。

六:关注比赛论坛

一定记得关注和订阅论坛信息,以便接收关于数据和比赛的相关信息提示。同时,尝试搞清楚你的对手在做什么也是很有价值的。一个极端的例子就是最近在比赛中出现的分享代码的趋势—尽管依靠这些代码不是一个好主意,但也应该要注意到它们的存在。最后,阅读论坛上的赛后总结是学习他人和提升自己非常有效的方法。

七:专注做研究

对于任何给定的问题,很可能有很多人穷其一生在需找答案。这些人(大部分是学者)或许已经发表了一些你可以从中学习的论文,基准和代码。这种做法对我总是很有效,我总是能学到一些新东西并将其成功的运用到每次比赛中。虽然没有完全赢得比赛(当然这也不完全取决于你),学习和理解更深的知识也是比赛必将带来的奖励。

八:准确使用基本原理和方法

应用比较复杂的方法可能会很有趣,但经常是那种最基本的方法才能让你走的更远。常用的算法大都在大部分语言中有较好的实现,所以没有理由不使用。然而,在实践中实验算法时,必须对一些主要参数做一些调整(比如随机森林中的树的数量或线性模型的正规化)。毫不修改的运行一个算法甚至比不运行还要差劲,因为可能得到一个错误的结果—放弃某些东西有时真的很有效。

九:汇总

不要和组合方法搞混了(当然组合方法也很重要),这里的汇总是指把我们独立建立的模型结合起来。在高知名度的比赛中,经常会有通过队伍 相互之间结合模型从而大幅提升效果的例子。在单独作战时这样做就更加值得了,因为几乎没有比赛是一个模型就能获胜的。

十:获得胜利

通常情况下,步骤一到五只会在每次比赛和问题中经历一次,步骤六到九则会在整个过程中不断平行重复的循环,直到最后。一般来说,比赛的总体表现与投入时间的相关。如果你不放弃,坚持尝试并不断学习和改进,就会有很好的结果。最重要的步骤是步骤零:承诺坚持参加和完成比赛。如果做到这些,你已经获得了学习和成长成为一个数据科学家的荣誉。

原创粉丝点击