施策デザインのための機械学習入門 を読んだ


TL;DR

  • 機械学習に基づく施策をサービス改善につなげるためのフレームワークとその実践を提供してくれる本
  • 統一的なフレームワークと一貫した記述で、よく書かれている本だなと感心した
  • 個人的には 4.2 節の Implicit Feedbak を用いたバイアスを考慮したランキングシステムの構築のところは勉強になった

タイトルの通り 施策デザインのための機械学習入門 という本を読んだ。
よく書けていて勉強になったのでブログにも残しておく。

本の正式なタイトルは「施策デザインのための機械学習入門 データ分析技術のビジネス活用における正しい考え方」というもの。 本のタイトルからは具体的ににどういう内容が書いてるかは想像しにくいが、内容は機械学習に基づく施策を実際に導入する際に重要となる観点を一連のフレームワークとして提供し、そのフレームワークに基づいた具体的な実践を解説するというものになっている。

技術評論社出版で HP は https://gihyo.jp/book/2021/978-4-297-12224-9 にある。
本の中で用いられてる実装は https://github.com/ghmagazine/ml_design_book にある。

本の概要

章立ては以下のようになっている。

  • 1 章 機械学習実践のためのフレームワーク
    • KPI 設定 → データの観測構造をモデル化する → 解くべき問題を特定する → 観測データを用いて解くべき問題を近似する → 機械学習モデルを学習する → 施策を導入する というフレームワークを導入
  • 2 章 機械学習実践のための基礎技術
    • 広告配信を例に導入したフレームワークに則って施策導入までの一連の流れを解説
  • 3 章 Explicit Feedbackに基づく推薦システムの構築
    • ユーザの行動に基づくデータの観測構造に注意を払って適切な目的関数を導く一連の流れと実験結果を解説
  • 4 章 Implicit Feedbackに基づくランキングシステムの構築
    • ポジションバイアス、セレクションバイアス、クリックノイズ、に対して適切な目的関数を導く一連の流れと実験結果を解説
  • 5 章 因果効果を考慮したランキングシステムの構築
    • より発展的な内容として推薦枠非経由の conversion も考慮したケースを紹介
  • 演習問題
    • 本の内容を自分で実践に活かすための訓練となるような問題

大まかな頭出しについてはこれより詳しいものとして著者のブログ https://usaito.hatenablog.com/entry/2021/08/03/191339 があるので、もう少し詳しく知りたい人はこれを読んでから本を買うかどうか決めればよさそう。

全体的によく書けていて、入門書を謳って基本的なところから始まりつつも内容が割としっかりしていて、自分にとっても勉強になるところが多い本だった。 推薦システムは 5 年くらい前に仕事でやって以来そんなに追ってなくてほとんど覚えてないこともあり、特に 4.2 節の Implicit Feedbak を用いたバイアスを考慮したランキングシステムの構築のところとかは勉強になった。 数学的な定式化がしっかり目になされているので読みやすい。

特によく書けているなと感じたところ

このエントリではそれぞれの章でどういうことを書いてあるかを紹介したりはせず、自分が特によく書けているなと感じたところを書く。

全編を通して一貫したフレームワークに基づく記述

1 章で導入する機械学習実践のためのフレームワークに基づいた一貫した記述がなされている点がよい。

本を書こうとすると、どうしても色々な知識を紹介しようとしてあれこれと詰め込み、結果として知識の羅列を薄く繋いだものになりがちだと思う。 この本はそうではなくて、様々な具体的ケースに対応できる適度なレベルに抽象化したフレームワークを構築し、それで一本筋が通っている状態で個々の具体例を解説している。

具体例で経験を積み、このフレームワークに立ち戻って理解を増強することで、より困難な他の具体例に立ち向かうことができるようになるという設計になっている。 こういう思想は巻末の演習問題にも顕著に現れている。

この統一的な記述は著者のこだわりというか信念が感じられてとてもよい。

データの観測構造のモデル化と unbiased な目的関数の導出手順

フレームワークの中でも特によいと感じたのがデータの観測構造のモデル化と 解くべき問題を近似するときの unbiased な目的関数を導出するところである。

データの観測構造のモデル化のところは解析可能な数学的表現で対象の状況をモデル化するという意味合いが強い。 この部分がしっかり目に書かれているのがよいところで、ここがきちんとモデル化できないと解くべき問題を数学的に表現できず、バイアスなどの落とし穴に気づくこともできない。 (数学的表現に慣れてない人がこの本で機械学習に入門するぞ、という場合には少し難しいかもしれない)。

