Kaggle とは
Wikipedia
Kaggleは企業や研究者がデータを投稿し、世界中の統計家やデータ分析家がその最適モデルを競い合う、予測モデリング及び分析手法関連プラットフォーム及びその運営会社である。
雑に言うと、TopCoderのデータサイエンティスト版
経緯
今どきのエンジニアの嗜みとして ITエンジニアのための機械学習理論入門 は一通り読んだが、データ解析系のお仕事を仕事をしているわけではないため仕事で機械学習を使う機会はない。
実際に手を動かさないと機械学習は習得できないが、手を動かすにもデータセットの用意等で準備がかかり大変そうだし、実際なにを教材(MNIST?)として勉強するのが適当なのかわからない。
今どきのエンジニアとして、オンライン学習やコミュニティをきちんと活用できるようになり、あわせてそれらの知見を得ておきたい。
チュートリアルとしてやってみた Dataquest の Kaggle competitions がよかったのでご紹介。
この記事の Goal
Kaggle の Competition の Titanic: Machine Learning from Disaster に実際に参加し、コンペで自分の順位を獲得する。
Getting Start
前提
機械学習でロジスティック回帰やランダムフォレストを学んだことがある
pythonのコードをある程度かける
python実行環境
あるといいもの
jupyter notebookが書ける環境
英語の技術サイトを読むのにそれほど抵抗がない程度の英語スキル
今回なくていいもの
GPU環境
ディープラーニングの知識
Dataquest の Kaggle competitions tutorial
kaggle competition titanic で適当にググルと でてくる オンライン学習サイト。
Free Kaggle Tutorial - Getting Started with the Titanic Dataset
google か facebook アカウントがあれば ログインしてすぐ tutorial をはじめられる。
Titanic の乗客の生存データを元にテストデータの乗客に対して生存確立を算出するパラメトリックモデルを作成してモデルの性能を競う Kaggle のコンペを題材としていて、 機械学習の基本的なプロセスのデータの前処理、モデルの作成、トレーニングデータセットの学習とテストデータセットの予測までを、要所要所でpythonのコードを書く問題を解きながら Tutorial を進めていく。
この画面は、Dataquest の tutorial の画面の一例。
左に例題が出て、右の画面でpythonのコードを書いて、実行ボタンを押してコードの結果が正しいと good work
とでてきて次の画面に進める。
Tutorial では最後に実際に作ったモデルのテストデータセットの予測結果を kaggle に submit するファイルを生成するところまでサポートしている。
Dataquest の Kaggle Competition のコースは二つあり、最初のコースは単純なロジスティック回帰のモデルで一通りの流れを体験するコースとなっていて、次の Improving Your Submission というコースでは、アンサンブル学習のモデルで精度をあげてスコアを狙っていくことを主眼としたコースとなっている。
前提に書いてある知識があれば各々のコースは2時間もあれば、最後まで進めることができると思う。
Tutorial の学習を終えて、自分のPython実行環境で学んだことを整理して、、、(といっても Tutorial で書いたコードをコピペするだけなんですが)、実際に Kaggle に submit するファイルを生成するコードにしてみたのは こちら 。
これを、いざ、 Kaggle に submit !
7071 team 中、1231位 でした!
まとめ
悩まずに短時間で一通り体験できるので、機械学習の入門書を読んだ後の自習、勉強会ネタとしてちょうどいいんじゃないかと思った。
ここはスタートラインとして、自分でモデルを工夫してももう少しスコアをあげる方向で勉強を進めるのもあり、
他の competition に参加するのもあり。
私の場合は、ディープラーニングの勉強中でもあるので、dogs vs cats の competiion をいろんなサイトを参考に引き続いてやってみた。とりあえず出た score が 0.14160 で、 697位 / 1314チーム ぐらいの score が出たのだが、ただこれ、もう competition が close されてるみたいで、 close されていると Rank には登録されないみたいで、ちょっと残念でした。
余談
ITエンジニアのための機械学習理論入門の著者は、自分と同い年で、同じ理学部物理学科卒(大学は違いますが)でした。
自分と一体どこでこんなに差がついたのか、著者を教師データとして自分の脳のニューラルネットワークを誤差逆伝播してニューロンの重みを学習させてやりたいです。。。