Kaggle 30 Days of ML 体験記

# はじめに
この記事は2021年8月2日から2021年9月1日にかけてKaggle（https://www.kaggle.com）
で行われた30 Days of ML（https://www.kaggle.com/c/30-days-of-ml）
というコンペティションの体験記になります。
[note](https://note.com/philosophy_note/n/n3181e4606059/)と[Zenn](https://zenn.dev/adverdest/articles/6ddf360bb5a6f7/)にも投稿しています。

# 自己紹介
* 学歴・職業：都内の私立総合大学卒業後、非IT系の事務職で勤務
* Python歴：約１年（＝プログラミング歴）、趣味でデータ分析する程度
* 統計などに関する知識レベル：統計検定２級所持
* 機械学習などに関する知識レベル：[Udemyの講義(【世界で18万人が受講】実践 Python データサイエンス)](https://www.udemy.com/course/python-jp)を受講した程度

# 目次
* 参加理由
* スケジュール
* 前半（コンペティションのためのインプット）
* 後半（コンペティション）
* 結果
* 感想
* 最後に

# 参加背景
**Titanic後の壁を乗り越えたい**
詳細は以下の方の記事を参照していただきたいのですが、
自分もこの壁を感じていました。

[Titanic終了後の壁](https://qiita.com/shu421/items/ed255c1ad846c92ba448/)

開催中のコンペティションに参加しようにも、
画像認識など深層学習を必要とするものが多く、
内容を見ても「？」となってしまい、なかなか参加できない日々が続いていました。

ある日Twitterに次の情報が流れてきました。
![スクリーンショット 2021-09-01 14.12.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/638565/894fdb4b-a469-63e9-03d6-05196d4af18b.png)

見た瞬間に参加を決めました。

#スケジュール
30日間となっていますが、次のように分けられます。
前半15日間：コンペティションのためのインプット（8月2日〜15日）
後半15日間：コンペティション（8月16日〜31日）

# 前半（コンペティションのためのインプット）
この前半部分はさらに3セクションに分かれており、
Kaggleで元々設定されたコースを各自で学習する形になります。

## Pythonの基本（1日目〜7日目）
[Kaggleが用意したPythonコース](https://www.kaggle.com/learn/python/)
既習の内容が多いため前倒しで進めました。

## 機械学習入門（8日目〜11日目）
[Kaggleが用意した機械学習入門コース](https://www.kaggle.com/learn/intro-to-machine-learning/)
こちらも既習の内容だったためサクサク進めました。

## 中級機械学習（12日目〜15日目）
[Kaggleが用意した中級機械学習コース](https://www.kaggle.com/learn/intermediate-machine-learning/)
名前は知っていましたが、PipelineやCross-Validation
はこれまで実施したことがありませんでした。
このコース自分で手を動かしながら学習することで
ある程度は分かりました。
ただ、自分で実際にコードを書くにはまだ練習が必要だなと思いました。

##　余談
コースを修了すると次のような賞状がもらえます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/638565/ddd286ae-0baa-b05a-a259-6b3d88030bbe.png)

入手したからといって何かあるわけではないですが、
テンションが上がります笑

# 後半（コンペティション）
16日目〜コンペティションが開催されました。
##初日(16日目)
初日はとりあえず1回submissionしてみようということで
適当にコードを書いて提出してみました。
また、[fkubotaさん](https://twitter.com/fkubota_?ref_src=twsrc%5Egoogle%7Ctwcamp%5Eserp%7Ctwgr%5Eauthor)の[kaggle日記という戦い方](https://zenn.dev/fkubota/articles/3d8afb0e919b555ef068/)を参考にして、
記録をつけ始めました。

##17日目〜24日目
上述した[Titanic終了後の壁](https://qiita.com/shu421/items/ed255c1ad846c92ba448/)の記事内容の通り
公開ノートブックとディスカッションの内容に目を通していました。
この期間はEDA・前処理といった事項を確認し、
自分でコードを書いて検証しました。

##24日目〜30日目
引き続き公開ノートブックとディスカッションの内容に目を通していました。
この時期には特徴量の作成よりもアンサンブルやスタッキングといった事項に力を入れていたノートブックが
多く公開されていたので、次の書籍で勉強しながら自分もモデルを複数個スタッキングをしました。

[Kaggleで勝つデータ分析の技術](https://www.amazon.co.jp/Kaggle%E3%81%A7%E5%8B%9D%E3%81%A4%E3%83%87%E3%83%BC%E3%82%BF%E5%88%86%E6%9E%90%E3%81%AE%E6%8A%80%E8%A1%93-%E9%96%80%E8%84%87-%E5%A4%A7%E8%BC%94-ebook/dp/B07YTDBC3Z/ref=sr_1_3?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&dchild=1&keywords=kaggle&qid=1630483071&sr=8-3/)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/638565/c9101feb-96fe-05a8-c82d-441790310f59.png)

# 結果
第288位（7573チーム中）でした。
最初の方は下から数えた方が早い数値だったので、
自分としては満足がいく結果です。

# 感想
体験してみた感想です。

##心理的ハードルが少し下がった
初学者向け、かつテーブルデータに関するコンペティションだったので、
ここで学んだことが他のコンペティションに直結するわけではありません。
しかしながら、Kaggleに挑戦したという点で一つ自信が持てるようになりました。

##自分で手を動かして様々な技法を試すことができた
前述したCross-Validationやスタッキングといった、本で目を通したけれど
実際にやる機会に恵まれなかった内容を色々実践することができたので、
この点でも非常に勉強になりました。
最終的なモデルには組み込めませんでしたが、
Pytorchを用いたニューラルネットワークも試すことができました。

##上級者の解法を知ることができた
初学者のコンペティションに何故参加しているのかは分かりませんでしたが、
GrandMasterの人が丁寧なノートブックを公開してくれたり、
参考になる別のコンペティションをディスカッションで紹介してくれました。

# 最後に
今回は基本的な内容でしたが、
初めて参加するコンペティションとして楽しめる内容でした。
次はより長期間のコンペティションに参加してメダルを狙いたいと思います！