プロクラシスト

今日の寄り道 明日の近道

【Day-1】データ分析/機械学習を行うために知っておきたいことを列挙する


スポンサーリンク

f:id:imslotter:20171201095130p:plain

データ分析ガチ勉強アドベントカレンダー一日目。 まずは指針をということで、データ分析をはじめるにあたって勉強しておきたいことと、そのリソースをまとめる。言語はPythonを想定。

  • 興味領域が偏っている場合があるのであしからず
  • こんなの面白いよっていうのあれば教えてくださいな

※随時更新します

Pythonライブラリ

こんなの勉強しておけば良さそうリスト。抜け漏れご容赦。

  • ★★★ : 必須。空で使えるようになりたいトコロ。
  • ★★  : 周辺ツール、知っていればより便利になるよという感じ
  • ★   : あるアルゴリズムに特化しているようなもの。一歩先
ライブラリ 必須度 用途
numpy ★★★ 数値計算用のライブラリ。いろいろしてくれる
scikit-learn ★★★ 機械学習用ライブラリ。たいていの基本的なことはここで出来る
matplotlib ★★★ グラフ描画用ライブラリ。オシャレさはないけど使いやすい
pandas ★★★ 表計算用ライブラリ。Excelなんて目じゃない。
Jupyter ★★★ コード書きながら実験できるのが便利。詳しくはこちら
scipy ★★ 統計処理の計算ライブラリ。numpyとsklearnで事足りる感は正直ある
BeautifulSoup ★★ スクレイピング用ライブラリ。オリジナルデータ作成のときは役に立つ
urllib ★★ クローリング,スクレイピング用ライブラリ
re ★★ 正規表現ライブラリ。文字列の処理に使う
json ★★★ jsonファイルの読み書き、パースを行うライブラリ、何かと使うことが多い
deap 進化計算用ライブラリ。コチラのqiitaが詳しい
statsmodels 時系列分析用ライブラリ
prophet facebook謹製の時系列分析用ライブラリ
opencv ★★ 画像を取り扱うときに使うライブラリ
pyMC MCMC用ライブラリ、サンプリングがかんたんに出来る。亜種にPyStanもあり
pycwt wavelet変換用ライブラリ。コチラのqiitaが詳しい
mecab ★★ 日本語形態素解析用ライブラリ。自然言語処理をするなら
gensim トピックモデル、word2vec, doc2vecなどを作るライブラリ

深いアレたち

Deeplearning用のやつ。最近乱立してて、キャッチアップし切れていない感もあるけど、気になる奴らをとりあえず拾ってみる

ライブラリ 用途
sonnet DeepMind社謹製深層学習ライブラリ。以前記事でも少し取り上げた
chainer PFN社が作る国産ライブラリ、日本語ドキュメントが豊富
tensorflow Google謹製OSS。とっつきづらいが圧倒的人口
edward 確率的プログラミング用のライブラリ。tensorflowのラッパー
keras thaanoやtensorflowのラッパー、簡単にネットワークを構成できる
pytorch chainerをフォークして作られたライブラリ。ドキュメントやチュートリアルが充実している
chainerMN 画像の学習で世界最速を実現した(記事 )並列分散学習パッケージ
chainerRL 深層強化学習用ライブラリ

参考記事 : 【PyTorch、Chainer、Keras、TensorFlow】ディープラーニングのフレームワークの利点・欠点【2017年10月更新】 - HELLO CYBERNETICS

機械学習のお勉強

論文

arXiv

日々更新されるarXivから興味のあるものを拾う。

https://arxiv.org/list/{}/recent

このURLの{}部分を変えると、いろんなジャンルの論文が読める。例えば↓

  • stat.ML : 機械学習全般
  • cs.CV : 画像処理系
  • cs.NE : 進化計算系

尚、最近アーカイブのML系論文をHTML系形式で読めるArxiv Vanityなるものを知った。

また、オープンソース型の最新論文情報共有サイト、arXivTimesなるものもあり、issueで論文のひとことメモを残していく形になっている。

またまた、arxivの要旨とgithubソースコードがいっぺんにまとまったGitXivなるものもある。面白そうなものを素早く試せそうで良。

カンファ

e-learning

Andrew Ng先生のMachine Learningチャンネルが勉強にはとても良さそう。

www.coursera.org

Deeplearningチャンネルも開設された。

www.coursera.org

読んだ本/積読本を載せたい。

  • 難易度とオススメ度は主観(3段階)
  • 統計、機械学習
  • これも随時更新
