カレーちゃんブログ

Kaggleや競技プログラミングなどのこと

4/22技術書典Kaggle本 タイタニックチュートリアルのコンペページ翻訳を公開します。(その1)

4/22の技術書典で販売するKaggle本の一部を公開します。今回は、タイタニックコンペのページの翻訳です。Kaggle本では今回翻訳したもの(単純に翻訳したもの)だけではわかりにくいところを解説しており、その部分についてはその2で公開します。

本の詳細については、次のリンクから確認ください。 技術書典4のkaggle本のサポートサイト - kaggleを全力でやります

Overview (概要)

Description (説明)

ここから始めよう

もし、データサイエンスや機械学習に慣れていない、あるいは、Kaggleのコンペの簡単な説明を探しているのであればこのコンペから始めよう。

コンペの説明

タイタニック号の沈没は、歴史上最も悪名高い船の事故の1つです。 タイタニック号は初めての航海中の1912年4月15日に氷山に衝突して沈み、2224人の乗客と乗組員のうち1502人が死亡しました。 この驚異的な悲劇は国際社会に衝撃を与え、船舶の安全規制に影響を与えました。 この事故がこのような大きな事故となった原因の1つは、乗客と乗組員に対し十分な救命艇がなかったことです。けれども女性、子供、高い客室クラスの人などは、他の人よりも生存率が高かったという事実があります。

このコンペのチャレンジでは、どのような人々が生き残る可能性が高いのか分析してください。 特に、どの乗客がこの悲劇から生き残ったかを予測するために、機械学習を用いましょう。

練習するスキル

・ 2値分類

・ Python、Rの基礎

Evaluation (評価)

やること

コンペ参加者のするべきことは、乗客が、タイタニックの沈没で生存したか、死亡したか予測することです。

テストデータのそれぞれの乗客に対し、「Survived」変数を0または1の値で予測する必要があります。

スコア

正しく生存を予測した乗客の割合がスコアになります。これは単に「accuracy」 (精度)と表記されます。

提出するファイルのフォーマット

 ヘッダ (1行)と418行で構成されるcsvファイルをサブミットする必要があります。もし、余分な列または行がある場合には、サブミット時にエラーが表示されます。

サブミットするファイルは次の2列である必要があります:

・「passengerId」 (並び順は任意)

・「Survived」 (1 (生存)又は0 (死亡)のどちらかからなる予想)

(サブミットするデータの例)

PassengerId,Survived

892,0

893,1

894,0

Etc.

Data page」でサブミットファイルのサンプル (gender_submission.csv)をダウンロードできます。

Frequently Asked Questions (よくある質問)

「Getting Started competition」って?

Getting Started competitionは、機械学習のバックグランドがない人のためにKaggleのデータサイエンティストによって作成されました。このコンペは、データサイエンスを初めて勉強した、あるいは、MOOC1を終えてKaggleを始めたい、という方に最適です。

Getting Started competitionでは、Kaggleの仕組みを知り、機械学習の概念を学び、コミュニティの人たちと出会います。なお、賞金はなく、またrolling timeline2を採用しています。

「Private Leaderboard (非公開スコア)」と「Public Leaderboard (公開スコア)」の違いは何ですか?

Kaggleのスコアには、参加者が特定のデータに「overfitting (過学習)」するのを防ぐため、非公開スコアと公開スコアがあります。もしモデルが過学習している場合、モデルを訓練したデータ以外のデータには適合しません。これは、類似の別のサンプルでは、モデルの精度が低くなることを意味します。

Public Leaderboard (公開スコア)

どの参加者も、テストデータの予測 (サブミットしたデータ)の50%が公開スコアに割り当てられます。参加者が、公開スコアでみるスコアは、この50%のスコアになります。

Private Leaderboard (非公開スコア)

残り50%の予測は非公開スコアに割り当てられます。参加者は非公開スコアをコンペが終わるまで、見ることができません。コンペが終わると、非公開スコアが公開され、スコアが表示されます。非公開スコアの得点は、コンペの勝者を決定するために使用されます。なお、Getting started competitionsでは、非公開スコアは公開されません。

どのようにチームを作成すればよいですか?

「competition rules」に同意すると、 (自分ひとりの)チームが作成されます。チームに他のメンバーを招待したり、他のチームとのマージ (合併)を承認したり、チーム名などの基本情報を更新したりするには、Team pageに移動します。

