Kaggleで勝つデータ分析の技術

先日読了。

良書。Kaggleを題材にしているが、本質的には、与えられた問題に対して様々な機械学習をどのように適用するかの実践ノウハウ本。

分析コンペの流れ。与えられたデータをもとに予測値を提出。テストデータの一部を用いた予測はPublic Leaderboardで順位が事前にわかる。本番データを用いた予測を提出。最終結果はPrivate Learderboardとして発表される。

予測の手順。タスク・評価指標・データ理解、特徴量の作成、モデルの作成、モデルの評価、モデルのチューニング、アンサンブル。

リークとは、コンペ設計の見落としという意味と、バリデーション設計ミスで本番テストデータでよい成績が出ないという意味の、両方の意味がある。

特徴量。欠損値の扱い。標準化。カテゴリ変数の変換(one-hot、label、・・)。日付・時刻の変換(周期性、連続性)。統計量。時系列データで未来を使うとリークする可能性あり。次元削減。ドメイン知識。相対量。位置。

モデル。ほとんどはGBDT(勾配ブースティング木) = xgboostやlightgbm。あるいはニューラルネット = kerasなど。前者は、欠損値が扱え、one-hot不要、標準化不要、不要な特徴量の追加に強い、疎行列に対応。

バリデーション。hold-out。クロスバリデーション。時系列データは中間をバリデーション用にできないことが多い。

モデルのチューニング。(1)ハイパーパラメータのチューニング。手動調整も立派。自動調整はグリッドサーチ/ランダムサーチ。(2)特徴選択。

アンサンブル。複数のモデルの結果を合算。シンプルには平均や加重平均。