「PythonではじめるKaggleスタートブック」を読んでみた

なぜ読んだか

ご縁があり、2023年2月よりデータサイエンス職として働かせていただくことになりました。

ご面談の中で、働くまでに具体的にどんなスキルが必要か尋ねた際に、「最低限、KaggleのTitanic問題について、予測精度を自分なりに向上できるスキルを身に着けておいてほしい。」とご回答をいただいていました。

Titanic問題は、過去にもKaggleのチュートリアルを片手に取り組んだことはありましたが記憶が薄れつつあり。積読化していた本書を読みながら再度取り組むことで、記憶を蘇らせるのが今回の目的。

本書の内容(振り返り用メモ)

  • 第1章 Kaggleを知る
    • 1.1 Kaggleとは
    • 1.2 Kaggleで用いる機械学習
    • 1.3 Kaggleのアカウントの作成
    • 1.4 Competitionsページの概要
    • 1.5 環境構築不要な「Notebooks」の使い方
    • 1.6 第1章のまとめ

第1章はKaggle+機械学習の概要説明。 基本的には、Kaggleのチュートリアルに記載されていた内容とほぼ同じ。

  • 第2章 Titanicに取り組む
    • 2.1 まずはsubmit! 順位表に載ってみよう
    • 2.2 全体像を把握! submitまでの処理の流れを見てみよう
    • 2.3 次の一手を見出す! 探索的データ分析をしてみよう
    • 2.4 ここで差がつく! 仮説に基づいて新しい特徴量を作ってみよう
    • 2.5 勾配ブースティングが最強?! いろいろな機械学習アルゴリズムを使ってみよう
    • 2.6 機械学習アルゴリズムのお気持ち?! ハイパーパラメータを調整してみよう
    • 2.7 submitのその前に! 「Cross Validation」の大切さを知ろう
    • 2.8 三人寄れば分殊の知恵! アンサンブルを体験しよう
    • 2.9 第2章のまとめ

第2章は本書の主軸で、実際に手を動かしながらTitanic問題を解いていく。 ベースラインを作成した上で、EDA→特徴量エンジニアリング→アルゴリズム選定→パラメータ調整→CVによるモデル評価→アンサンブル学習という順序で学んでいく。

特にCVやアンサンブル学習に関しては、図解を交えながら解説しているのでわかりやすかった。 また、Random Seed Averageなどの手法についても補足されていたり、次のステップアップになる情報が散りばめられていてよかった。

  • 第3章 Titanicの先に行く
    • 3.1 複数テーブルを扱う
    • 3.2 画像データを扱う
    • 3.3 テキストデータを扱う

Titanic問題は単一テーブルデータが与えられる初歩的な問題のため、次の一歩を進めるための内容が書かれている。 第2章までは手を動かしながら進めていくが、第3章はキーとなる用語の解説が主軸となっている。

おおよそのイメージを掴んだら、他の書籍等で勉強するのがよさそう。

  • 第4章 さらなる学びのために
    • 4.1 参加するコンペの選び方
    • 4.2 初学者にお勧めの戦い方
    • 4.3 分析環境の選択肢
    • 4.4 お勧めの資料・文献・リンク

第1章の続きに相当するパート。 Kaggleに取り組むうえで知っておいたほうがよい細かい情報がまとめられている。

また、随所で紹介されている各資料や文献についてもまとめられている。 全部読むと骨は折れそうだが、参考になる資料はかなり多そう。

読んでみて

当初掲げていた目的は達成できる内容でした。

また、本書を読みながら自身でもTitanic問題に取り組みました。 基本的には第2章の内容をベースとしながら、先駆者たちが取り組んでいた特徴量エンジニアリングを模倣しながら取り組みました。

  • 欠損値の多いAgeをランダムフォレストで予測し補完する
  • Nameから敬称を抽出し特徴量とする
  • Cabinの先頭文字をトリムし特徴量とする
  • etc...

Submit時のベストスコアは約0.8でした。本当はもっとスコアを上げられるものだと思いますが、開催中のコンペで学んだほうが効率的かと思いましたので、サクッと切り上げました。 (本書にも「Titanic問題はデータ件数が少なく、乱数等によるスコアのブレも大きい」とありましたので。)

自身で作成したコードはGithubにもPush済み。

冒頭記載した通り、Titanic問題は過去にもトライしていました。 当時は新卒で働きだした当初ということもあり特に気にも留めていなかったのですが、今回は取り組むなかで「実務とKaggelの異なる点」も多く感じました。 実務ですとQCDの観点を意識しながら成果を出していく必要がありますが、スコアを少しでも良くするために競うKaggleはQの観点にかなり比重が多いと感じました。

とはいえ、Kaggleや他データ分析コンペの内容は実務に活かせる部分も非常に多いので、実務で求められるスキルとKaggleで求められるスキルが完全イコールではないということを留意しながら、今後も取り組んでいこうと思います。