📖

DS見習いが去年一年間で学習した書籍

2022/05/04に公開

はじめに

はじめまして、Tuttiです。
近年、データサイエンティスト (以降、DSと省略) を目指す方が非常に多いですよね。
そこで今回はDSを目指している方々の参考になればと思い、新卒1年目を終えたばかりのDS見習いが一年間で学習した書籍について、記録も兼ねて紹介していきたいと思います。

目次

  • 自己紹介
  • 書籍紹介
    1. [第3版]Python機械学習プログラミング 達人データサイエンティストによる理論と実践
    2. Pythonではじめる機械学習 ―scikit-learnで学ぶ特徴量エンジニアリングと機械学習の基礎
    3. SQL 第2版 ゼロからはじめるデータベース操作
    4. 実践Pythonによるデータベース入門 - MySQL,MongoDB,CouchDBの基本操作からアプリプログラミングまで -
    5. データ分析のための数理モデル入門 本質をとらえた分析のために
    6. Kaggleで勝つデータ分析の技術
    7. Pythonで学ぶ実験計画法入門 ベイズ最適化によるデータ解析
    8. 時系列解析 ―自己回帰型モデル・状態空間モデル・異常検知―
    9. 経済・ファイナンスデータの計量時系列分析
    10. データ解析のための統計モデリング入門 一般化線形モデル・階層ベイズモデル・MCMC
    11. 【PythonとStanで学ぶ】仕組みが分かるベイズ統計学入門 (Udemy)
    12. カーネル多変量解析 非線形データ解析の新しい展開
    13. 例題でよくわかる はじめての多変量解析
    14. しくみがわかるベイズ統計と機械学習
    15. Pythonによる制御工学入門
  • 一年間を通して感じたこと
  • まとめ

自己紹介

  • 旧帝理系院卒 (非情報系)
  • 修士研究でPythonを使用して数値シミュレーションをしていたが、機械学習に関しては未経験
  • 入社前に、統計検定2級、G検定、画像処理エンジニア検定エキスパートを取得

書籍紹介

1. [第3版]Python機械学習プログラミング 達人データサイエンティストによる理論と実践

機械学習の全体像を把握するために読みました。
自分は第2版を読みましたが、現在第3版が出版されています。
説明が丁寧、図や数式が多くイメージしやすい、サンプルコード内のコメントが多く処理を追いやすいと感じました。
Pythonの基本的な文法と線形代数がある程度できれば、そこそこ読めるのではないかなと個人的には思います。

2. Pythonではじめる機械学習 ―scikit-learnで学ぶ特徴量エンジニアリングと機械学習の基礎

この本も先ほどと同様、機械学習の全体像を把握するために読みました。
Python機械学習プログラミングは、Flaskを用いたWebアプリケーションの作成やTensorFlowを用いたディープラーニングなど機械学習以外の内容も含みますが、Pythonではじめる機械学習は、機械学習のみ紹介されています。
個人的には書店で内容を確認してみて、フィーリングが合う方を選択すればいいかなと思います。

3. SQL 第2版 ゼロからはじめるデータベース操作

SQLは全く触ったことがなかったので勉強しました。
2週間くらいで基本的な操作はできるようになると思います。

4. 実践Pythonによるデータベース入門 - MySQL,MongoDB,CouchDBの基本操作からアプリプログラミングまで -

Pythonでデータベース操作する方法を勉強するために読みました。

5. データ分析のための数理モデル入門 本質をとらえた分析のために

機械学習以外の数理モデルを勉強するために読みました。
コードは一切載っていません。多くの図とわかりやすく説明された数式により、各モデルの特徴や目的が単純明快に記載されており、非常にわかりやすいと思います。
数理モデルを浅く広く把握したい場合に、とてもおすすめの書籍です。

6. Kaggleで勝つデータ分析の技術

モデルの精度を向上させるのに有効な手法を知るために読みました。
特に第3章 特徴量の作成と第5章 モデルの評価が学びが多かったです。
ただ、内容がかなり深く難しいと思うので、優先度は低いかなと思います。
自分も全体の3割程度しか本質を理解できていないと思います。

7. Pythonで学ぶ実験計画法入門 ベイズ最適化によるデータ解析

実務でガウス過程回帰を使った分析の紹介があり、そこで初めてガウス過程回帰を知り、予測結果と不確実性を同時に示せるという点に感動したため、勉強しようと思いこの書籍にたどり着きました。
ガウス過程回帰の説明が非常に丁寧、数式の導出に関して行列を一度成分表示した後にインデックスを使って一般化するという手順のため、数式を追いやすかったです。
多変量になるとどうしても難しく感じますが、その部分がだいぶわかりやすく説明されていると思います。
ガウス過程回帰の雰囲気を知りたい場合は、こちらの動画がおすすめです。
https://www.youtube.com/watch?v=rbzq8bZlsnM
またガウス過程を最適化に応用したベイズ最適化に関しては、こちらの動画がわかりやすいと思います。
https://www.youtube.com/watch?v=pQHWew4YYao

8. 時系列解析 ―自己回帰型モデル・状態空間モデル・異常検知―

こちらも実務でVARモデルの紹介があり、そこで初めて知ったので勉強しました。
VARモデルはARモデルをベクトルに一般化したモデルであり、ある成分に別の成分の過去の値からの影響を考慮して推定可能であるという特徴があることを知りました。
また、業務で因果探索を行っていた際に、VAR-LiNGAMという手法を用いたのですが、この手法でもVARモデルが仮定されています。
VAR-LiNGAMの詳細については、こちらの記事に詳しい説明があります。
かなり参考にさせていただきました。ありがとうございました。

