データ分析ガチ勉強アドベントカレンダー 24日目。
当サイトでも、Pythonを使ったデータ分析や機械学習について、勉強しながらそれをアウトプットとして出すと言うかたちで、何個も記事を書いてきました。 記事数で言えば50とかそのくらいあるような気がします。
カレンダーも完成しつつあるので、個々では当サイトの総まとめとして、機械学習やデータ分析に触れたいという人がゼロから始めて触れられるように、記事をまとめていきたいと思います。 何か面白いことを勉強したい学生、就職までの勉強に、急に機械学習を使わなければならない社会人方々は、読んで見てください。
- 0. 環境構築
- 1. Pythonの使い方(基本ライブラリ)
- 2. データ分析事始め
- 3. データ分析の流れ
- 4. 時系列データ
- 6. 深層学習
- 7. 教師なし学習(異常検知/次元削減など)
- 8. 強化学習
- 9. 実際にデータ分析をしている記事
- まとめ
0. 環境構築
まずは何と言っても環境構築。Pythonは他の言語に比べて構築が簡単な方だとは思いますが、ここでかなり苦戦する人が多いです。
0.1. Pythonの導入 (Anaconda)
当サイトではWindowsでも環境構築が簡単に出来るように記事を書いています *1*2。全くゼロから始める方はコチラをどうぞ。
0.2. エディタ (Pycharm/VSCode)
いわゆる高機能メモ帳。実際にコードを書き始めると、自分好みのエディタが欲しくなるものです。当サイトでは、PythonならPycharmを、またオールラウンドに使えるエディタとしてVSCodeを紹介しています。
0.3. バージョン管理 (Git)
(※あれば便利ですが無くてもコードは書けるので、面倒な方は飛ばしてもらってOKです。)
賢くコードを管理する仕組みです。ちょっと試したいことがあるだけなのに、コードを一部変更して、そのご間違って保存したりすると悲しいですよね。 そんなことがないように、しっかりと自分の作ったコードのバージョン管理しましょう。Gitの基本的な使い方はこちら
また、当サイトのGithubアカウントはコチラです。
作ったおもちゃや勉強の様子を保管しているので、よろしければぜひ。
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. 実際にデータ分析をしている記事
当サイトでは、実際に分析を行った記事をいくつか載せています。
そこまで高度なことはしていませんが、記事からデータ分析から分かること、データ分析のちからを感じてもらえればと思います。
まとめ
いかがでしたか。かなりいろいろなことをやっていたので、一つにまとめました。
今回のアドベントカレンダーは、この記事の順番を意識して進めてきました。その流れで勉強していくと、割とスムーズに進められるのではないでしょうか。
データ分析業界が盛り上がっているので、これを機に一念発起して勉強したい方なども、ぜひご参考ください。ではでは!