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

今回自分は０から始めて９か月でコンペで銀メダル(6385分の249位,top4パーセント)を獲得できました。
自分の今までの流れをおさらいしていきます。

## それまでの僕のスペック

- 数3と行列はほぼ何も分からない
- プログラムはrubyとjavaはそこそこに書ける、pythonは知らん

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

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

微分積分
<a target="_blank"  href="https://www.amazon.co.jp/gp/offer-listing/4046007346/ref=as_li_tl?ie=UTF8&camp=247&creative=1211&creativeASIN=4046007346&linkCode=am2&tag=hayato0812090-22&linkId=4bac4c3b05c934f69229625a4f3d1646"><img border="0" src="//ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&MarketPlace=JP&ASIN=4046007346&ServiceVersion=20070822&ID=AsinImage&WS=1&Format=_SL250_&tag=hayato0812090-22" ></a><img src="//ir-jp.amazon-adsystem.com/e/ir?t=hayato0812090-22&l=am2&o=9&a=4046007346" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />

行列
<a target="_blank"  href="https://www.amazon.co.jp/gp/offer-listing/4407325127/ref=as_li_tl?ie=UTF8&camp=247&creative=1211&creativeASIN=4407325127&linkCode=am2&tag=hayato0812090-22&linkId=611e01fa14d9d7b7875910332e0157aa"><img border="0" src="//ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&MarketPlace=JP&ASIN=4407325127&ServiceVersion=20070822&ID=AsinImage&WS=1&Format=_SL250_&tag=hayato0812090-22" ></a><img src="//ir-jp.amazon-adsystem.com/e/ir?t=hayato0812090-22&l=am2&o=9&a=4407325127" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />

### ２月
Udemyで多くの講座を受ける、詳細は以下の記事にまとまっています
https://qiita.com/HayatoYamaguchi/items/c8051baa0f7b0ec681a1
機械学習にはnumpyとpandasが必要らしいということでPYQをやってみる

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

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

### ４月

オライリーの専門本をここで勉強します。
今考えると２冊目はかなり無駄だったかなという面もあります・

<a target="_blank"  href="https://www.amazon.co.jp/gp/offer-listing/4873117984/ref=as_li_tl?ie=UTF8&camp=247&creative=1211&creativeASIN=4873117984&linkCode=am2&tag=hayato0812090-22&linkId=547561e3092fba9a8835b528eebecf4a"><img border="0" src="//ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&MarketPlace=JP&ASIN=4873117984&ServiceVersion=20070822&ID=AsinImage&WS=1&Format=_SL250_&tag=hayato0812090-22" ></a><img src="//ir-jp.amazon-adsystem.com/e/ir?t=hayato0812090-22&l=am2&o=9&a=4873117984" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />


<a target="_blank"  href="https://www.amazon.co.jp/gp/offer-listing/4873118344/ref=as_li_tl?ie=UTF8&camp=247&creative=1211&creativeASIN=4873118344&linkCode=am2&tag=hayato0812090-22&linkId=11b186d9da73db345666e3819c1c513c"><img border="0" src="//ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&MarketPlace=JP&ASIN=4873118344&ServiceVersion=20070822&ID=AsinImage&WS=1&Format=_SL250_&tag=hayato0812090-22" ></a><img src="//ir-jp.amazon-adsystem.com/e/ir?t=hayato0812090-22&l=am2&o=9&a=4873118344" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />

また、ここで始めてkaggleに参加します。
titanicチュートリアルとhouse priceを行いました。
タイタニック
https://qiita.com/HayatoYamaguchi/items/ed13171372d3043e42aa
house price
https://qiita.com/HayatoYamaguchi/items/30e93a43d519f8c8aea0

### ５月
この辺で普通のコンペに参加すべきだったのですが、ハードルを感じてしまい、結局もう一つメルカリコンペを行いました。
https://qiita.com/HayatoYamaguchi/items/ad41b20b2e61ea30827e

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

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

### ６月
機械学習系の業務委託を受けたりインターンをやり始めて試用期間で切られたりする（ここから先はインターンで機械学習をやりながらそれと平行）
courseraのHow to Win a Data Science Competition: Learn from Top Kagglersをやる
これで、kaggleの細かい実践的なことを学びました。
また、いよいよ本格的にコンペに初参戦しました。Instant Gratificationに参加してラスト１週間ほどでやりましたが、結局公開カーネルを真似したものを提出しただけになってしまいました、、、
また、統計検定２級を受験し、無事に合格しました。

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

### ８月
飯田産業コンペ終了、順位は189 位 / 593
validationなどにこだわってしまったので、特徴をもっと作らなかったことを反省

### ９月
始めからIEEE-CIS Fraud Detectionに参加してコミットしました。
チームを組んで、最終的なモデルは自分が作ったものを採用し、無事それでスコアを出すことができました。コンペの詳細については後日投稿しようと思います。

## ここまでの反省点など

- pythonやudemyや数学に時間を使いすぎた
初心者エンジニアあるあるですが完璧に理解してコードを書けることを重視しすぎて、実践の中で吸収していこうという考えが少なかった
- 動画教材などのインプットに重きを置きすぎた
同じくわかってから進めたい病炸裂
- もっと早い時期からコンペに参加するべきだった
これもコンペ参加のハードルを上げすぎました、、、
多くのkaggleマスターなどがtaitanicが終わったらもうコンペに参加した方がいいと述べていますが、それは的確だと考えています。
- 最初の頃はダラダラ勉強しすぎた
正直４月くらいまでの内容はちゃんと自分を追い込めば２ヶ月でできる内容だったのかなと考えています。

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

## おまけ
https://note.com/cohki0305/n/nd6b2f680f582
機械学習を用いて胸の大きさを販売するというエンタメ要素も盛り込んだ教材を機械学習初心者向けにコラボという形で販売しています、もしよければ購入してみて下さい。