チームを組むことが新しいスキルを習得し、Kaggleを楽しむための最良の方法であると、多くの「Kagglers」から聞いています。もしチームメイトがいない場合、ディスカッションフォーラムでチームを組むことを望んでいる人がいないか尋ねてみましょう。

Kernelsとは何ですか?

カーネル環境は、再現性のある共同分析を可能にするクラウドコンピューティング環境です。カーネル環境は、RとPythonのスクリプトとJupyterノートブック及びRmarkdownをサポートしています。Kernelsのタブに移動すると、このコンペで公開されている全てのコードを見ることができます。カーネル環境を使用してデータサイエンスを学ぶ方法の詳細については、チュートリアルタブを参照ください。

私のチームは何故leaderboardから消えたのですか

Getting Started competitionsの精神を維持するために、サブミットから2ヶ月で入れ替える仕組みにしています。つまり、サブミットから2ヶ月経過すると無効になり、リーダーボードにカウントされなくなります。チームに過去2か月間サブミットがない場合、チームはリーダーボードから落ちます。

こうすることにより、リーダボードを管理しやすいサイズに保ち、リーダーボードのスコアが多すぎることで、新しく始める人が迷子になることを防ぎます。 「私は高いスコアを得るために、頑張ったの元に戻して」という方は、「rolling leaderboard」に関するディカッションを読んでください。

サポートに連絡するにはどうすればよいですか。

Kaggleには専用のサポートチームがないため、適切なフォーラムで質問することで、より迅速に回答を受け取ることができます。 (このコンペでは、タイタニックのディスカッションを利用すると良いでしょう)。

サポートは、すべての参加者に起こるであろう問題のみが対象です。サポートに連絡する前に、ディスカッションにその問題の答えがないか確認するようにしてください。見当たらない場合は、フォーラムに問題を投稿してください。フォーラムには、データ、評価方法、さまざまなアプローチに関する有用な情報が満載であり、フォーラムを使用することをお勧めします。フォーラムで知識を共有すれば、他の方は更に多くのことを共有するでしょう。

問題が解決しない場合、またはすべての参加者に対して有益であると思われる場合は、コンタクトページから連絡ください。

Tutorials (チュートリアル)

Kernels環境で学ぶ

Kaggleのカーネル環境では、ほとんどのコンペのデータセットをブラウザ内で扱え、多くのデータサイエンス用のパッケージとライブラリが使えるようになっています。 また、カーネル環境は、RとPythonのスクリプトとJupyterノートブック及びRmarkdownをサポートしており、提出ファイルを作成することもできるし、コンペのデータを探索することもできます。

カーネル環境を使うには、次のいずれかの方法があります:

1.「Kernels」タブから新しい「script」又は「notebook 」を作成する方法

2.既存のカーネルを「Fork」 (コピー)することにより、編集して動かせるコピーを作成する方法

コンペを始めるのに役立つ最良のカーネルを選びました。次のカーネルを使用して、サブミットファイルを作成したり、データを探索することができます。スクリプト又はノートブックを開いて「Fork」をクリックすると編集可能なコピーが作成されます。

Pythonで始める方へ

人気のPythonモジュールを使用するこの簡単なアプローチから始めてみましょう。

Titanic Data Science Solutions Python Notebook

  • pandasを使用してデータを操作します。
  • matplotlibとseabornを使用してデータを可視化します。
  • scikit-learnを使用して予測モデルの構築について学びます。

次のカーネルは、より高度なテクニックと複雑なアプローチが含まれます。

An Interactive Data Science Tutorial

  • Jupyterノートブックの使い方に慣れる。
  • 機械学習における特徴量選択の重要性を学ぶ。

Machine Learning from Start to Finish with Scikit-Learn

  • クロスバリデーションを使用して、モデルが新しいデータに汎化していることを確認する。 (すなわち、オーバーフィットしていないということ)
  • パラメータチューニングとグリッドサーチを使用して、いくつかの分類アルゴリズムの中から最適なモデルを選択する。

XGBoost Example

  • 極めて人気のある「XGBoost」アルゴリズムを学ぶ。
  • リンク先に移動し、「show more」をクリックするとコードを見ることができます。

An Introduction to Ensembling/Stacking in Python

  • いくつかのモデルの予測を組み合わせる「アンサンブル」の基本的なスキルを使う

Rで始める方

Exploring Survival on the Titanic

  • 特徴量選択と可視化の基礎。
  • データの欠損値をどのように扱うか。
  • ランダムフォレストを用いて予測を行う方法。
  • もしRmarkdownに慣れていない場合、「Code」タブをクリックしコードを見ることもできます。

