[Kaggle] 数据建模分析与竞赛平台介绍

前段时间在学习MXnet提供的样例的时候接触了一下Kaggle的两届NDSB比赛,于是就稍微调研了一下Kaggle平台。

Introduction


Kaggle是一个数据建模和数据分析竞赛的平台。企业和研究者可在其上发布数据,统计学者和数据挖掘专家可在其上进行竞赛,通过“众包”的形式以产生最好的模型。
Kaggle可以分为Competitions竞赛Datasets数据集以及Kernel内核三个子平台、配套的Forum论坛模块以及供各类公司或组织招聘人才的Jobs模块。

Kaggle首页 Your Home for Data Science

Statistics

  • 截止到2016年5月份,Kaggle拥有超过536,000Kagglers,其中包括了IBM Watson以及Google DeepMind的研究团队。
  • Kaggle的数据涉及领域涵盖了计算机科学、计算机视觉、生物、医药、甚至冰川学等等。
  • Kaggle的竞赛吸引了超过1,000个队伍和个人参赛。他们中的许多人都在各类会议和同行评议的期刊上发表了与其比赛结果相关的文章。
  • 每个月Kaggle论坛有超过4,000条新帖子,每天Kaggle比赛有超过3,500次提交。

Competitions


Kaggle的比赛类型按照奖励内容可以分成3种,分别是提供奖金的(主要的!?)Featured类,提供实习、面试机会的Recruitment类以及纯粹作为练手的Playground类。

Kaggle比赛类别

参加比赛的流程相当简单,简单来说就是分为Download->Build->Submit三个步骤。

  • Download:Kaggle比赛的主持人(发起人)Host会准备数据和问题的描述,每个比赛都会有较详细的子页面来介绍背景、数据集、以及评价指标和提交方式等相关要求。Kaggle负责对这一过程以及竞赛的建构、数据的匿名化以及集成最终获胜的模型提供咨询服务。
  • Build:参赛者在本地构建出一个模型之后,输入比赛提供的数据集进行训练,得到的预测结果上传回Kaggle
  • Submit:参赛者相互竞赛以获得最优的模型,参赛提交会根据预测精度被立即评分,并实时显示。

在截止时间过后,竞赛主持人为“全球性的,永久性的,不可撤销和免版税地使用获奖作品”支付奖金。亦即竞赛获胜者的算法、软件和相关的知识产权是非排他性的 [from Wikipedia:Kaggle]。
除了公开竞赛以外,Kaggle还向活跃参与者提供私下的比赛,以及为大学团体提供Kaggle-in-Class项目。

比赛取得优胜的方法常常在Kaggle的博客No Free Hunch上展示。

比赛的奖金还是很诱人的

Datasets


Kaggle从2016年1月开始上线了Datasets数据集服务,收集了许多公共的数据集,提供数据下载、介绍、相关脚本Scripts以及独立的论坛等服务。

Kaggle Datasets

利用Kaggle的数据集,通过简单的Dig in->Build->Connect的步骤,就可以自己挖掘、分析公共数据集的内容。

  • Dig in:直接在Kaggle上使用其提供的交互式工具来进行数据分析,支持R/Python/Julia/RMarkdown/SQLite等语言,Kaggle通过调用相应的Docker容器来编译执行脚本。
    使用Kaggle提供的网页版交互式工具来进行数据分析
  • Build:在本地或者网页版工具上进行数据分析处理之后,可以发布自己发现的数据insights,使用Kaggle Kernels来coding,并能保存到自己的Kaggle账号仓库中。
  • Connect:可以很方便的查看其他人公开的Kaggle Kernels,或者在论坛中咨询对应数据集的相关问题。
Datasets例子:SEPTA-费城地区的区域铁路准点数据

Kernels (Scripts)


在刚开始调研的时候Kaggle的脚本仓库还叫做Scripts,现在改名叫Kernels了。据其官方博客所说,改名是为了更好的契合这个子项目的功能:Kernels提供了数据分析所需的环境、数据集、代码和输出样式(比如Python Notebook),将这些功能聚合在一起可以使得Kernels可以很方便的复现和分享。Kaggle的目的是要使得Kernels成为数据分析的核心,他们想将Kernels打造为一个能实现并分享所有数据科学工作的平台,包括与本地工具的结合(Kernels现在提供的环境库并没有办法做到包罗万象)、团队间的私有合作空间等等。

Kaggle Kernels

之前Datasets里面的网页版工具就是调用了Kaggle的Kernels平台,其一大好处就在于不需要将数据集加载在本地,Kernels中已经预先载入了庞大的数据集和基本的数据处理环境和库(甚至都不需要在本地配环境!)。这点真的很棒,毕竟庞大的数据要下载下来在网络条件不允许的情况下相当的耗费时间,在本地配好一系列的数据处理环境也不容易,Kernels借助Docker镜像解决了这一问题。
同时,Kernels采用了类似Github的方式,有版本控制,也可以fork他人的仓库。

Python Notebook in Kernels

Kernels还支持Python Notebook的在线查看,更加直观。

Others


除此之外,Kaggle还提供了一套用户的排名等级系统Progression System,等级可以从低到高分别是Novice,Contributor, Expert, Master, and Grandmaster。类似于游戏里做任务一样,在Competitions中完成指定类型的比赛、在Kernels中分享代码、在Forum中回答他人的问题都可以累计积分,达到一定要求之后就可以升级。

Kaggle Progression System

我觉得这个排名可能除了鼓励大家多参赛做任务升级之外,也是招聘时候的一个重要参考吧。毕竟举办类似比赛的目的基本上都是为了招人啊。

知乎上有一个主题参加kaggle竞赛是怎样一种体验?,可以看看大神们的打怪心得。

推荐阅读更多精彩内容