Lean Baseball

No Engineering, No Baseball.

「Pythonによる医療データ分析入門」は分析100本ノック後に必読な探索的データサイエンス本だった

今年読んだデータサイエンスおよびPython本の中でも最良の一冊でした.

f:id:shinyorke:20200721223641j:plain
ホントに待ち望んでいた一冊でした.

実は密かに楽しみにしてた(待ち望んでいた)*1, 「Pythonによる医療データ分析入門」, 一通り読ませていただきましたので,

  • Pythonによる医療データ分析入門の感想
  • 分析100本ノック後にやると良いこと
  • 探索的データサイエンスはデータサイエンスに関わる人すべてに関係する準備運動であり入り口であること

的な話を綴りたいと思います.

なお, 最初に断っておくと,

新型コロナウイルス含む, 感染症とか流行病の話は一切触れておりません!

このエントリーは純粋に「Pythonを使ったデータサイエンス」を志向した方向けのエントリーとなります.

新型コロナウイルスだの感染症関連だのを期待されている・そう思った方はぜひ他のページなどを見ていただけると幸いです.

このエントリーのダイジェスト(TL;DR)

  • Pythonによる医療データ分析入門」は医療データ分析のドメイン知識を身に着けながら, 「探索的データサイエンス」を実践的に学習できる, データサイエンスを仕事にする人にとって教科書になる一冊でした.
  • Python, 特にNumPy, pandasなどの定番ライブラリを使いながらやる分析タスクのすごく良い例かつ, コードを書くときの勘どころに触れているのが最高.
  • 「医療データ」をほかのデータに置き換えたらそのまま他の領域でもお手本になる超おすすめ本!

おしながき

書評「Pythonによる医療データ分析入門」

実はこの本7/20に発売されたばかりです.

今の所書籍版のみでKindle等の電子書籍は今の所見受けられませんが, 装丁が綺麗でコードがとても見やすいデザイン*2なので, 書籍版の時点で充分マストハブかなって思います.

さて, この先を読むのが面倒という方の為に感想のSummaryを準備しました.

少なくともこのセクションは上記ツイートの話をもうちょっと膨らませたお話となります.

対象読者

まずこの本の対象読者ですが,

  • 医療データ以外の分析をしたことがあり、Python, NumPy, pandasについて馴染みがある方
  • Python, NumPy, pandasについて馴染みがないが、保険数理について馴染みがあるアクチュアリー
  • 医療データや生物に関するデータを分析してみたい方、分析する予定がある方、分析した経験があるが手探りの方

と序章に記載されていました. そしてそれは(当然ですが)その通りだなと思います.

と同時に, 読んだ私の独自の感想といいましょうか更に付け加えると,

  • 仕事にせよ, 趣味にせよ, 「眼の前にあるデータ」を色んな方向で探索的に見たり分析しながら自分に課した(もしくは与えられた)分析・解析タスクを解くような事をしている方
  • 分析に関するコードをより読みやすくかつ, 効率良いコードを綺麗に書きたい方

も追加されるかなと思いました(理由は後ほど).

なお, 「入門」と名前に含まれていますがPythonやライブラリに関する解説・説明をゼロから書いてるわけではないので,

  • Pythonを少なからず読み書きできて
  • Anacondaとかでライブラリを自分で入れたりしながら
  • Jupyterでpandasなりmatplotlibなりで写経でもいいから分析したことある

ぐらいのレベルで無いと読むのは辛いかなと思いました*3.

また, 数学レベルは統計学などがメインで大学一年生レベルで充分読める内容でした(本の推奨もそんな感じでした).

感想

読んでて色々頷くポイントがたくさんありましたが, 大きく印象に残ったところとしては,

  • 探索→アルゴリズムを使う→ガチ統計の流れが良かった!
  • プログラマー視点でも学びが多いコーディングスタイル

この2つでした.

探索→アルゴリズムを使う→ガチ統計の流れが良かった!

この本の目次(by公式サイト)ですが,

第1章 死亡率を推定しよう

1-1 「日本版死亡データベース」の利用

1-2 加入者情報レコードの擬似生成

1-3 発生率の信頼区間

1-4 死亡率の計算方法の妥当性確認

第2章 発生率を推定しよう

2-1 「患者調査」の利用

2-2 レセプトの擬似生成

2-3 傷病条件付き新入院発生率・新入院平均在院日数

2-4 傷病条件付き診療行為

2-5 バイアスと修正

第3章 血圧別発生率に挑戦

3-1 「国民健康・栄養調査」の利用

3-2 健診レコードの擬似生成

3-3 健診結果別入院・外来レコードの擬似生成

3-4 健診結果別入院発生率状況の観察

第4章 医療統計の導入

4-1 セミパラメトリック分析~点推定

4-2 セミパラメトリック分析~区間推定

4-3 予測精度の評価~混同行列と性能評価指標

4-4 予測精度の評価~AUC

