プロクラシスト

今日の寄り道 明日の近道

Pythonでゼロから機械学習/データ分析を学ぶためのサイトマップ


スポンサーリンク

f:id:imslotter:20171224195620p:plain

データ分析ガチ勉強アドベントカレンダー 24日目。

当サイトでも、Pythonを使ったデータ分析や機械学習について、勉強しながらそれをアウトプットとして出すと言うかたちで、何個も記事を書いてきました。 記事数で言えば50とかそのくらいあるような気がします。

カレンダーも完成しつつあるので、個々では当サイトの総まとめとして、機械学習やデータ分析に触れたいという人がゼロから始めて触れられるように、記事をまとめていきたいと思います。 何か面白いことを勉強したい学生、就職までの勉強に、急に機械学習を使わなければならない社会人方々は、読んで見てください。

0. 環境構築

まずは何と言っても環境構築。Pythonは他の言語に比べて構築が簡単な方だとは思いますが、ここでかなり苦戦する人が多いです。

0.1. Pythonの導入 (Anaconda)

当サイトではWindowsでも環境構築が簡単に出来るように記事を書いています *1*2。全くゼロから始める方はコチラをどうぞ。

0.2. エディタ (Pycharm/VSCode)

いわゆる高機能メモ帳。実際にコードを書き始めると、自分好みのエディタが欲しくなるものです。当サイトでは、PythonならPycharmを、またオールラウンドに使えるエディタとしてVSCodeを紹介しています。

0.3. バージョン管理 (Git)

(※あれば便利ですが無くてもコードは書けるので、面倒な方は飛ばしてもらってOKです。)

賢くコードを管理する仕組みです。ちょっと試したいことがあるだけなのに、コードを一部変更して、そのご間違って保存したりすると悲しいですよね。 そんなことがないように、しっかりと自分の作ったコードのバージョン管理しましょう。Gitの基本的な使い方はこちら

また、当サイトのGithubアカウントはコチラです。

github.com

作ったおもちゃや勉強の様子を保管しているので、よろしければぜひ。

1. Pythonの使い方(基本ライブラリ)

環境が作れたら、いよいよコードを書いていきます。 Pythonライブラリが充実しているので、それらを使いながらコードを書いていきます。 機械学習専用のライブラリもあるのですが、まず必ず入れておくべきライブラリであるnumpy, matplotlib, pandas, jupyterの使い方を紹介しています。

1.1. 数値計算 : numpy

これを用いることで面倒な基本計算(平均計算、行列計算、etc...)を一行で書けるようになります。スゴい!

1.2. 表計算/統計処理 : pandas

Pythonで表を読み込んだり、計算したり、また表として書き出したりするにはpandasがとても便利。 少し使い方にクセがありますが、かなり強力なので、是非身につけておきたいものです。

1.3. グラフ描画 : matplotlib

データ分析をしていると、結果をグラフで可視化したいということが多くあります。 そういうときにはmatplotlib. これ一つで色々なグラフを書くことが出来ます。

また、よりオシャレなグラフを作りたい方向けに、KibanaとElasticsearchで可視化する方法も書いています。この場合は、Python以外の知識も必要です。

1.4. インタラクティブなコード実行 jupyter

jupyterの良い点はちょっとずつコードを書きながら試すことが出来るというところです。 コード書いて、コンパイルして、実行...を短いサイクルで回すイメージ。 同時にメモも残せるので、研究や実験に最適です。

2. データ分析事始め

Pythonがある程度使えるようになったら、データ分析/機械学習のお勉強です。

その際に参考になる本やサイト、ライブラリなどをざっと洗い出した記事がありますので、リファレンス代わりにしていただければなと思います。

3. データ分析の流れ

ここから、実際に機械学習を交えながら、データ分析を進めます。

実務では、下図のようにデータ分析を進めていくのですが、その流れを、sklearnを使いながら説明していきます。

3.1 データを集める

まず、データを集めないといけません。 モデル/アルゴリズムの性能を調べたいときに、sklearnはいろいろなデータを予め用意してくれています。

また、情報を集めたいときはスクレイピング/クローリングなどの技術が必要です。 beautifulsoupを使ったり、公開APIを使うなどして、データを集めましょう。

3.2 データ分析の流れ

4. 時系列データ

時間依存のあるデータはそうでないデータに対して、少し扱いが面倒だったりします。 けれど、扱うことも多いので、まとめています。時系列に関する基礎的なまとめから、ディープラーニングに至るまで、まとまってますので、読んでみてください。

6. 深層学習

最近界隈を賑わせているディープラーニングに触れない訳にはいかないでしょう。 当サイトでは、KerasとPyTorchの2つに絞って、その使い方について説明しています。

6.1 自作

ライブラリを使う前に、ディープラーニングのココロを知るため、まずはPythonで自作しました。

1から書くと、どういう思想でネットワークが組まれているのかとか、学習の仕組みなどが分かるようになります。

6.2. Keras

とっつきやすさでは随一のKeras。簡単なデータ分析に使うにはこれで十分だと思います。ディープラーニングなんて知らなくても使えるそのお手軽さはスゴい。

6.3 PyTorch

研究者界隈で盛り上がりを見せているPyTorch。すこしコード記述量は増えますが、Define by Runの設計しそうなので、かなり柔軟な設計が可能。 更に、Sklearnとの連携で、より使いやすくなります。各ライブラリとの比較も書いていますので、是非ご一読を。

7. 教師なし学習(異常検知/次元削減など)

上記までが、正解データのラベルに従って学習を進めていく教師あり学習です。 実際の現場では正解データを使わないタスクも多くあります。

異常検知*3や、座標を変換する空間変換など、正解データという概念が無いようなものに対してもまとめましたので、必要な方はどうぞ。

8. 強化学習

強化学習は、教師あり学習とも教師なし学習とも違います。

実験して、その結果が帰ってきて、学習してまた実験する。

そのようなまるで人間のような学習の方法です。定式化が出来ない複雑な状況などに応用が期待されており、 実際にマーケティングの広告の配置などに使われたりしています。

9. 実際にデータ分析をしている記事

当サイトでは、実際に分析を行った記事をいくつか載せています。

そこまで高度なことはしていませんが、記事からデータ分析から分かること、データ分析のちからを感じてもらえればと思います。

まとめ

いかがでしたか。かなりいろいろなことをやっていたので、一つにまとめました

今回のアドベントカレンダーは、この記事の順番を意識して進めてきました。その流れで勉強していくと、割とスムーズに進められるのではないでしょうか。

データ分析業界が盛り上がっているので、これを機に一念発起して勉強したい方なども、ぜひご参考ください。ではでは!

*1:MacLinuxは環境構築方法をWebで漁れば簡単に出て来るし、またハマりどころもそんなに多くないので、ぐぐってみてください。

*2:機械学習ライブラリによっては、どうしてもwindowsで出来ないものもあります。

*3:厳密に言えば教師のある異常検知もあります。

PROCRASIST