果物をいっぱい食べたい

統計、機械学習周りの勉強や提案やOSS開発の記録

【書評/書籍紹介】施策デザインのための機械学習入門 〜データ分析技術のビジネス活用における正しい考え方

本記事では、2021年8月4日に技術評論社さまから発売された施策デザインのための機械学習入門〜データ分析技術のビジネス活用における正しい考え方(齋藤優太、安井翔太 著、株式会社ホクソエム 監修; 以下本書と呼びます)の紹介を行います。

gihyo.jp

なお、本書の詳しい内容や執筆背景については著者がすでにブログを書かれているので、まずは著者の記事をご覧になった上で、一読者の感想として私の書評記事を読んでいただければと思います。

usaito.hatenablog.com

紹介の経緯

以前からお世話になっていた著者の齋藤(@usait0)さんからありがたいことに電子版の献本をしていただき、お盆休みの数日を使い読ませていただきました。

献本への感謝の気持ちに加え、本書に内容を十分に理解した上で一緒にデータ分析の施策デザインの質を高めていく仲間が増えると私自身もハッピーになりそうな予感を強く感じたため、一人でもそのような仲間を増やせるとよいなという気持ちで記事を書くことにしました。本書が指南書・啓蒙書という形をとっていることにあやかり、本記事もそれに乗っかった形をとろうと思います。

自分で本記事を読み返してみると、「全体的にベタ褒めしすぎでは?」「記事の書き方が冗長すぎでは?」という印象を持たれそうな気がしましたが、心の赴くままに書いた結果なのでご容赦いただければと思います。

本書の目次

目次は以下のようになっています:

1章 機械学習実践のためのフレームワーク
2章 機械学習実践のための基礎技術
3章 Explicit Feedbackを用いた推薦システム構築の実践
4章 Implicit Feedbackを用いた推薦システムの構築
5章 因果効果を考慮したランキングシステムの構築
付録A 演習問題

詳細はHPで確認していただければと思いますが、個人的には、1章と2章が良い意味で期待を裏切られる内容でした。

章の粒度でタイトルだけを見ると「1-2章では 機械学習とは〜〜 のようなふわっとした話が展開されるのかな?」という気がしなくもないですが、非常にしっかりとした内容で、むしろこの2つの章が本書の根幹になる部分だと感じました(IPWLearnerでOff Policy Learningを行うという、知名度は低いが本書の根幹となる重要な手法もここで紹介されています)。

それに伴い、本書の読み方としては、1章から順に読んでいき、後半の具体例を眺めることで、自分の普段向き合っているビジネス課題との対応を考えながら進めていくというやり方が適切そうだと感じました。

対象読者

はじめに の章によると、本書のターゲットは

機械学習を活用したビジネス施策の実践に取り組んでいるすべての機械学習エンジニアやデータサイエンティスト

だと記載されています。ここで最も重要なのは すべての という部分で、特定の機械学習のタスク・技術にフォーカスした内容ではなく、ほとんどすべての機械学習施策で共通して役に立つ内容を扱っている点だと考えます。読者が解いているタスクがユーザのデモグラ予測だろうがアイテムの推薦や並び替えであろうが、またそのために使う手法が勾配ブースティングだろうが深層学習であろうが(なんならルールベースであろうが)、本書のフレームワークや思考方法を活用することで施策の質を高めてくれる可能性があるでしょう。

その理由は、本書が「機械学習を機能させるために、どのようなステップが必要であるか」を言語化した上で、現実に起こりうる様々なビジネス課題に対して、「どのように解くか」ではなく「何を解くか」を上流部分から定式化していくスタンスをとっていることにあると考えます。これについての詳細は後で説明します。

