从零开始,教你征战Kaggle竞赛

本文将介绍数据科学领域大家都非常关心的一件事。事先完成一门机器学习 MOOC 课程并对 Python 有一些基础知识有助于理解文本,但没有也没关系。本文并不会向大家展示令人印象深刻的成果,而是回顾基础知识,试图帮助初学者找到方向。

文章结构:

介绍

Kaggle 综述

建立自己的环境

预测房价竞赛简介

加载和检查数据

我们的模型:决策树介绍、偏差-方差权衡、随机森林

预处理数据

整合并提交结果

介绍

目前,我们能在网上找到很多高质量的免费机器学习教程,如 MOOC。一年以前,我在 Udacity 接触了「机器学习入门」课程,我认为它对于新手来说非常友好。在这里,我学到了机器学习基础概念、很多流行算法,以及 scikit-learn 的 API。在完成课程以后,我非常希望学到更多,但陷入了短暂的迷茫。

在做完一番研究后,我认为下一步最优的选择是进军 Kaggle,它是谷歌旗下的一个预测模型竞赛平台。没什么比自己动手进行实践更好了!

初次尝试 Kaggle 竞赛是很紧张刺激的,很多时候也伴随着沮丧(得到好成绩之后这种感觉似乎还加深了!),本文将着重介绍如何入门并开始你的第一场 Kaggle 竞赛,在这个过程中尽快成长。

Kaggle 综述

房价竞赛登录页面

(如果你已经熟悉 Kaggle 网站了,本段可以跳过)

Kaggle 上有两个最适合新手的竞赛(某种程度上已成为 Kaggle 的「入门教程」):

Titanic(预测生存:一种二元分类问题):

https://www.kaggle.com/c/titanic

房价(预测价格:回归问题):

https://www.kaggle.com/c/house-prices-advanced-regression-techniques

我强烈建议你两项都尝试一下,本文主要介绍后者。不过,其中需要的知识大部分是通用的,所以你完全可以看完本文,然后尝试其他 Kaggle 竞赛或者数据科学问题,所以选择挑战其他竞赛也没有问题!

在每个竞赛的「Overview」(概览)选项卡上,你可以看到关于比赛及其数据集的一些信息、提交有效结果的评估标准(每个竞赛都略有不同),以及该竞赛的 FAQ。

在「Data」(数据)选项卡上,你可以看到数据的简要说明。我们需要的是这三个文件:train.csv、test.csv 和 data_description.txt(这是至关重要的,因为其中包含数据的详细描述),请将它们放在你可以快速访问的文件夹里。

「Discussions」(讨论)选项卡就像竞赛的专属论坛——不过不要低估它!在流行的竞赛中,这些讨论中经常包含非常有价值的信息,因为竞赛条款有时会要求参与者必须在讨论版上公开他们所使用的任何信息。例如,数据泄露是很难避免和处理的,偶尔也会发生在竞赛中。一方面,充分利用数据才能得到更高的分数赢得竞赛;但另一方面,结合了数据泄露的模型通常对于实践来说是无用的,所以也不被竞赛支持——因为它们使用了「非法」信息。勤奋的参与者经常会在讨论版上分享数据泄露以帮助竞赛环境变得更好。此外,Kaggle 的成员也会经常在其上分享一些信息,努力维护这个社区。在排行榜上名列前茅的参与者有时也会在其中分享自己的成功经验(通常会在竞赛结束前后)。

「Kernel」选项卡基本上是「讨论」版块的应用、代码版,我认为这是对于初学者而言最重要的一个版块。任何人都可以在其中分享自己的脚本或笔记,链接任何数据集与竞赛,形式可以是文档、注释、可视化和输出,每个人都可以观看、投票、复制这些内容,甚至也可以在浏览器上直接运行它们!我刚才提到的两个竞赛(Titanic、房价竞赛)都形成了有趣、漂亮、成功的 Kernel,强烈推荐进行过自己的尝试之后浏览这个版块。Kaggle 正在不断提升 Kernel 的功能,现在甚至有一个「仅限 Kernel」、奖金为 10 万美元的竞赛。不过,Kernel 中的讨论往往是硬核的,缺乏有关概念的解释,或者说预先认为你已具备相关知识,所以有时了解起来会有些许困难。

建立自己的环境

我强烈推荐使用 Python3.6 在 Jupyter Notebook 环境中处理任何数据科学相关的工作(其中最流行的发行版称为「Anaconda」,包括 Python、Jupyter Notebook 和很多有用的库)。然后你就可以通过在终端(或者 Anaconda GUI)输入 Jupyter Notebook 随时启动该环境。除此之外,本文展示的内容也可以在 Kaggle 网站上的私人 Kernel 上完成(完全在浏览器上工作),这和 Jupyter Notebook 是等价的。

阅读原文

你可能感兴趣的:(从零开始,教你征战Kaggle竞赛)