Families are Not Good For Survival

  • モデルの予測を理解するために必要なこと。
  • 異なるモデルを比較するために、決定木の可視化をする。 *特徴量が予測精度にどのように影響するか見極める。

Kaggle外のチュートリアル

  • R & Python (interactive): Titanicのコンペで、最初の投稿ファイルを作 成するための無料の対話式のチュートリアルが、DataCamp (R / Python)とDataquest.io (Python)にあります。これらのチュートリアルは、機械学習及びRまたはPythonにはじめて触れる方を対象にしています。

  • R (local):あなたのローカルPCにRをインストールし、最初のサブミットファイルを作成する方法についての「Kaggler」作成のチュートリアル

  • Excel: 使い慣れたエクセルによる基本的な機械学習のコンセプトに関するチュートリアル

Data

概要

データは次の2つのグループに分かれています。

  • training set(train.csv) ・・・ トレーニングデータ
  • test set      (test.csv)  ・・・ テストデータ

トレーニングデータは、機械学習モデルを構築するために使用する必要があります。トレーニングデータは、乗客それぞれの生存に関する結果 (正解データ)を与えます。機械学習のモデルは、乗客の性別やクラスのような特徴量に基づいています。新しい特徴量を作成して使うこともできます。

テストデータは、モデルが新たなデータに対してどの程度うまくいくかを確認するために使用する必要があります。テストデータは、各乗客の生存について正解を与えていません。これを予測するのがあなたの役目です。トレーニングデータで作成したモデルを使用して、テストデータの各乗客がタイタニックの沈没時に生存したか、亡くなったかを予測します。

また、提出ファイルのサンプルである、gender_submission.csv (女性乗客のみが生き残っていると予測したデータ)が与えられています。

データの定義

変数 定義 Key
survival 生存 0=No,1=Yes
pclass チケットのクラス 1=1st(Upper)
2=2nd(Middle)
3=3rd(Lower)
sex 性別
Age 年齢
sibsp 乗船している兄弟・配偶者の数
parch 乗船している両親・子供の数
ticket チケットナンバー
fare 運賃
cabin キャビン番号
embarked 乗船した港 C = Cherbourg
Q = Queenstown
S = Southampton

変数について

pclass:

社会的経済地位のかわり
1st = 上位
2nd = 中間
3rd = 下位

age:

1歳未満の場合は小数点以下の端数を含む。年齢が推測されている場合は、「xx.5」としている。

sibsp:

Sibling = brother, sister, stepbrother, stepsister (兄弟、姉妹、異母 (異父)兄弟姉妹)
Spouse = husband, wife (mistresses and fiancés were ignored) (夫と妻 (愛人と婚約者は無視されている))

parch:

Parent = mother, father (母、父)
Child = daughter, son, stepdaughter, stepson (娘、父、継娘、継子)
何人かの子供は、乳母と旅行しているため、parchは0となっている。

Rules (ルール)

参加者ごとに1つのアカウント

Kaggleに複数のアカウントを作ることはできません。従って複数のアカウントからサブミットすることもできません。

チーム外で、情報を私的に共有してはいけません

チーム外でコードやデータを個人的に共有すること (Privately sharing)はできません。フォーラムで全ての参加者が利用できるのであれば、コードを共有可能です。

チーム管理

チームマージ (チームを合体すること)はチームリーダーが行うことができます。チームマージするには、マージ後のチームの合計のサブミット回数が、マージ日の最大許容回数以下である必要があります。最大許容回数は、「1日あたりのサブミット回数×マージ日までのコンペ開催日数」です。

チームサイズの上限

チームサイズの上限はありません。

サブミットの制限

1日あたり最大10回のサブミットができます。 ジャッジのために、提出するサブミットを5つまで選択することができます。

コンペのタイムライン

  • スタート:2012/9/28 9:13 PM UTC
  • チームマージの期限:なし
  • 参加期限: なし
  • 終了:2020/1/7 12:00 AM UTC

このコンペは、機械学習を始めるための楽しいコンペです。 タイタニックのデータはインターネット上で公開されていますが、それを見ると、機械学習を用いて予測する楽しみをなくしてしまいます。なので、答えを見ずにやるべきだと非常に思います。


  1. Massive Open Online Course またはMassive Open Online Courses の略。インターネット上で誰もが無料 で受講できる大規模な開かれた講義のこと

  2. 私のチームは何故leaderboardから消えたのですか参照