Kaggle始めます

どんな勉強でもまず進める道筋を見つけることが肝要で、所謂挫折というものはこの道筋を見つける作業が上手くいかなかった時に多く起こるのかなぁと思います。

機械学習を勉強したいと思い約一年程度仕事やその他の合間に色々探していました。今現在、僕自身多少サンプル動かしたり見様見真似でモデル作ったりした程度でそれ以上には行けていません。でもやっとこさ機械学習をきちんと学ぶための「道筋」を見つけることが出来た気になったのでメモとして残したいと思います。
僕と同じく迷える方のお役に少しでも立てたら幸いです。

#0.機械学習の前に
Python,numpy,pandas。Pythonは御存じでしょう。numpy,pandasも名前ぐらいは聞いたことあると思います。これらをざっくり勉強しておくは大切です。Python + numpy + pandas は非常に便利ですがフレキシブル過ぎて僕は今でも苦手です。でも必須スキルなので。詳しいことは後々機械学習に触れながら習得するとして、まずは一通りの使い方を見ておくぐらいでよいと思います。

以下の本は非常に参考になりました。機械学習の、特にデータ整形に特化してくれてているので有難いです。

[前処理大全[データ分析のためのSQL/R/Python実践テクニック] ](https://www.amazon.co.jp/前処理-大全[データ分析のためのSQL-Python実践テクニック]-本橋-智光/dp/4774196479 "前処理大全[データ分析のためのSQL/R/Python実践テクニック] ")

#1.まずベースキルの醸成
機械学習というとDeep Learningという感じですが、まずはscikit-learnを習得するところから始めるのが良いようです。

[Python scikit-learnの機械学習アルゴリズムチートシートを全実装・解説](http://neuro-educator.com/mlcontentstalbe/ "Python scikit-learnの機械学習アルゴリズムチートシートを全実装・解説")

代表的アルゴリズムの解説、ソース、ソースの開設と至れり尽くせりです。
またこの記事の各章の最後の「○○○の心」で理解を深めることができます。
このページを通じて機械学習の習得になぜ統計学が必要になってくるか、また統計学の中でもどのような知識が必要かなども概観することができます。

#2.Kaggleに登録
機械学習を身に付けたければKaggleが良いようです。そんな我々の主戦場であるKaggleに登録しましょう。そしていきなりコンペを覗くのではなく「Micro-Courses」を最後まで通しましょう。
[Kaggle - Micro-Courses](https://www.kaggle.com/learn/overview "Kaggle - Micro-Courses")

既に見知った事項も多いかと思いますが、Kaggleになれる意味でもMicro-Coursesを通すことは大切だと思います。
Deep Learningについても基礎から触れてくれています。

#2.5橋渡し
どんなことでも入門と実際との間をどう埋めるかは大変難しいものです。機械学習の勉強において、この二つのコンテンツはとても助かりました。

[Kaggleに登録したら次にやること ～ これだけやれば十分闘える！Titanicの先へ行く入門 10 Kernel ～](https://qiita.com/upura/items/3c10ff6fed4e7c3d70f0 "Kaggleに登録したら次にやること ～ これだけやれば十分闘える！Titanicの先へ行く入門 10 Kernel ～")

この記事を見付けたときの言語を絶するほどの感動たるや。筆者の方には感謝のしようも御座いません。

[Kaggle入門 Porto Seguroコンペ Part.1 (イントロ～GCP登録)](https://www.youtube.com/watch?v=NHQTw-ORcSQ "Kaggle入門 Porto Seguroコンペ Part.1 (イントロ～GCP登録)")

Kaggle Masterをお持ちの方の実作業を見せて頂ける貴重な動画です。一連の動画、及びこの方の他の動画も大変勉強になりましたし、動画で観せて頂くとぐっとKaggleを身近に感じることが出来ますね。有り難う御座います。

#3.コンペ
やっとコンペを覗く段になりましたが、膨大にあるのでまず最初にどこを見たらいいのか途方に暮れると思います。
以下が参考になると思います。

[kaggle初心者はどのコンペに参加すべき？コンペの7分類を紹介](https://www.kokokocococo555.com/entry/2018/08/29/223655 "kaggle初心者はどのコンペに参加すべき？コンペの7分類を紹介")

[Some of the Best Kaggle Competitions for](https://www.kaggle.com/getting-started/78482 "Some of the Best Kaggle Competitions for")
Categoryの Getting Started→Playground と進むのがよさそうです。

#4.EDA
機械学習の世界で特徴量が全てだといえます。「探索的データ解析」Explanatory Data Analysis（略してEDA）と言われて大切だとは思うが何を基準にどうすれば…と迷うこと多いと思います。この辺は明確な理論は確立していないと思います(確立していたら誰も迷わない)。
EDAは特徴量選択、特徴量エンジニアリング、この二言です。その基板となるのは統計学であり、何よりまず最初にオススメしたいのは以下の本です。
[Pythonで学ぶあたらしい統計学の教科書](https://www.amazon.co.jp/dp/4798155063/ref=cm_sw_r_tw_dp_U_x_FvlnEb0C88WKM)
です。機械学習はデータサイエンスと言われてもダイレクトには結びつかず。EDAをまず最初にと言われても何を基準にデータを見ていったらいいのかわからないと思います。データを如何に扱うかが肝の機械学習に於いて統計学は必須ですが、機械学習と統計学ってその近しさを実感するのは意外と難しい。そんな時この本に大変助けられました。
機械学習はデータを扱う技術ですが、ではどう扱うのか。その方向性を示してくれる本です。

4.1.特徴量選択
特徴量選択については以下がまとめとして有用でむしろこれ以上は探した範囲出てきません。
[特徴量選択の今と新展開](https://aotamasaki.hatenablog.com/entry/2019/02/10/130647)
[変数選択(Feature Selection)手法のまとめ](https://aotamasaki.hatenablog.com/entry/2018/04/18/201127)
特に特徴量選択については具体的な指針というのは目的変数と相関が高い物は採用、説明変数同士で相関が高い場合は次元圧縮か削除、ぐらいのニュアンスで良さそうですがこれを明言している説明は余り無いです。論文としては
[An Introduction to Variable and Feature Selection](http://jmlr.org/papers/volume3/guyon03a/guyon03a.pdf)
です。

4.2.特徴量エンジニアリング
特徴量エンジニアリングについてはラベリングやOne-Hot Encodingなど基本的なところは色々書籍なりブログで読んで、その他は数多Kaggleにあります。勉強の情報源として困ることは無いと思います。

上記本で方向性を得たら後は具体例です。具体例として一番良いのはKaggleのカーネルです。Kaggleのカーネルはモデリングに特化した記事もありますが、データの分析に特化した記事も多いです。
具体的にデータ分析をどのように勧めるか、それはKagglのカーネルです。その中でもデータ分析のお手本として最初に目に通しておきたいのは
[Titanic Data Science Solutions](https://www.kaggle.com/startupsci/titanic-data-science-solutions)
です。まさにお手本です。一番メジャーなTitanicのデータを使ってEDAとはどのように行うのかを具体的に示してくれています。日本語訳も見付けましたがサイト自体削除させているようなので、英語で頑張って下さい。

4.3.演習
書籍である程度ベースとなる知識を得たら、後はひたすらググりつつ、このようなKaggleのカーネルを読んでデータ分析のパターンを掴んでいくのが良いと思われます。それでも闇雲に探しても数が膨大ですし混乱します。最初は王道と言えるものを読んでいくと良いと思います。
機械学習のモデルを分類するにはデータとアウトプットの形式に分けて｢分類｣｢回帰｣｢時系列｣の三つに分けられると思います。
Kaggleでは初心者に優しいコンペを用意してくれてます。その中で先の三つに従ってあげると

分類
[Titanic: Machine Learning from Disaster](https://www.kaggle.com/c/titanic)

回帰
[House Prices: Advanced Regression Techniques](https://www.kaggle.com/c/house-prices-advanced-regression-techniques)

時系列
[Predict Future Sales](https://www.kaggle.com/c/competitive-data-science-predict-future-sales)

とあげられると思います。この後に読む物ものはその選択としてFavoritesの順に探索するのが良いと思います。

#5.Deep Learning
Deep Learningはなんだかんだ言ってもこれを無理にでも一度は通読しておくことは大切だと思います。


[ゼロから作るDeep Learning ―Pythonで学ぶディープラーニング](https://www.amazon.co.jp/ゼロから作るDeep-Learning-―Pythonで学ぶディープラーニングの理論と実装-斎藤-康毅/dp/4873117585 "ゼロから作るDeep Learning ―Pythonで学ぶディープラーニング")
この後でTensorFlow→Kerasとフレームワークの習得に進むのが良いと思います。

#6.延々と続く道
僕もまだこれからの身です。このエントリは僕の勉強の進み方、またネット上の情報の更新に合わせて編集、書き足しをしていこうと思います。