16
Titanic: Machine Learning from Disaster

Kaggle の Titanic チュートリアルに挑戦した話

  • Upload
    y-uti

  • View
    589

  • Download
    6

Embed Size (px)

Citation preview

Page 1: Kaggle の Titanic チュートリアルに挑戦した話

Titanic: Machine Learning from Disaster

Page 2: Kaggle の Titanic チュートリアルに挑戦した話

自己紹介内山雄司 (@y__uti)

◦ http://y-uti.hatenablog.jp/ (phpusers-ja)

仕事◦ 受託開発の会社 (株式会社ピコラボ) でプログラマをしています

興味◦ プログラミング言語処理系

◦ 機械学習

2017-06-02 社内勉強会 2

Page 3: Kaggle の Titanic チュートリアルに挑戦した話

本日の発表の要点1. Kaggle面白いからみんなやってみるといいよ!

2. Pandas 便利だからみんな使ってみるといいよ!

2017-06-02 社内勉強会 3

Page 4: Kaggle の Titanic チュートリアルに挑戦した話

Kaggleとは?https://www.kaggle.com/

"Your Home for Data Science"◦ Datasets: データセットを持ち寄って公開したり

◦ Kernels: Python や R のコードを公開したり

◦ Discussion: 機械学習の手法などについて議論したり

◦ Jobs: 採用活動や求職活動ができたり

というコミュニティサイトのようですが・・・

何と言っても◦ Competitions: 与えられた課題に対する成績 (予測精度) を競う

2017-06-02 社内勉強会 4

Page 5: Kaggle の Titanic チュートリアルに挑戦した話

Competitions

◦ 完全にガチです

2017-06-02 社内勉強会 5

Page 6: Kaggle の Titanic チュートリアルに挑戦した話

Titanic:Machine Learning from Disaster入門者向けの常設コンペ

2017-06-02 社内勉強会 6

◦ 参加者 6,940 teams と大変賑わっている

というわけで私もアカウントを作ってチャレンジしてみました

Page 7: Kaggle の Titanic チュートリアルに挑戦した話

Titanic とは?

2017-06-02 社内勉強会 7

◦ https://ja.wikipedia.org/wiki/タイタニック_(客船)

Page 8: Kaggle の Titanic チュートリアルに挑戦した話

何を競うのか以下の特徴量から「乗客の生死を予測」して正解率を競う

2017-06-02 社内勉強会 8

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

データ数 (乗客数)

◦ Training 891 こちらは "survival" が 0, 1 で与えられる

◦ Test 418 こちらは "survival" が隠されている

Page 9: Kaggle の Titanic チュートリアルに挑戦した話

参加方法簡単!1. Kaggleのアカウントを作ってログインする

2. データをダウンロードする

◦ train.csv

◦ test.csv

3. test.csv の各乗客の生死を予測して csv ファイルを作成する

4. csv ファイルを登録する

csv ファイルを登録すると即座に集計されて順位が出る

頑張りたければ何度でも繰り返し登録できる◦ ただし 1 日 10 回まで。極端な連投はできない

2017-06-02 社内勉強会 9

Page 10: Kaggle の Titanic チュートリアルに挑戦した話

やってみた!予測手順1. データをじっくり眺める

2. 判別に使う特徴量を抽出する◦ 敬称 (Mr. / Master / Mrs. / Miss)

◦ 客室等級

◦ 同一の旅券番号を持つ乗客数 (本人を含む)

◦ 同一の旅券番号を持つ乗客の生存率 (本人を含まない)

◦ 乗船港

3. 機械学習を使って判別する◦ SVM を利用して分類 (RBF kernel)

◦ 超パラメータ (gamma, cost) は 10-fold 交差検定でグリッドサーチ

2017-06-02 社内勉強会 10

Page 11: Kaggle の Titanic チュートリアルに挑戦した話

1. データをじっくり眺める乗客の属性 (性別や年齢など) はどのような分布になっているか

どのような属性を持つ乗客が生存しているか

"... some groups of people were more likely to survive than others, such as women, children, and the upper-class."

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

詳細は Jupyter Notebook で

2017-06-02 社内勉強会 11

Page 12: Kaggle の Titanic チュートリアルに挑戦した話

2. 判別に使う特徴量を抽出するいろいろ試したが以下の特徴量を使うのが最も精度が高かった◦ 敬称 (Mr. / Master / Mrs. / Miss)

◦ 客室等級

◦ 同一の旅券番号を持つ乗客数 (本人を含む)

◦ 同一の旅券番号を持つ乗客の生存率 (本人を含まない)

◦ 乗船港

2017-06-02 社内勉強会 12

Page 13: Kaggle の Titanic チュートリアルに挑戦した話

3. 機械学習を使って判別するいろいろ試したが SVM が最も精度が高かった

◦ RBF kernel

◦ 超パラメータ (gamma, cost) は 10-fold 交差検定でグリッドサーチ

テストデータの正解率 80.8%

2017-06-02 社内勉強会 13

Page 14: Kaggle の Titanic チュートリアルに挑戦した話

比較:職人芸で分類データをじっくり眺めていると「勘所」が分かってくる◦ ちょっと見ていると

◦ 客室等級が 1st, 2nd の女性と子供 ほぼ生存 90% 以上

◦ 客室等級が 1st の男性 (子供を除く) 微妙 30% 程度

◦ 客室等級が 3rd の女性と子供 微妙 50% 程度

◦ 客室等級が 3rd の男性 (子供を除く) ほぼ死亡 10% 程度

◦ もう少し頑張ってみると◦ 客室等級が 3rd の女性と子供

◦ 同乗者数が 4 人以下 50% 超

◦ 同乗者数が 5 人以上

2017-06-02 社内勉強会 14

Page 15: Kaggle の Titanic チュートリアルに挑戦した話

参考になる情報Titanic Data Science Solutions

◦ https://www.kaggle.com/startupsci/titanic-data-science-solutions

Kaggleの titanic 問題で上位 10% に入るまでのデータ解析と所感

◦ http://www.mirandora.com/?p=1804

RMS Titanic (Wikipedia)

◦ https://en.wikipedia.org/wiki/RMS_Titanic

Encyclopedia Titanica

◦ https://www.encyclopedia-titanica.org/

2017-06-02 社内勉強会 15

Page 16: Kaggle の Titanic チュートリアルに挑戦した話

おわり

2017-06-02 社内勉強会 16