Edited at

文系大学生が機械学習を0から始めて9か月でKaggle銀メダルを獲得するまで

今回自分は0から始めて9か月でコンペで銀メダル(6385分の249位,top4パーセント)を獲得できました。

自分の今までの流れをおさらいしていきます。


それまでの僕のスペック

・数3と行列はほぼ何も分からない

・プログラムはrubyとjavaはそこそこに書ける、pythonは知らん


勉強の流れ


12月末

機械学習を始めると決心、とりあえず何をやればいいかよく分からないがpythonが必要らしいのでprogateでpythonをやってみる


1月

数学が必要らしいので、行列と微分積分について1から学んでみる。今から考えると、行列の基礎をさらえたのは良かったですが、それ以外はこの時間は絶対いらなかったなと考えています。

微分積分

坂田アキラの 数IIIの微分積分が面白いほどわかる本 (坂田アキラの理系シリーズ)

行列

よ・く・わ・か・る!線形代数 (Primary大学ノート)


2月

Udemyで多くの講座を受ける、詳細は以下の記事にまとまっています

https://qiita.com/HayatoYamaguchi/items/c8051baa0f7b0ec681a1

機械学習にはnumpyとpandasが必要らしいということでPYQをやってみる

またここで1年休学を決意。


3月

courseraのmachine learningコースがいいらしいと聞いて、これを完走。行列などを学ばなければこれはできなかったのでその意味では数学を学んだのは良かったかも


4月

オライリーの専門本をここで勉強します。

今考えると2冊目はかなり無駄だったかなという面もあります・

Pythonではじめる機械学習 scikit-learnで学ぶ特徴量エンジニアリングと機械学習の基礎

scikit-learnとTensorFlowによる実践機械学習

また、ここで始めてkaggleに参加します。

titanicチュートリアルとhouse priceを行いました。

タイタニック

https://qiita.com/HayatoYamaguchi/items/ed13171372d3043e42aa

house price

https://qiita.com/HayatoYamaguchi/items/30e93a43d519f8c8aea0


5月

この辺で普通のコンペに参加すべきだったのですが、ハードルを感じてしまい、結局もう一つメルカリコンペを行いました。

https://qiita.com/HayatoYamaguchi/items/ad41b20b2e61ea30827e

また、課金してCourseraのDeepLearningコースも学びました。ここで始めてCNNやRNNなどについて学びました。

また、6月の統計検定2級に備えて統計の勉強もしました。


6月

機械学習系の業務委託を受けたりインターンをやり始めて試用期間で切られたりする(ここから先はインターンで機械学習をやりながらそれと平行)

courseraのHow to Win a Data Science Competition: Learn from Top Kagglersをやる

これで、kaggleの細かい実践的なことを学びました。

また、いよいよ本格的にコンペに初参戦しました。Instant Gratificationに参加してラスト1週間ほどでやりましたが、結局公開カーネルを真似したものを提出しただけになってしまいました、、、

また、統計検定2級を受験し、無事に合格しました。


7月

他のインターンも始める

ここからSignateの飯田産業コンペに注力し始めます。これではカーネルがないので、実際に自分で特徴量を1から作り出していく必要があり、初めての経験のためかなり大変でした。


8月

飯田産業コンペ終了、順位は189 位 / 593

validationなどにこだわってしまったので、特徴をもっと作らなかったことを反省


9月

始めからIEEE-CIS Fraud Detectionに参加してコミットしました。

チームを組んで、最終的なモデルは自分が作ったものを採用し、無事それでスコアを出すことができました。コンペの詳細については後日投稿しようと思います。


ここまでの反省点など

・pythonやudemyや数学に時間を使いすぎた

初心者エンジニアあるあるですが完璧に理解してコードを書けることを重視しすぎて、実践の中で吸収していこうという考えが少なかった

・動画教材などのインプットに重きを置きすぎた

同じくわかってから進めたい病炸裂

・もっと早い時期からコンペに参加するべきだった

これもコンペ参加のハードルを上げすぎました、、、

多くのkaggleマスターなどがtaitanicが終わったらもうコンペに参加した方がいいと述べていますが、それは的確だと考えています。

・最初の頃はダラダラ勉強しすぎた

正直4月くらいまでの内容はちゃんと自分を追い込めば2ヶ月でできる内容だったのかなと考えています。

おそらくこの辺ちゃんと解決できれば、フルコミットすればかなり厳しい道のりになりますが完全初心者から3,4か月でメダル取るのは不可能ではないのかなと考えています。同じようなことをやりたいと考えている人の参考になれば幸いです。