9. 経済・ファイナンスデータの計量時系列分析

時系列分析の書籍を調べると、間違いなくこの本がオススメに入っているくらい著名な本です。(通称、「沖本本」)
時系列分析を行う際に、この本から読み始めるとおそらく挫折すると思います。
基礎的な本で時系列分析の概要を把握したうえでステップアップするために読む、時系列分析を行う際のリファレンスとして持っておくのがいいのかなと個人的には思います。

10. データ解析のための統計モデリング入門 一般化線形モデル・階層ベイズモデル・MCMC

この本も統計モデリングの書籍を調べると、必ずと言ってよいほどオススメされる本です。(通称、「緑本」)
内容の構成・流れが秀逸で、とても理解しやすいです。花の例を用いてわかりやすく説明されており、スラスラ読めるのに本格的というとても不思議な本です。
また著者である久保先生自ら説明している動画もあるので紹介します。
https://www.youtube.com/watch?v=wO8jd0z5YRQ

11. 【PythonとStanで学ぶ】仕組みが分かるベイズ統計学入門

こちらは書籍ではないのですが、緑本で勉強したことを実際の分析で使用するためのコードの書き方を理解するために勉強しました。
ベイズモデルは、ある事象やパラメータに関して前もってわかっている条件 (前提知識) を事前分布に反映させられる、サンプリング回数が多くなるほど求めたい分布と事後分布が近くなるという特徴があります。
そのような特徴から値だけでなく分布も知りたい、値の不確実性を評価したい場合に、非常に有効な手法だと思います。

12. カーネル多変量解析 非線形データ解析の新しい展開

機械学習をしているとよく聞く「カーネル」。
勉強前は「とりあえずガウシアンカーネルを選んでおけばいいでしょ」という「サイエンティスト」としてはあるまじき態度でしたが、この本を読んでからカーネルの役割を理解でき、以前よりも理論的な裏付けを持ってカーネルを選択できるようになりました。
ただ後半に進むにつれて、内容が徐々に難しくなっていくので深追いすると沼にハマると思います。
自分は第1章から第3章まではある程度理解できましたが、第4章以降は非常に難しく感じました。
しかしながら、第1章から第3章だけでも十分に勉強する価値はあると思います。
10.データ解析のための統計モデリング入門と12.カーネル多変量解析は、どちらも岩波書店の確立と情報の科学シリーズであり、このシリーズは難しい内容をわかりやすく説明してくれているのでオススメです。

13. 例題でよくわかる はじめての多変量解析

主成分分析で次元削減できるのは知ってるけど、背後にある理論を知らなかったので本書で勉強しました。
本書はタイトルの通り、例題を通して各解析方法を使用することで、各手法の使用方法や結果の味方を学ぶことが出来ます。
主成分分析は固有値問題に帰着できるということを、数式を用いて丁寧に導出してくれます。
また主成分分析とよく似ている分析手法として因子分析があります。
どちらも固有値問題に帰着されるのですが、その方向が違います。
オートエンコーダの入力層から隠れ層を求める流れが主成分分析、隠れ層から出力層を求める流れが因子分析と理解すると、それぞれの手法の意味が理解しやすいと思います。
ここら辺の説明はこちらの動画で非常にわかりやすく説明されています。
AIciaさんの動画はどれもわかりやすく説明されているのでとてもオススメです。
https://www.youtube.com/watch?v=M6wCZCv28EQ

14. しくみがわかるベイズ統計と機械学習

基本的な確率やベイズの定理から始まり、EMアルゴリズム、MCMC、VAEへと発展していきます。
ベイズ統計に関する本を数冊読み、個人的に難解な本が多いなと感じる中、こちらの書籍はかなりわかりやすいと感じました。
ベイズ統計に入門したいけど、どの書籍が良いかわからないという場合、自分がオススメするとしたら本書になるかなと思います。
他にもわかりやすい書籍がありましたら、教えて頂けますと嬉しいです。

15. Pythonによる制御工学入門

PID制御や状態空間モデルに関して勉強するために読みました。
機械学習とは毛色が異なりますが、制御工学も自動車やロケットの軌道予測などで使用されていることを学びました。
個人的に一番良かったのが、ラプラス変換の有用性を理解できたことです。
大学でラプラス変換を学んだときは、その偉大さに気づくことが出来ませんでしたが、いざ必要になって勉強すると「ラプラス変換すご!!!」となりました。


以上がそれなりに腰を据えて読んだ本でした。
他にも面白そうな本はつまみ食いしてますが、難しすぎて読破出来ないことが多いです。(笑)
またデータ分析関連以外の書籍として、GitやDockerの書籍も読みました。

現在は統計検定準1級を取得すべく、以下の書籍を勉強しています。
統計検定準1級に合格した暁には、勉強方法や勉強期間などをまとめて合格体験記を投稿したいと思います。

一年間を通して感じたこと

  1. ドメイン知識めちゃ大事
  2. 特徴量作成やモデルの精度向上も大事だが、それ以上に解決すべき課題を意識した分析を行うことの方が重要
  3. わかりやすい変数名や関数名の設定、適切なコメントの記述など、他人が自分のコードを見るという意識

まとめ

一年間で様々な機械学習手法の概要は掴めたかなと思います。
しかしながら、まだまだ知らないことだらけなので、引き続き継続して学習することが重要だと感じています。
今までは業務にキャッチアップするために、業務外でインプットすることが多く、なかなかアウトプットする習慣がありませんでしたが、これからは最低でも月に一度のペースは維持しつつ、アウトプットする習慣をつけたいと思います。
ここまで読んでいただき、ありがとうございました。

Discussion