私個人の感想としては、すべての という表現は誇張ではないものの、読者の背景に合わせて訴求ポイントは変わりそうだと感じました。具体的には以下の3つのパターンを想定し、それぞれのパターンに対する訴求ポイントを、本書の内容について触れながら説明していこうと思います:

  1. 「目次に出てくる 機械学習実践に潜む落とし穴バイアス反実仮想機械学習 に興味があり、ちゃんと勉強してみたい」と思っている人
  2. 「データ分析において 何を解くか を考えるのが元々得意だし、反実仮想機械学習 のことも知ってる。でも結局この話はケースバイケースなので、わざわざ本書を買う必要はなさそう」と感じている人
  3. 「普段機械学習をやっているが、詳細目次に出てくる 反実仮想機械学習 といった専門用語がピンとこないので買うか迷っている」人

訴求ポイント:

  1. ご興味にぴったりの本だと思うので、マストバイだと思います。
  2. 私の知る限りですが、 何を解くか を考えて定式化するという文脈において、本書以上に整理された資料や議論は存在しないです。ある程度自信のある人であっても、本書を活用することでより思考の質を高められると考えます(私自身、著者が公開されているスライドや論文の大部分には元々目を通していましたが、それでもなお多くの学びがありました)。
  3. 本書の本質は 反実仮想機械学習 という方法論ではなく、 何を解くか を定式化する部分にあると思うので、その部分に興味がある場合はおすすめできます。また、 反実仮想機械学習 自体がここ5年くらいのトレンドなので、分野として追い始めるきっかけに使うという手もありそうです。

ちなみに、2021年8月13日時点でAmazonの情報学・情報科学全般関連書籍カテゴリーの中でベストセラー1位だったので、すでにかなり多くの方が購入されていると推測され、この記事の存在価値は書き始める前からすでに危ういです(書評記事に仲間集めの方向性を強めに置いたのはそれも理由の一つです)。

対象でない読者

個人の感想としては、「データ分析に関わるビジネス課題の 定式化 に興味がない人」は対象外かなと感じました。

特定の機械学習手法の研究者でそのクオリティを高めていきたい方や、あるいは分析プロジェクトに企画職として関わる方の中には、これに該当する方がいらっしゃるかと思います。

判断が難しいのは、本書の概要だけを理解して 何を解くか について専門家と議論をしていきたい企画職の方でしょうか。本書では、想定知識としては統計学機械学習の基礎知識を仮定されています。機械学習損失関数の最小化 を中心としたアプローチに慣れていない方が本書に対してどのような印象を持つかはわからないですが、そこは我々専門家がコミュニケーションしながら個別に期待値調整をする必要があるかな、というのが私の感想です。

本の中身

本書を読んだ中で個人的に重要だと感じた点を列挙します:

  1. ビジネス課題に対して「何を解くか」を、上流部分から定式化しているところ
  2. ビジネス課題を解く際に有用な思考フレームワークを定義し、そのフレームワークに沿った議論が一貫してなされているところ
  3. 一つの定式化や手法を正解として与えるわけではなく、試行錯誤を通してより良い定式化に辿り着くための実務家向け指南書としての側面が強調されているところ
  4. 反実仮想機械学習(CFML)の手法を丁寧に解説しているところ
  5. データやコードがすべて公開されており、実際に使ってみるハードルが低いところ

4と5 は議論の余地が少なそうなので、それ以外について以下で詳細に補足します。ただし、ここから先は未読者への紹介というよりは、既読者とのコミュニケーションと自己満足の側面が強くなっていきます。

定式化

対象読者のところでもお話しましたが、本書は「機械学習を機能させるために、どのようなステップが必要であるか」を言語化した上で、現実に起こりうる様々なビジネス課題に対して、「どのように解くか」ではなく「何を解くか」を上流部分から定式化していくという点で、他の本にない独自の価値を持っています。

ここで注目すべきは 定式化 という部分です。

世の中には「モデルの性能を追い求める前に、どういう問題を解くかを設計することが重要だ」ということを語る方は多く存在していますが、「具体的にどのような思考のフレームを使えばそのクオリティを高めていけるのか」という問いに対して明確な回答を持っている方を私はこれまで観測したことがありませんでした。私自身もそうだったのですが、このような議論は結局ケースバイケースになってしまい、「具体と抽象の間をうまく行き来しながらちょうど良い解像度で何を解くかを語ることは非常に難しいよね」というある種の諦めを持っている方は多いのではないでしょうか。