データの観測構造をモデル化できるからこそ、解くべき問題を近似して適切な目的関数を設定するという後のプロセスも適切に実施できる。 この本ではまずは観測データのみに注目してデータの観測構造を意識していないナイーブ推定量を算出し、それだとデータの観測構造に基づくバイアスが乗っているのでそれを是正するように Inverse Propensity Score 推定量(バイアスを打ち消すような重みを逆数として掛ける)を使いましょうという流れになっている。 これを何度も繰り返すので、どうやって適切に解くべき問題を近似するのかというのが意識しやすくなっている。

手計算できる簡単な例で感覚を掴む

問題の本質を損なわないようにしつつ手計算で確認できる例が豊富にあるのもよい。

ある種のアイデアがあるときに、それを正しく把握するためには(本質を損なわない)簡単な例でチェックするというのは重要で、そこを意識して簡単化した例がいくつも載せられている。

簡単な例で振る舞いを理解する、次元解析をする、極端なケースで振る舞いを確認する、まずは生データを眺める(EDA する)、などは感覚を掴むために重要なので、実データで取り組む前に簡単だが重要な例があるのはよいと思った。

余談だが、こういう話を書くと「いかにして問題をとくか」が思い出されるわけだが、これの機械学習/データ分析特化版みたいなのがあっても面白いかもしれない(断片的には色々なところで語られていると思うけど)。

実験用データを問題設定に合わせて適宜いじっている

オープンデータを使って実験する際に、本の内容を解説するために適宜手を加えてデータセット(本では半人工データと呼んでいる)を準備しているのも工夫が感じられた。

機械学習の本を読んでると、それでは具体例と言ってこのデータにこのモデルを適用したら結果はこう!みたいな感じでそこから何かを得るということがあまりないことも多いが、本の内容を適切にサポートするような実験設定にしてあるところは素敵だなと思った。

その他

記述が丁寧すぎる部分がある。 入門書ということなので丁寧にしたのだと思うけど、unbiased な目的変数の期待値が望み通りになっているかの計算がほぼ自明なのに繰り返し記述されてるのとかは、本書を通読できる人なら必要ないと感じた。 もう少し記述をスキップした上で、章末の発展的内容を一部解説してみたり 5 章の内容で著者が考えてることをもっと深く記述してもらうとかだと個人的には嬉しかった。

notation がちょっと confusing な部分がある。 4.2 節の Pair Result Randomization のところで確率的ランキングを導入するが、ユーザ jj に提示するランキング yjy_j にさらに kk+1k \leftrightarrow k+1 を swap するランキングと元のランキングという新しい次元の情報が出てくる。 それらを断りなく y1,y2y_1, y_2 と書いたりするのでユーザの添字と confusing なところがある。 まあこれはさらに新しい notation を導入したりすると複雑になりすぎるし分かるやろってことでそう書いてるのだと感じたけど、ちょっと読み淀んだ。 あと y1y^{-1} でアイテムを指すのはあまりしっくりこなかったけど、推薦システム関連だとよく使われる notation なのかな。

この本に限らずだけど、typo とか見つけたらフィードバックしたいけど、どこで受け付けてるか書いてくれると嬉しい。 正誤表 https://gihyo.jp/assets/files/book/2021/978-4-297-12224-9/download/%E6%AD%A3%E8%AA%A4%E8%A1%A82021-08-18.pdf にないところだと図 4.5 の R(u,i9)=0R(u,i_9) = 0 でなく R(u,i9)=1R(u,i_9) = 1 というのがあった(本文を読めば分かるので単なる typo)。 GitHub repository はコードだけって感じだったので書いていいか判断つかず、技術評論社のお問い合わせページ https://gihyo.jp/site/inquiry/book?ISBN=978-4-297-12224-9 に送っておいた。 ただこちらは他の人が何送ってるかが見えないので被ったりしそう。 GitHub repository あるなら issues にそういうフィードバックどうぞと案内するとよさそうか。

まとめ

施策デザインのための機械学習入門 を読んだ。 よい本だったので書評ブログを書いたが、改めてブログとして書いてみると、著者が多大な努力を払って本を完成させたことが伺え、ありがとうございますという気持ち。