まずは蝋の翼から。

学んだことを書きながら確認・整理するためのメモブログ。こういうことなのかな?といったことをふわっと書いたりしていますが、理解が浅いゆえに的はずれなことも多々あると思うのでツッコミ歓迎

「機械学習を解釈する技術」のここがすごい

はじめに

弊社の森下が書籍を出版することになりました。

機械学習を解釈する技術 ~ 予測力と説明力を両立する実践テクニック」

gihyo.jp

本書のレビューに関わらせてもらったのでここが良かったぞ!という部分を書こうかなと思います。

本書の特徴

本書の概要としては、以下のような書籍となっている

機械学習モデルは予測精度が高い一方で、何故そのような予測になったかがブラックボックス(解釈性が低い)
・しかし昨今は説明責任を果たすためにモデルの振る舞いの把握が求められている
・このような予測精度と解釈性のトレードオフを克服するための手法を紹介

※ 技術書評者のサイトの「この本の概要」をざっくり要約

機械学習の解釈性については数年前にInterpretable Machine Learningが公開されてからここにあるSHAPなりICEなりの手法をちょくちょく日本でも耳にすることはあったが理屈を知るのにこのInterpretable Machine Learningを読むなり、原論文を読む必要があった。つまり英語。めんどい。

一応ググってみるといくつか日本語ブログ記事が出ていたり、数ヶ月前に上記Interpretable Machine Learningの日本語化がされたりと日本語で解説を読むこともできるようになってきたが、結局数式の理解が不可欠なのであまり数式が得意でない自分は「なるほど?🤔」で止まっていた。

そのような中、もうちょっと平易な日本語解説でわかりやすくまとまった書籍がないかなーと思っていたところそのニーズを満たしてくれる書籍を出してくれた。神やんけ。

で、詳細は後述の「ここがすごいぞ!」にそれぞれ書きますが、「平易な日本語解説」「わかりやすく」という部分がとても丁寧に工夫されているのが本書の一番の特徴かな、と感じました。

なお、章立ては以下のようになっています。

1章:機械学習の解釈性とは
2章:線形回帰モデルを通して「解釈性」を理解する
3章:特徴量の重要度を知る〜Permutation Feature Importance(PFI)〜
4章:特徴量と予測値の関係を知る〜Partial Dependence(PD)〜
5章:インスタンスごとの異質性を捉える〜Individual Conditional Expectation(ICE)〜
6章:予測の理由を考える〜SHapley Additive exPlanations(SHAP)〜
付録A: R による分析例~ tidymodelsとDALEXで機械学習モデルを解釈する~
付録B: 機械学習の解釈手法で線形回帰モデルを解釈する

ここがすごいぞ!① 線形回帰モデルを起点に「解釈」について各手法を説明している

この本の特徴として、まずはいわゆる機械学習モデル*1ではなく、高い解釈性を持ち、皆が馴染み深い線形回帰モデルを通して予測モデルにおける解釈性とはどういうことか?ということを(全体概要である一章を除いた)初っ端の第二章からまず理解させます。

そして、その馴染み深い線形回帰モデルを起点にまずは「線形回帰モデルだとこうすればこういう解釈がわかる」と説明した後に、同じことに対して「機械学習ではこの手法(各章で紹介する手法)を使うことで同じように解釈ができる」と追従する形で各章の機械学習の解釈手法について解説している。

よくある専門書だと、その手法の解説のみに終始する。つまり0ベースで数式をベースに色々と解説がされ、それを土台に話が展開されていくので、ベースの理解(特に数式)をちゃんとしていないとなんとなくわかった気になりがちだが、まずは馴染み深いしわかりやすい「線形回帰モデル」を土台として、そこから各手法の解説に入るのでめっちゃわかりやすい*2。神かな?

ここがすごいぞ!②数式に対応するアルゴリズムをコードでも書いて説明している

論文はもとより、Interpretable Machine Learningなどいわゆる専門書は数式をベースに解説がされていることが多い。つまり、数式が読めることを前提に、その数式をベースに他の手法との差異やデメリットの説明を数学的にすることが多い。

もちろん、数式こそ何かを説明するのに端的で論理的で明示的な言語ではあるのだが、数式に強くない場合「なるほど?🤔」となってしまいがちである。

本書では、数式とともに数式に対応するアルゴリズムを平易なPythonで書くことで数式そのものだけでは理解が難しくても、アルゴリズムさえ見ればその1つ1つの処理の流れが明示されているのでその手法で何をしているかがとてもよくわかる。また、副次的にアルゴリズムから数式の読み方の学習もできる。神。

ここがすごいぞ!③ 実際の値を確認しつつ解説する

その手法の解説の際に、簡単なわかりやすいデータで解説を踏まえた挙動の確認を毎回丁寧にしてくれます。そのため、そのデータの実際の値を見ながらどうなっていったかの確認が非常にわかりやすいです。

イメージとしては、自分で関数とか書いたときにtestとして簡単なデータを渡して処理を確認するのに近い。

また、簡単なデータ例のあとにどの章でも実データのBoston Housing(ボストン住宅価格)を使っての解説もおこなっているので、簡易なデータによる挙動の確認→実データによる解釈の確認といった流れになっていてとても理解がしやすいです。神。

ここがすごいぞ!④ 手法の特徴・メリット・デメリットが腹落ちしやすい

「各手法の特徴はなにか、その特徴を踏まえたメリット・デメリットはなにか」ということを毎回明示的に記載がされてます。また、その際に、他の手法と比較しつつ、今までの解説を踏まえて書かれているのでなんとなくわかった気になるのではなく、ちゃんと「こうなるからこういうデメリットがあるのか!確かに!」と腹落ちしやすい構造となっています。

このあたりは構造として論文の読み方にも近いのでしょうが、この本で書いているような

  1. この手法の特徴は?
  2. なんでそういうことができるの?→コード書きながら理解
  3. 他の手法と比べたときのメリット・デメリットは? →2をベースにしたコードで再度理解

という流れは、あらゆる手法の理解にも通じるので、つよつよな人はこうやって手法を理解して使いこなしているんだなー、という観点でも非常に勉強になりました。

逆に言えば、こういう流れで理解できるような構成になっているので「つよつよな人の理解の流れで理解できる」からこそ、わかった気になりづらい書籍になっています。神。

まとめ

一般的な、専門書籍や論文を読むのが難しい人にも非常に配慮されている書籍となっていました。また、そのような書籍ではある種「猿でもわかる・・・」的な、ものすごく丁寧になりすぎて逆にわかりづらい・抽象化しすぎて表面しかわからん、みたいなことも起きない良バランスの書籍なように感じました。

自社の人が書いた書籍という点は関係なく、結構まじで自信を持っておすすめできる書籍だと思うので、機械学習に携わる人は是非買ってみてください。

*1:定義にもよりますが。。。

*2:後述のように数式を省略しているという意味ではない