本書はこれに対し、実例をベースに「悪い問いの立て方」と「良い問いの立て方」の違いを数式の世界で表現しています。1章を読んだ時点で、定式化 についてのこれまでの認識を一歩前に進める世界観を提示しているような感想を抱きました。

具体例を挙げすぎるとネタバレになってしまうので難しいのですが、Xという属性の人の値Yを関数fで予測して損失関数lで評価したくなるであろうケースにおいて、

 \arg \min_{\theta} \mathbb{E}[l(Y, f(X; \theta)]

を解くべき問題としていいんだっけ?それって観測データで素朴に経験近似していいんだっけ?のような話を突き詰めていく感覚です。

フレームワーク

本書では、ビジネス課題を解くにあたって独自の思考フレームワークを導入し、そのフレームワークに基づいて一貫して議論が展開されています。以下の目次からなる 1.2 機械学習実践のためのフレームワーク で提案されている6段階からなるフレームワークです:

1.2.1 KPIを設定する
1.2.2 データの観測構造をモデル化する
1.2.3 解くべき問題を特定する
1.2.4 観測データを用いて解くべき問題を近似する
1.2.5 機械学習モデルを学習する
1.2.6 施策を導入する

データ分析のフレームワークというと、多くの方が第一に思い浮かべるのは CRISP-DM だと思います。私自身CRISP-DMのフレームワークに従って問題を考えることは多いですし、CRISP-DM自体の有用さは間違いないと思います。しかし、CRISP-DMだけでは、より良い定式化をするためのヒントを得ることは難しいと感じていました。参考のため、本書とCRISP-DMの対応を考えてみます。

1.2.1 KPIを設定する は、Business Understandingに対応しそうです。

1.2.2 データの観測構造をモデル化する は、Data Understanding に対応しそうです。ただし、CRISP-DMではこのステップでは可視化やEDAがメインになることが多いですが、本書ではデータ生成過程を式で表現するところがメインになります。CRISP-DMの Data Understanding では「生成過程を式で書くこと」を明言されていなかったという認識をしており、実際の業務の場でも、生成過程をしっかりと式で書き切っているケースばかりではないでしょう。本書はその部分を明示的に書いている、という点が重要な違いの一つだと感じました。

1.2.3 解くべき問題を特定する1.2.4 観測データを用いて解くべき問題を近似する1.2.5 機械学習モデルを学習するModelingEvaluation に対応します。この部分の具体性の違いも重要な部分だと感じました。CRISP-DMでは、各ステップについてそこまで踏み込んだ議論はされていない認識です。一方本書では、「解くべき問題を間違えるとどうなるのか」について例示し、このステップの解像度を高めています。また、「解くべき問題の特定と観測データを使った近似の間にギャップが存在しうる」という点に注目し、その二つのステップを明確に分離しています。モデルの学習や評価においても、学習したモデルの評価を事前に行うOff Policy Evaluationという仕組みを詳しく説明しているという点で、CRISP-DMよりは厳密な評価を想定していると言えるでしょう。

最後の 1.2.6 施策を導入するDeployment に対応しています。本書のユニークな特徴として、「施策の導入によって将来のデータが生成される」という点に着目し、MLOpsの文脈では語られることがほとんどない「将来のモデル改善のためのデータ生成装置としての機械学習モデルの導入」を実践しているところが挙げられるでしょう。

一方、CRISP-DMの Data Preparation に当たる内容は本書では明確に述べられていません。 1.2.5 機械学習モデルを学習する の中にデータを準備する工程も含まれていそうですが、前処理や特徴量設計については詳しい書籍が既に多く存在しているため、本書はその詳細については触れないというスタンスをとっているようでした。本書でも繰り返し述べられていますが、特定のフレームワークを絶対視することなく、目的に応じて適宜チューニングしていく姿勢が重要になります。いずれにせよ、思考を整理してくれる良質なフレームワークが増えるに越したことはないので、分析者にとって助けになる内容だと感じました。

試行錯誤・実務家向け指南書

本書の大きな特徴として、特定のフレームワークや手法を絶対視せずに、目的に応じてチューニングしていくことを何度も強調されている点が挙げられます。その上で、実務家が自分で応用できる力を養成すべく、「素朴に定式化したらどうなるか」「それでどういう問題が発生するか」「改善するためにはどうすればいいか」という流れで説明がなされています。

冒頭で述べた通り、何を解くか というテーマの議論は非常に難しくケースバイケースであるので、この点を強調されているのは非常にありがたいです。実際私も、本書を読んだことをきっかけに普段の定式化行動を省みてみましたが、反省すべき点や改善すべき点が多々存在していました。また、本書の内容をさらに進めて「こういうことも考えられそうだな」という案もいくつか出てきました。

全部の案は書ききれないので、参考までに私の思考の一部を以下で掲載しておきます。

2.2のcolumn

ログデータを収集した際に稼働していた意思決定モデルが行動選択に用いた特徴量を分析者がすべて把握していること という仮定が紹介されており、ビジネス現場ではその仮定は満たされることが多いと述べられていました。私の解釈では、この仮定はoutcome regression modelの交絡を防ぐためだと考えています(IPS推定量については処置確率だけわかっていればよい)。そして、outcome regression modelを作る場合には、過去施策の特徴量を把握しているだけではなく、過去施策の特徴量をすべて使って交絡を調整することまでが必要になるように思えました。これが何を意味しているかというと、「outcome regression modelを使ってモデル改善をする前提では、モデルがupdateされるたびに考慮するべき特徴量が増えていく」ということであり、「無闇矢鱈にモデルに使う特徴量を増やすと後々のモデル改善が大変になりかねない」というメッセージに繋がりそうだなと感じました。

Off Policy Evaluationとモデル選択

本書ではOff Policy Evaluation (OPE) によってモデルの性能を評価し、より良いモデルを選択するという手続きが説明されています。これについて、本書の思考に則ると、「より良いモデルを選択する ことがやりたいのであれば、 モデルの性能の評価 は解きたい問題と違うタスクを解いていることになるのではないか」という疑問を抱くのが自然かと思います。

この点について本書の著者に質問してみたところ、 Confident Off-Policy Evaluation and Selection through Self-Normalized Importance Weighting という論文がAISTATS 2021で発表されており、そのような疑問を解決していく方向性も存在しているようでした。自分がゼロから理論を組み立てるのはなかなか大変そうですが、参考にできるところを取り入れながら業務に応用していきたいところです。

regression-EM周り

regression-EMについて、著者が以前以下の疑問を書かれていました:

regression-EMでやっているrelevanceパラメータをGBDTで予測するパートだけど, それがそもそもUnbiased LTRでやりたいことなので, regression-EMのアルゴリズムで精度よくpropensity推定できるならそもそもpropensity推定のこと考える必要ないのでは?という本末転倒な感じがした...

本書にはこの疑問点についての言及は存在していなかったのですが、私自身regression-EMの論文を読んだときに同じような感想を持っていました。しかし、本書の思考をトレースしてみると、この2段階のアプローチをとっている理由は、最終的に解くべき問題に対して改めてチューニングするためなのかなという仮説に至りました。多少粗くてもいいいのでポジションバイアスを推定してくれれば、あとは後段の学習でなんとかするという気持ちがあるのかもしれないです。これについては、本書で紹介されているポジションバイアス推定の後続研究を読んでいくと何かしらのヒントが得られるかもしれないです。

おわりに

以上で紹介は終わりです。

改めてではありますが、献本していただいた齋藤(@usait0)さん、ならびに執筆に関わられたみなさま、ありがとうございました。

同じような問題に興味を持たれた方と、本書をもとに議論やお仕事をする機会があれば嬉しいなと思っております。