[Kaggle初心者] Titanicの次へ行きたい


はじめに

機会学習初心者が Titanic の先へ行きたいとがむしゃらに頑張ったことをまとめます。
この記事はメダルが取れる方法ではありません。
Titanic で挫折しそうな人が読んでくれたら嬉しいなと思って書きます。

Titanic をやる

そもそもなぜ Kaggle に挑戦することになったかと言うと、所属する部内で「Kaggle で取り組んだことアウトプットしようぜ!メダル目指そうぜ!」といった流れがありました。この流れに乗ってワイワイ取り組みたかったのと、どこかで機械学習に触れないとなと思っていたので参加することにしました。
「まずは Titanic に取り組んだら良い」と有識者に教えてもらったので、やってみることにしました。Titanic の Competition は、Kaggle の中でもチュートリアルのような存在として有名で、まずは最初に取り組むべき課題の 1 つです。なので、一旦ここで初 Submit をキメることを目標とします。なんか分からんけどとにかく提出。
ここで挫折しそうな人は、Titanic は正直ネット検索したら色々術が出てきますので、それを参考にしたらいいと思います。まずフローを知ることが必要かなと信じ、とにかく提出です。

Titanic - Machine Learning from Disaster

基礎

分からないことが自覚できたので、基礎をやります。
Kaggle 公式が公開している lerning があるので、そこから自分に足りないものを実施しました。

Learn Python, Data Viz, Pandas & More | Tutorials | Kaggle

  • Python
  • Pandas
  • intro-to-machine-learning

私はこれらに取り組みました。
Intro to machine learning の課題の中で、Housing Prices Competition for Kaggle Learn Users というタイトルの Competition に Submit できます。公式によると、この learning は数ヶ月ではなく数時間でこなせる程度のボリュームであるとのこと。本当か?笑

本購入

基礎をやってもまだ分からない部分が多いので、本を購入しました。
Kaggle 公式は全編英語なので、いまいち英語での理解に自信がないため取り入れました。同じような方はおすすめです。

実践 Data Science シリーズ Python ではじめる Kaggle スタートブック

  • Kaggle の概要
  • Titanic の解説
  • Titanic の先へ行く方法

上記 3 点を中心に読みました。
基礎をやったあとに読んで丁度よい内容でした。
中でも、訳も分からず提出した Titanic についての解説はたくさん読みました。伏線回収じゃないですが、あの時よく分からなかったこれは・・!!!
と理解が深まったり、分析をどう進めていけばいいのかも学ぶことができます。
Titanic の先に行く部分についても、別の Competition を検討するために活用できました。

Titanic 以外の Competition を検討

メダルは到底無理ですが、アウトプットはしようと手を挙げていたので、その期限が迫っている状況でした。Titanic の話をシェアするより、別の Competition にチャレンジした話の方が面白いよなと決め、検討を開始しました。ここまで段階を踏むと割と学習コストもかかっていたり、最初の段階よりは Kaggle に前向きになれていた感じです。ドメイン知識がある課題に取り組む場合、仮説が立てやすいと先に紹介した Kaggle スタートブックに書いてあったのでそれを参考に検索。あるいは単純に興味のある分野でも良いかなと考え選んでいくことにしました。(※ドメイン知識…取り組む事業や分野への知識)

その他に参考にしたのは Competition のカテゴリです。簡単なものから順に書くと以下です。

  • Getting Started
  • Playground
  • Featured
  • Research

Titanic や Housing Prices Competition for Kaggle Learn Users は Getting Started です。
なので、一歩踏み出して Playground で探してみます。ちなみに Playground まではメダルや賞金はありません。
いまは Titanic の先に行くことが目標なので OK です。

サンタ

ドメイン知識とか偉そうに書きましたが、結局選択したのはサンタです。サンタの知識が豊富な訳じゃないですが、概要が分かりやすかったので。。笑
本当は好きな野球やアートの Competition もあったのでそちらが良かったのですが、難解だったのでやめました泣

概要は以下です。

santas-uncertain-bags

妖精インターンがプレゼントの重量カラムを drop した
プレゼントの重さの確率分布までは妖精が求めた
サンタが届ける 9 種のプレゼントを 1000 袋にいい感じに分配してほしい
1 袋は 50 ポンドまで、3 つは入れる
フォーマットは正しく提出してね

やったこと(詳細には公開禁止なのでざっくり)

  • データ確認(プレゼントや種類ごとの数確認など)
  • 妖精が求めた確率分布を使って各々の最大値や平均値を出す
  • DataFrame に消えた重さカラム追加
  • 条件を満たしてフォーマットに合わせて提出

簡単に記載しましたが、1 項目につき軽く 1-2 時間かかってます。
たぶん慣れている方なら一瞬なのではと辛くなりながら頑張って取り組みました。何度か submit した結果を部内でアウトプットすることが出来ました。
取り組みながら分かったのですが、この課題は機械学習というよりはテーブル操作をする分野のものだそうです。
分析をたくさんしたかと言われると微妙ですが、これを糧にもう少し分析できるような課題に取り組まなければなりませんね。。

以上、アウトプット駆動で取り組んだ内容でした!