はじめに
自分が初めてデータ分析らしい仕事をしたとき、やっていたのは現場から届くCSVを手で結合してExcelで集計する作業だった。ファイルは毎月数十個。列の並びは送り主によって微妙に違う。コピペを三時間続けた最後に合計がずれていることに気づいて、また最初からやり直す。あの徒労感はいまでもよく覚えている。
同僚から「それコードで書けるよ」と言われたのをきっかけに、言語を一つ覚えることにした。ところが入口で別の壁に当たる。PythonとRのどちらから始めるか、文法を覚えた次に何を読むか、機械学習にはいつ手を出せばいいのか。検索すれば断片的な情報は無限に出てくるが、取り組む順番までは書かれていない。
そこで自分は本を順番に読む方法に切り替えた。書籍には著者が設計した順路がある。その順路に乗るだけで、自分で地図を描く手間が省ける。結果として、遠回りしたつもりが一番早かった。
この記事では、手作業の自動化から始めて、前処理、可視化と統計、機械学習、深層学習まで、自分が実際に通った順に5冊を並べる。PythonとRを混ぜているのは、片方しか使わない人にも相手側の発想が効いてくるからだ。
① 退屈なことはPythonにやらせよう 第2版 ―ノンプログラマーにもできる自動化処理プログラミング — Al Sweigart
著者のAl Sweigartは入門者向けPython書籍を何冊も書いている開発者で、原書をWebで無料公開している教育者でもある。説明の順番が徹底して初学者寄りだ。
内容は文法の基礎から始まり、リストや辞書、文字列操作、正規表現へと進む。後半はファイルの読み書き、ExcelやPDF、Wordの操作、Webスクレイピング、キーボードとマウスの自動操作まで扱う。どの章にもすぐ動くコードが載っている。
自分に効いたのは正規表現とExcel操作の章だった。読んだ週末に集計スクリプトを書いて、三時間の作業が数十秒になった。学習効果よりも先に、時間が返ってくる実感があった。
一方で、クラス設計やアルゴリズムの話はほとんど出てこない。ソフトウェアとして保守する段階に入ったら別の本が必要になる。
こんな人に: 毎週発生する定型作業を、まず手元から消したい人。
② Pythonによるデータ分析入門 第3版 ―pandas、NumPy、Jupyterを使ったデータ処理 — Wes McKinney
著者のWes McKinneyはpandasの作者だ。ライブラリを設計した本人が書いているので、なぜこのAPIがこの形なのかという背景まで読める。
NumPyの配列操作から入り、Seriesとデータフレームの構造、読み込みと書き出し、欠損値処理、結合、整形、グループ集計へと進む。後半では時系列データとpandasの応用的な使い方を扱う。
第3版はPython 3.10とpandas 1.4以降に対応している。インデックスの挙動やコピーの扱いといった、つまずきやすい部分の説明が丁寧だ。自分はgroupbyとmergeの章を何度も開き直した。
分析の前処理に時間の大半を取られるのは、どんな現場でも変わらない。そこを速くする投資としては効率がいい。
こんな人に: pandasを雰囲気で書いていて、毎回エラーの原因が分からない人。
③ Rではじめるデータサイエンス — Hadley Wickham、Garrett Grolemund
Hadley Wickhamはggplot2やdplyrを含むtidyverse群の設計者、Garrett Grolemundは同じチームの教育担当として知られる。R界で最も読まれている入門書の一つだ。
特徴は可視化から教え始めるところにある。ggplot2でグラフを描き、dplyrで絞り込み、tidyrで形を整え、その往復のなかで探索的分析の型を身につける流れになっている。rmarkdownによる再現可能なレポートまで扱う。
「整然データ」という考え方は、Pythonしか使わない人にも効く。1行が1観測、1列が1変数という原則を頭に入れてからは、pandasでの設計判断も迷わなくなった。
グラフを文法として組み立てるggplot2の発想は、matplotlibに慣れた目には新鮮だった。可視化の試行回数が増えると、データを見る解像度が上がる。
こんな人に: 探索的分析と可視化のやり方を、感覚でなく型として覚えたい人。
④ Rによる機械学習 [第3版] (Programmer's SELECTION) — Brett Lantz
著者のBrett Lantzは社会学の研究者としてキャリアを始め、データサイエンティストとして実務に移った人物だ。アルゴリズムの説明に例え話が多く、数式の前に直感が来る。
k近傍法、ナイーブベイズ、決定木とルール学習、回帰、ニューラルネットワークとSVM、ランダムフォレストと、主要なアルゴリズムを一章ずつ実データで動かしていく。各手法の長所と短所が表で整理されているのが地味に便利だ。
後半は交差検証やモデル評価、過学習への対処、不均衡データの扱いに踏み込む。SparkやH2Oといった大規模データ側の話題にも触れている。
Rの本だが、価値の大半はアルゴリズムの選び方と評価設計にある。scikit-learnで同じ流れを再実装すると理解が定着する。自分はそれで決定木とランダムフォレストの違いが腹に落ちた。
こんな人に: モデルを動かせるが、手法の選択理由と評価設計に自信がない人。
⑤ PythonとKerasによるディープラーニング — François Chollet
著者のFrançois CholletはKerasの作者で、現在も深層学習フレームワークの設計に関わっている。説明の軸が一貫して「何を表現しているか」に置かれている。
テンソルと勾配降下法の説明から始まり、画像分類、畳み込みネットワーク、テキストとシーケンスの処理、生成モデルへと進む。コードはKerasなので短く、ネットワーク構造の意図がそのまま読める。
自分が一番得をしたのは、過学習と正則化の章だった。層を増やす前に、データ量とモデル容量の関係を見る癖がついた。精度が出ない原因を構造のせいにしなくなったのは大きい。
日本語版は原書初版にあたるため、Transformerや最新のAPIは扱っていない。基礎概念を固める目的なら今でも通用するが、最新手法は別の資料で補う前提で読むといい。R派の人には同じ著者によるDeep Learning with Rがある。
こんな人に: 深層学習を写経で済ませず、各層の役割を説明できるようになりたい人。
まとめ
| ステップ | 読む本 | 得られるもの |
|---|---|---|
| 1 自動化 | 退屈なことはPythonにやらせよう | 手作業を消すスクリプトと基礎文法 |
| 2 前処理 | Pythonによるデータ分析入門 | pandasとNumPyの正しい使い方 |
| 3 可視化と探索 | Rではじめるデータサイエンス | 整然データの考え方と探索の型 |
| 4 予測モデル | Rによる機械学習 | 手法の選び方と評価設計 |
| 5 深層学習 | PythonとKerasによるディープラーニング | ネットワーク構造を読む力 |
今の課題から1冊を選ぶなら、こう考えるといい。
- Excelの手作業に毎週時間を取られている → 退屈なことはPythonにやらせよう
- pandasのエラーで毎回検索している → Pythonによるデータ分析入門
- グラフを描いても何も読み取れない → Rではじめるデータサイエンス
- モデルの精度が上がらず打ち手が思いつかない → Rによる機械学習
- 深層学習のコードを写すだけで終わっている → PythonとKerasによるディープラーニング
5冊を一気に読む必要はない。自分は2か月に1冊くらいのペースで進めた。手元の困りごとに一番近い本から始めると、読んだ分だけ仕事が軽くなる。