y_uti のブログ

統計、機械学習、自然言語処理などに興味を持つエンジニアの技術ブログです

Kaggle の Titanic チュートリアルに挑戦する

Kaggle でチュートリアルとして開催されている、Titanic 号の生存者の予測 (以下、単に Titanic と記述します) に挑戦しました。実装したコードを公開します。Kaggle のサイト上で登録したものです*1。この実装でテストデータに対する判別精度は 80.8% でした。また、勤め先の社内勉強会でも紹介しましたので、その際のスライドも公開します。
Prediction by SVM | Kaggle (実装したコード)
Kaggle の Titanic チュートリアルに挑戦した話 (社内勉強会での発表スライド)

Kaggle の Titanic チュートリアルについて

Kaggle はデータサイエンティスト向けの Topcoder といった感じのウェブサイトです。機械学習の手法などを適用して問題を解き、その成績を競う形式です。企業が出題する大規模な問題などには、高額な賞金がかけられているものもあります。その一方で、機械学習の初心者向けにチュートリアル的な問題も出題されています。今回私が挑戦した Titanic は、そのような問題の一つです。
Titanic: Machine Learning from Disaster | Kaggle

Titanic は、機械学習のカテゴリとしては「教師あり分類問題」に属します。Titanic 号の乗客について、氏名、年齢、性別、客室等級といった属性が与えられ、それらの情報を元に、各乗客の生死を予測します。教師あり学習ですので、学習データに含まれる乗客については生死の情報も与えられます。これらのデータは train.csv, test.csv という csv 形式のファイルで提供されます*2。予測結果の登録も csv 形式のファイルをアップロードする方式です*3

実装手法の概要

今回私が実装した方法では、以下の特徴量を利用しました。なお、称号や同乗者数、同乗者の生存率といった特徴量を追加するアイデアは私が独自に考えたものではありません。Titanic で公開されているコードや議論、外部のウェブサイト等でも数多く言及されています。称号を利用することにしたので、年齢と性別は利用しませんでした。

  • 客室等級 (pclass)
  • 乗船地 (embarked)
  • 敬称 (乗客の氏名から Mr, Mrs, Miss, Master の敬称を抽出しました。これ以外の敬称はルールベースで左記のいずれかに変換しました)
  • 同乗者数 (チケット番号が同じ乗客を同乗者として抽出しました)
  • 同乗者の生存率 (学習データの中でチケット番号が同じ乗客の生存率を計算しました)

これらの特徴量を利用して、サポートベクトルマシンによる分類を行いました。カーネルは RBF カーネルとして、超パラメータはグリッドサーチで決定しました。

その他いろいろ

冒頭に記載したコードとは別に、実際にはいろいろな特徴量や機械学習アルゴリズムを試しました。特徴量については、年齢の欠損値の補完を試みたほか、同乗者のうち子供の数、乗客一人あたりの乗船料など様々な特徴量を試しました。アルゴリズムではランダムフォレストや xgboost, 深層学習 (keras) も使ってみました*4。いずれも、私が試した範囲では今回の精度を超えられませんでした。

また、機械学習を使わない方法として次の単純なルールで分類を試してみたところ、79.4% の精度が得られ、機械学習を適用した結果とあまり変わらないという結果になりました*5

  • 客室等級が 1st または 2nd の女性 (Mrs, Miss) と子供 (Master) は生存と予測する
  • 客室等級が 3rd の女性と子供は、同乗者数が 4 以下なら生存、5 以上なら死亡と予測する
  • それ以外 (大人の男性) は死亡と予測する

*1:グリッドサーチの実行に大きな時間がかかるため、Kaggle 上では実行できないようです。

*2:データファイルを入手するには Kaggle のアカウントを作成してログインする必要があります。どのような属性が与えられるかを見るだけであればログインは不要です。

*3:したがって、機械学習やプログラミングは必須ではありません。提供されたデータから各乗客の生死をじっくり推理して、完全に人力で予測した結果を登録することもできます。

*4:これらのアルゴリズムについては不慣れなため、簡単に試してみたという程度です。十分なパラメータチューニングが出来ていなかった可能性があります。

*5:もちろん、私が試した範囲では、ということです。よりよい手法、特徴選択等によって、高い精度が得られる可能性があります。