Kaggle タイタニック号生存予測
Kaggleコンペティションは、多くの人からデータサイエンスのスキルを磨く絶好の場と紹介されています。コンペティションを通して様々な手法やアルゴリズムを試すことができ、また、同じ課題に取り組む他のデータサイエンティストとの交流を通じて、新しい視点や技術を学ぶことができます。
タイタニック号の生存予測は入門編と有名なコンペです。コンペの参加方法については下記の参照などに紹介されています。kaggleの内容は英語で書かれていますが、下記は日本で説明されています。
ここでは、コンペでのランクを上げるためのモデル改善の経験を紹介します。
タイタニック号の生存予測(Kaggle Titanic)のモデルを改善する方法は、主にデータの前処理と特徴量エンジニアリング、およびモデルの選択とハイパーパラメータの調整の2つに大別されます。
1. データの前処理と特徴量エンジニアリング
予測精度を上げる上で最も重要とされるステップです。単に欠損値を埋めるだけでなく、既存のデータから新しい有用な特徴量を作り出すことが鍵となります。
📊 データのクレンジングと補完
-
欠損値の処理:
Age
(年齢)やCabin
(客室番号)、Embarked
(乗船港)などに存在する欠損値を適切に処理します。-
Age
:平均値や中央値で補完するだけでなく、Pclass
(チケットクラス)やSex
(性別)など、他の特徴量との関連性を考慮して推定値で埋める方が精度が上がることが多いです。 -
Embarked
:最も頻度の高い値(最頻値)で補完することが一般的です。 -
Cabin
:欠損が多い場合は、欠損自体を「客室情報なし」という新たなカテゴリとして扱うか、客室の**デッキ(A, B, C…)**を抽出して利用します。
-
✨ 有用な特徴量の作成(特徴量エンジニアリング)
-
家族構成(Family Size): $\text{SibSp}$(兄弟/配偶者)と$\text{Parch}$(親/子供)の合計に、自分自身($+1$)を加えることで、同行家族の総人数を示す新しい特徴量を作成します。家族の人数が少なすぎる(1人)または多すぎる乗客は生存率が低い傾向があるため、予測に役立ちます。
-
敬称の抽出(Title): $\text{Name}$(名前)に含まれる敬称($\text{Mr.}$、$\text{Miss.}$、$\text{Master.}$、$\text{Mrs.}$など)を抽出します。これは、年齢や性別よりも細かい社会的地位や属性を示唆し、特に$\text{Master.}$(少年)は生存率が高い傾向があるため、非常に強力な特徴量となります。
-
料金のカテゴリ化(Fare Bins): $\text{Fare}$(乗船料金)をそのまま使用するのではなく、いくつかの**区間に分割(ビニング)**してカテゴリ変数として扱うことで、モデルが非線形な関係を捉えやすくなることがあります。
2. モデルの選択とチューニング
基本的なモデル(ロジスティック回帰など)からより高度なモデルに変更し、最適な設定を探ることで精度を向上させます。
🧠 より高度なモデルの利用
初期段階で使われることが多いロジスティック回帰よりも、以下のモデルはより複雑なデータパターンを学習する能力が高いため、試す価値があります。
-
ランダムフォレスト ($\text{Random Forest}$):決定木を多数使用し、それぞれの結果を多数決で決める手法。過学習しにくく、高い精度が出やすいです。
-
勾配ブースティング系モデル ($\text{Gradient Boosting}$):
-
$\text{XGBoost}$($\text{eXtreme Gradient Boosting}$)
-
$\text{LightGBM}$
-
これらは決定木を順次学習させ、前のモデルの誤差を補正していく手法で、非常に高い予測性能を発揮します。Kaggleでは最もよく使われるモデル群です。
-
⚙️ ハイパーパラメータの調整
選択したモデルのハイパーパラメータ(例:ランダムフォレストの木の数、深さなど)を、グリッドサーチやランダムサーチといった手法を使って最適化します。これにより、モデルが訓練データに過度に適合しすぎる(過学習)のを防ぎつつ、予測性能を最大限に引き出すことができます。
📦 アンサンブル学習
複数のモデルの予測結果を組み合わせて最終的な予測を行うアンサンブル学習は、しばしば単一モデルよりも高い精度を生み出します。
-
スタッキング ($\text{Stacking}$):異なる種類のモデル(例:$\text{Logistic Regression}$と$\text{Random Forest}$)の予測結果を新たな特徴量として使用し、それらを学習するメタモデルを作成します。
-
ブレンド ($\text{Blending}$):複数のモデルの予測結果を単純な平均や重み付き平均で組み合わせます。