4-5 予測精度の評価~予実比較

これがホントよくできていて,

  • 第1章〜第3章までは出てくるデータセットに対して理解を進めながら分析・指標計算を進める
  • 後の章に行くと前の章の関数などをいい意味で使いまわしている(=使い回せるように綺麗にコードを書いてる)
  • 第4章がホントのゴールで, 医療統計・モデルで一気に色々やって優勝!

というホント考えられた・プロの仕業だなという良い構成でした.*4

これはデータサイエンスのタスク・仕事をしている人にはお馴染みなスタイル(探索的にデータを眺めたり分析しながらゴール到達)と一致していて読んでいて気持ちよかったです.

プログラマー視点でも学びが多いコーディングスタイル

データ分析のコード, 特にJupyterとかのnote系のやつは管理も記法もぐちゃぐちゃになること多いと思います.

私も正直適当です.

が, この本はそんな「汚くなりがちなコードをどうにかしよう!」ということで,

  • リーダブルコード」を教科書に, 変数や関数の名前をそれらしいルールに(一部例外を除く)
  • よくある「pandasのDataFrameでかくなりがち」問題に対して, del df['hoge'] したり, gc (ガベージコレクション)を明示的に実行など, 「メモリの節約」について, Appendixの項目としてしっかり解説*5

他にも細かい配慮があったりしてホントに良いデータ分析のコードのお手本として, オススメできるコーディングスタイル・やり方だなと思いました.

これは元々Webアプリとか他の言語やってる人にはある種当たり前感もありますがデータサイエンスな人にとっては目からウロコで嬉しいのでは!?

ちなみにリーダブルコード自体も読むとすごくよいと思います!

「分析100本ノック」の後に迷子になった人へのオススメ

とまあ書籍の感想は以上なのですが, ちょっと思い出したのが最近よくあるこれ.

これらに挑戦したりスコア出して結果残してる方も結構いると思いますが一方で

  • 仕事や本来やりたい分析・解析タスクに落とし込みができない
  • 用意されたデータセットは扱えるけど生データ()

などなど, 「実践的なデータ分析ができない」「100本ノックやったはいいけど試合でヒット打てない」という人も増えたなあって印象もあります.

せっかく覚えた手法・プログラミングを活かすという意味で,

  • 100本ノックの後に何でも良いから応用的なデータ分析をしてみる
  • なるべくなら, 良いお手本を探す. 書籍でもいいし, 誰かのブログ・発表の写経でもいい
  • ある程度できたら恐れず時間を作って再チャレンジ!

とできるといいかなと思いました.

ちなみに私自身は極稀に良いお手本の写経だったり, 思いつきでのデータ分析をよくやってこの辺を鍛えています.

探索的データサイエンスをはじめよう!

とまあ最後ちょっと脱線しましたが,

データサイエンスをする人は「データを探索的に眺めて立ち向かう」ようなサイエンスしていこうぜ!

そういうことです.

医療に興味ある方はぜひPythonによる医療データ分析入門で腕鳴らしをしてもらいつつ,

Python実践データ分析100本ノック

Python実践データ分析100本ノック

ちょっと自信を持てない人は100本ノックを頑張っていけばいいのかなと.

なお, 私はずっと野球データ分析*6をしていますが, 自分の血圧脈拍体重をかれこれ6年以上レコーディング*7しており, そろそろなにかできそうって思っているのでPythonによる医療データ分析入門をガチで参考にしてなにかやりたいと思っています.

そう, 他人事じゃないんですよ四十路の男にはね笑*8

*1:ほんの少しだけですが, 当書籍出版に関して協力させてもらってました. 詳しくはあとがきにて&一冊頂戴いたしました事, 誠に感謝いたしますありがとうございます!

*2:これは実際本屋さんで手に取るか, 買って手元に届いてから見て欲しい. これはホント装丁とデザインの勝利感!

*3:最初は比較的優しいコード多いですが, 少なくともPythonの文法記法がわからんと読むのは難しいかもなという印象でした. ちなみにデータサイエンスの経験無くてもWebアプリ作ってたりするレベルの人は普通に読めると思います.

*4:これは著者の青木さんの講演をPyData.Tokyoでお話を聞いたときもそうでしたが, 医療ドメインの話から徐々に課題・仮説に入っていって具体策のところにゴールという自然な流れでこれは自分も真似したいと思いました.

*5:これハマりがちかつあるあるなのでホント助かりました. ちなみに書籍中に「ガチ業務ではDaskとかPySpark使うやで」的なことに言及されていましたが, これは難しすぎるということで本文では触れていないあたり目的がしっかりしてていいなと思いました.

*6:シレッと言うと今年のPyCon JP 2020で久々に野球の話それもデータサイエンス・機械学習やります. 詳細はまた後日⚾

*7:Google Driveにあります, そこそこ欠損値ありますが.

*8:心身の健康に重大な問題があるわけではないですが未来には備えたいなと.