DataScience

はじめてのKaggle。まずはタイタニック(Titanic)問題をやってみよう

やっと時間が取れて、久々にブログ書いてます。
今回は、データ解析においてとても有名なコンペサイトである「Kaggle」をやってみました。Kaggleは、サイト上にいくつかの課題があり、それぞれデータが与えられて、様々なデータ分析手法を用いることで予測精度(解答率)を、世界中の人たちと競うプラットホームです。

Kaggle

それで、リアルタイムで実施されているコンペで上位5位?とかになるときちんと賞金がもらえたりして、中々すごいなと思うのですが、今回は、まあ練習がてらということで、実際にやってみた、程度で練習してみようかなと思います。

準備

まずは、手順としては

  • Kaggleに登録
  • 解く課題(コンペ)を決めて、要項などを読む
  • データをダウンロードして、実際に手元で分析する
  • 分析結果をSubmitしてScoreを確認する

という流れになります。一個一個説明しようかなと思ったのですが、以下のQiitaの記事がとても良くまとまっていて、とりあえずこれでアカウント作成・データダウンロード・分析・結果Submit、の流れが分かるかと思います。(UIは少し古い感じですが、ほぼほぼ同じです。)

Kaggle事始め

分析概要

Kaggleにはいくつかの課題があるのですが、手始めに一番最初に分析するのが、大体「Titanic」です。上のQiitaの記事でも、Titanicを扱ってます。
既にコンペ自体は終わってしまっていますが、今でもデータダウンロードしてきて、分析して結果をSubmitすることで、Score及び順位を見ることができます。

Titanicの課題内容をざっくり言うと、1912年に沈んでしまった、あのタイタニック号の沈没事故において、いったいどんな人が生き残りやすく、どんな人が生き残れなかったのか、その傾向を予測しましょう、というものです。
データを見ればわかりますが、性別・年齢・客室クラス・家族構成などの属性があり、それらの変数を利用して、予測します。

Titanic: Machine Learning from Disaster

Kaggleの中でもアップされているのですが、この紹介動画は、中々シュールですね。(笑)

Trainデータには、約900人分のデータがあって、その人たちは上記の属性情報に加えて、生き残ったか/死んでしまったか、の情報も掲載されています。一方で、Testデータでは上記の属性はありますが、生き残ったか/死んでしまったかの情報は載っていないので、そこを予測していくことになります。

その予測度合い(正答率)が、どれだけ高いかによって、Scoreが決まります。Scoreの評価方法は、Kaggleの課題によって異なりますが、これもコンペ情報の中にきちんと書いてあります。

分析内容

おなじみのAnaconda + Jupyter Notebookで分析しました。言語はPythonです。

データ分析の環境構築にはJupyter Notebookが良い

それで、さすがにいきなり自分一人でやっても、テキトーに重回帰分析とかで終わっちゃうなーと思い、それだと少しつまらないと思ったので、Kaggleでよく見られているScriptを写経することにしました。(笑)

でも結論、これめっちゃ勉強になったんで、やはり有識者たちのスクリプトとか分析手法を見て、勉強するの
は大事だなと感じたのです。

今回参考にしたのは、このOmar氏の分析です。

Omar El Gabry | A Journey through Titanic

Kaggleにはほんとに色んな人のコードがアップされているので、どれにしようか迷ってしまったのですが、TitanicのKernel(色んな人が分析過程・結果を載せるページ)の中で良く読まれていて、かつ分析内容もわかりやすく、シンプルなものだったので、今回はこの人のコードを参考にすることにしました。

以下が分析内容です。ちょっと長いですが、Jupyter Notebookの内容をそのまま貼り付けてみました。

余談ですけど、Jupyter Notebookを僕のWordpressに何故かうまく貼り付けることができず…色々な方法があるらしいんですけど、htmlファイルをWP内に貼り付けるとか、なぜかできなかったです…。なので、以下の記事にあるようなGistにNotebookをアップする方法で行いました。結果的に、いい感じなんじゃなかなと思います。

JupyterをGistで共有する。ブログに貼れるぞ。

感想

ほぼ写経でしたが、コード内容を理解するのも勉強になったし、グラフ化やデータ処理の中身も勉強になって、とても良かったんじゃないかとしみじみ。

それで、やはり内容見ても分かるけど、8割がたデータの処理とか可視化の時間なんですよね…なので、ここの実装のスキルと速さをどれだけ上げるかで、アウトプットの量と質が決まってくるなーと改めて思いました。やっぱある程度のコーディングスキルは必要ですね…

あと分析手法自体に関しては、シンプルにライブラリに突っ込んで終わりで、スコアの良いものでOK、という締め括りだったのですが、やはりビジネスに応用していくという意味では、この場合にはこういう理由でこの手法が良くて、それで実際にスコアも良いよね、って言えるようになるのも、とても大事だと思うんで、そこの知識とか経験量も必要だなと。
なんでも必要ですね。(笑)

次回は、もう一回Titanicで、少し込み入った分析論法のものを取り扱ってみたいと思います。

関連記事

  1. DataScience

    AWS上でJupyter Notebook環境を構築

    以前、データ分析用のIDEであるJupyter Notebook環境を…

  2. DataScience

    データ分析の環境構築にはJupyter Notebookが良い

    最近、データ分析系の仕事が始まったので、このブログもそんな記事が多くな…

Profile

プロフィールはこちら

 

休学してインターンしてます。データサイエンス修行中。おもしろいことしたいです。

カテゴリー

  1. DataScience

    AWS上でJupyter Notebook環境を構築
  2. DataScience

    データ分析の環境構築にはJupyter Notebookが良い
  3. DataScience

    はじめてのKaggle。まずはタイタニック(Titanic)問題をやってみよう
  4. Drone

    ドローンPhantom4始めて飛ばしてきた!
PAGE TOP