難易度 オススメ度 内容 or 感想
統計学が最強の学問である ★★★ 統計がどういう場面で使われているかわかりやすい一般書。まずイメージをつかむなら
統計学入門 (基礎統計学?)
自然科学の統計学 (基礎統計学)
人文・社会科学の統計学 (基礎統計学)
★★ ★★★ 東大の統計の授業でも用いられている教科書。非常に網羅的でよい。数式もきちんと理解したいなら必読。ちなみにコレの後に続くシリーズで、自然科学の統計学人文・社会科学の統計学がある。難しいらしい。
データ解析のための統計モデリング入門――一般化線形モデル・階層ベイズモデル・MCMC (確率と情報の科学) ★★★ 統計モデリングをコード実行例を含めて非常にわかりやすくまとめている。言語がRなのが(個人的に)玉に瑕だが、良書
はじめてのパターン認識
わかりやすいパターン認識
続・わかりやすいパターン認識―教師なし学習入門―
★★★ 通称『はじパタ』機械学習の網羅的な入門だと、これがいいかもしれない。数式もきちんと記述されているので、どういう仕組みで動いているかのイメージが出来る。このシリーズにも続きがあって、『わかパタ』、『続わかパタ』があるが、続わかパタはかなり難しい*1
深層学習 (機械学習プロフェッショナルシリーズ) ★★ ★★ ディープラーニングの理論的入門書として、網羅的でとてもよい。しかし、2年前の本なのでもう最先端のディープからはすこし違うところもある。けれど何やっているのかを把握するのにはオススメ
パターン認識と機械学習 上
パターン認識と機械学習 下 (ベイズ理論による統計的予測)
★★★ 通称『PRML』読むなら修行のつもりで。かなり数式が多い。この内容がわかるようになると、特にベイズ周りの扱いにはとても強くなると思われる。なお、副読本もある(パターン認識と機械学習の学習―ベイズ理論に挫折しないための数学)
ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装 ★★★ ディープラーニングでCNNを実際に全部自分で実装しながら学ぶやつ。プログラミングの練習にもなり、またどういうデータが入力になってどう出力されるかも明確にわかるので理解が深まる。
言語処理のための機械学習入門 (自然言語処理シリーズ) 積読 積読 自然言語の入門書として名高い。読みたい。
異常検知と変化検知 (機械学習プロフェッショナルシリーズ) ★★ ★★ データ分析案件で結構な頻度出てくる異常検知。統計的な異常検知は割と網羅的。最近はディープラーニングを用いた異常検知もあるが、それは含まれていない
時系列解析入門 ★★ ★★★ 時系列分析の教科書的存在。それなりに難しいが、それは時系列という存在が難しいのでやむなし。かなりわかりやすく書かれている。
岩波データサイエンス Vol.6 積読 積読 最近出た時系列解析の本。各論的でレベルも高いが、かなり最先端の技術に触れられる。
詳解 ディープラーニング ~TensorFlow・Kerasによる時系列データ処理~ 積読 積読 CNNを用いた画像分析はかなりいろいろと出回っているが、時系列データ処理に特化したディープラーニング本ってあまりないと思っている&興味分野なので、読みたい
深層学習 Deep Learning 積読 積読 有名な本。プロフェッショナルシリーズよりは難しい。実際の研究事例がまとまっているようなものなので、ディープラーニングをもうちょっと深くしたくなったら読む予定。
代数幾何と学習理論 (知能情報科学シリーズ) 積読 積読 ガチ理論。なぜか学習が起こるのか、とかそういうの(だと思っている)。これと情報幾何は趣味程度に読み進めたい。
これからの強化学習 ★★★ ★★ 強化学習自体ややこしいので、結構読み進めるのは難しいが、基本が網羅的に学べ、またDeep Q-learning(DQN)についても和書で初めて触れた本。がんばって読み進めると、かなり詳しくなれる。

まだあった気がするが、、、とりあえずこのくらい。。。

  • 数式に自信ある : 難易度関係なくオススメから
  • 数式はあまり... : 難易度低いの中心に

自分の興味のある範囲のものを読んでみればいいと思います。

twitter

  • 興味がある分野での有名な人のtwitterを抑えておいたら、やはり色々と捗る。

データを集める

  • 最近の機械学習pythonライブラリ(chainer, tensorflow, sklearn, statsmodels, prophet, etc... )はdatasetクラスが用意されていて、予め有名なデータが保存されている。
  • オープンデータなら、とてもいいまとめ資料がこちらにある :
    beginning-ai.hatenablog.jp

  • 政府統計の総合窓口(e-Stat) : 日本人の統計データが色々とある。APIもあるので、データを扱いやすい。

  • 先も紹介したCVPaperに、CV用データセットが載っている
  • Kaggleデータ分析コンペ。上位入賞者は結構な賞金がもらえる。データも面白いものが多かったりする。最近ではメルカリデータとか?データ扱う練習 or 賞金狙い でやってみるのも良し。

チートシート

情報が散らばっているので、とりあえず集積してみた。が、あまりにも量が膨大なので、自分が何を勉強したいかを把握しながらすすめていくといいと思った。そこで役に立つのがチートシート

下記サイトは、チートシートのまとめをしてくれている。結構網羅的。

becominghuman.ai

終わりに

時代によって移り変わりが激しすぎるので、今後も定期的にアップデートしたいなと思う。

あと、理解するために

  • タスクは何か
  • インプット、アウトプットは何か(実装レベルで)
  • 既存のものに比べてどう嬉しいのか
  • (できれば)なぜそういう恩恵があるのか、理論的考察

をきちんと抑えながら理解をしていきたいなと思う。

さて、明日はどうしようかな。

*1:ノンパラメトリックベイズを扱っている

PROCRASIST