とある京大生の作業ログと日々の雑記

コンピュータサイエンスについて学んだことを可視化したり日々の雑記をまとめてます。

カステラ本を読みました(全部ちゃんと読んだとは言ってない)

こんにちはコミさん(@komi_edtr_1230)です。




最近は爆速でCS系の名著と言われる本を読みまくっては書評をしまくるという荒技をやってるんですけど、今回はカステラ本と呼ばれる『統計的機械学習の基礎』の書評をしようと思います。




多分日本の書店だったら機械学習系のコーナーに黒い鈍器が置いてあるんですけど、それです。




「なんでカステラ本って呼ばれてるの?」と思う人も割といると思うんですけど、それは原著の方の表紙がこんな感じだからです。




f:id:komi1230:20181026233128j:plain




カステラでしょ?




うん、カステラ。




てことで早速レビューに入ります。



読むに至ったきっかけ






最初はそこまで考えてなかったけど、ツイッターでTJOさんのおすすめ参考図書にカステラ本がランクインしてて、「TJOさんが言うならこれは読むしかねえなぁ」と思ったのがスタート。




とりあえず「The Elements of Statistical Learning」で検索してみるとPDFが手に入ったので、とりあえず読むべきCSの教科書ファイルに保存。




そこからPRMLとかネットワーク本に気を取られて放置してたんだけど、Security Engineeringが意外としょーもなくて絶望してたところに気を取り直すべく選んだのがカステラ本で、そこから通読スタートって感じですね。



読み方






通読とは言ったものの、ちゃんとしっかり読んだか言えばそうでもないです。




全18章構成で、6章くらいのモデル選択あたりまではしっかり読んでたんですけどあまりにもPRMLと内容がかぶってるから途中で読み方を変えてBoostingとかRandom Forest、教師なし学習など読みたい箇所だけをパパッと読みました。




なんか虫食い状に読むのはどうかなって思ったんですけど、カステラ本は各章ごとにアルゴリズムがしっかり分けられてるんでこういう辞書的な使い方も悪くないのかなって。




まあそんな感じで読みました。



感想






全体的な感想でいうと、




かなり読みやすかった。めちゃくちゃおすすめ。




内容として、割と幾何的な説明が多く、たくさん図を用いて可視的に解説してあったのでわかりやすかったですね。




説明方法についてもとても丁寧で、アルゴリズムを数式を用いて解説したあと具体例として様々なデータを持ち出してそれらを実際にアルゴリズムで検証するなど、各章が地に足がついた解説という印象があり、やはりこれが名著たる所以だなぁ、と。




以下では読みごたえがあったところをいくつかピックアップしていきます。



線形回帰と分類






機械学習をやるとなるとやはり最初は線形回帰から入るんですけど、一般的な機械学習の本は線形回帰と正則化ノルムの話をしてだいたい終わりです。




実際にPRMLも線形回帰については正則化ノルムなどを解説したあとにベイズを持ち出してきて事前分布と事後分布をゴチャゴチャやる感じです。




しかしカステラ本の良さは、線形回帰をただ単にそれで終わらせるだけでなく、そこから考えられるアルゴリズムをとことん追求する点です。




具体的に、データ行列の次元削除を行う特異値分解(SVD)とか主成分分析(PCA)は主に線形回帰とは別もので語られがちなんですけど、カステラ本ではリッジ回帰を議論するために最初にSVDとかPCAを用意し、推定パラメータについてガンガン議論していきます。




しかもこの線形回帰の章でロジスティックまでナチュラルに拡張します。




なのでカステラ本における最初の章は線形回帰というよりも一般的な回帰の章という感じがあって、スタートからガツンとくるなぁと感動しましたね。




線形分類の章は、アフリカの病気の原因推定というかなり具体的な話題でそれらのデータを分析するということを行います。




またそれ以外にも各アルゴリズムのメリットとデメリットをあげて、ロジスティックとLinear Discrimat Analysisはどう違ってどっちが優れてるのかなどしっかり議論します。




最初からここら辺はかなり読みごたえがあって、面白かったので必読ですね。



教師なし学習






カステラ本の教師なし学習への力の入れ方はハンパないです。




実際、関連度分析やクラスター分析などの様々なケースに合わせてしっかり見ていきます。




データが非独立の場合などの潜在変数についての議論も充実しており、教師なし学習というかもはや立派な統計学の教科書となってます。




多変量解析についても充実していて、読みながら「おお、ここまでカバーするのか」と感動しました。




もちろん図やグラフもてんこ盛りで、アルゴリズムがわからなくても図でイメージしやすくなっていたり、それぞれの数式操作の幾何的意味を捉えたりと非常に丁寧な説明が展開されます。



微妙なとこも






カステラ本は非常にいい本なのですが、やっぱり思ってたよりニューラルネットやグラフィカルモデルが充実してない気がします。




ただまぁニューラルネットに関してはカステラ本が悪いというよりは当時はまだニューラルネットの研究が進んでなかったので仕方ないという側面があり、ニューラルネットをしっかり勉強しようというとゼロから作るディープラーニングのような初心者向けの書籍やその他の書籍を参照するしかないような気もします。




また、グラフィカルモデルについてはPRMLが神だったというのもあって、PRML読後にカステラ本のグラフィカルモデルを読むとちょっと解説が物足りないような感じも....(これも仕方ない)



まとめ






以上、カステラ本のレビューをしました。




やはりこの本は統計的機械学習の解説において完璧でしょう。




全体的なイメージとしてPRMLではベイズとKLダイバージェンスを用いて確率分布を議論していたのに対してカステラ本は各アルゴリズムの幾何的な意味を捉えてるような感じがあって、PRMLとカステラ本ではいい感じに差別化が図れてるのかな、と。




あとそれぞれのアルゴリズムに対して擬似コードがついていたのもかなり好感です。




今のディープラーニングの時代において統計的学習を学ぶ必要があるかと言われたらちょっとなんとも言えないですが、それでも統計的学習を学んだあとでは機械学習を見る目が少し変わるような気がします。




実際、最近のディープ界隈での論文は「ニューラルネットの構成をどう変えたら結果がどう変わったか」みたいな試行錯誤的なものばかりで理論的保障があるものがあまりないのですが、カステラ本やPRMLで議論したように「どのアルゴリズムがどう差別化されてどのようなメリットを生み出しているか」というアルゴリズムの研究のあるべき姿をカステラ本では見れたような気がします。




皆さんもカステラ本は一読あれ。




ではお疲れ様でした。