如果你打算研究机器学习或是今后想从事数据科学相关的工作,Kaggle应该是一个绕不过去的名字。
Kaggle是2010年在旧金山创立的一个数据建模和数据分析竞赛平台,在很短的时间内就声名鹊起,去年被google收购,在业界具有很高的知名度和权威性,企业可以在上面发布数据和想要解决的问题,并进行“悬赏”,数据科学家和机器学习的爱好者们可以基于这个平台提交自己的模型和预测结果,平台会根据测试集对参赛者进行评分排名,排名最高几位可以分享奖金,更重要的是,kaggle为全世界数据分析及机器学习爱好者们提供了一个交流学习的平台,里面不乏机器学习的顶尖高手,各大公司也常年在kaggle上招募比赛名次好的团队和选手,良好的kaggle竞赛履历绝对是简历上的加分项,如果你参加过多次Featured(商业问题,有奖金)和Research(学术类)类型的比赛,并且多次进入TOP10%甚至TOP5%,那么你只用蹲在家里,猎头自会找上门。
Kaggle分为5个大的板块:
- Competitions(竞赛)
分为商业竞赛、学术类竞赛、入门级竞赛和一些由大公司如Google、Fackbook不定时举办的邀请赛。
- Datasets(数据集)
公司或个人贡献的各类型的数据集,搞机器学习最怕找不到数据,kaggle给大家获取数据练习提供了一些捷径。
- Kernels(数据分析及建模)
有点类似GitHub的代码管理,说直白点就是给用户提供了云上的数据分析和建模的环境,不过涉及到代码上传,我厂童鞋请慎用...
- Discussion(讨论区)
里面有全世界各地的数据科学、机器学习的专家和爱好者,针对题目、算法、建模等热烈的讨论,冥思苦想几天的问题看看大牛们的解题思路说不定就秒懂。
- Jobs(工作)
一些公司会直接在kaggle上放出数据挖掘、机器学习类的岗位,基本都是欧美的中小型公司。
一、Kaggle竞赛的一般步骤
下图是kaggle竞赛步骤的简单示意图,中间迭代的步骤也可以看做是一般机器学习建模及验证的步骤,需要特别注意的是,比赛结束以前,kaggle提供用来验证的测试数据集是Public数据集,提供给大家进行及时验证和反馈模型效果的,所以在Publlic Leaderboard上的排名和得分并不是最终结果,待比赛结束后,会用Private数据集进行最终的计分和排名,目的是防止模型过拟合,能真正在未知数据上取得好成绩的才是优秀的模型。
好了,说了这么多,不在Kaggle上刷刷榜,怎么好意思说自己在学习数据挖掘和机器学习呢:-),我们以Kaggle上最为知名的入门题目 Titanic: Machine Learning from Disaster(利用机器学习预测泰坦尼克乘客是否生还)为例,看看怎么玩Kaggle。
二、软件环境
sklearn + numpy + pandas + seaborn
我使用的是sklearn,很成熟的机器学习框架,最新版本也支持深度神经网络,当然数据处理和可视化还需要用到numpy,pandas,seaborn,当然你也可以使用tensorflow等其他框架,kaggle并不要求上传模型本身,只需要预测结果就可以了,强烈推荐大家使用python3.6的科学发行版Anaconda,这些库里面都有。
三、理解题目&下载数据
题目地址:https://www.kaggle.com/c/titanic
这是Kaggle上热度最高的题目,迄今为止参赛的队伍已经超过10000支,基本上所有参与Kaggle的人都会拿这个题目练手。所以题目虽简单,但取得好的名次也不容易。