糞糞糞ネット弁慶

読んだ論文についてメモを書きます.趣味の話は http://repose.hatenablog.com

「施策デザインのための機械学習入門 データ分析技術のビジネス活用における正しい考え方」 読んだ

著者よりご恵贈いただきました.いくつか読むべき本があったのですが,社内で読書会をするために優先して読みました.感想を書きます.

著者は当時学部生とは思えないスピードでトップカンファレンスに論文を通している齋藤優太氏サイバーエージェントにて機械学習と経済学 (特に因果推論) の研究を行っている,「効果検証入門」の著者でも知られる安井翔太氏.監修はホクソエム社

第一線で活躍する若手研究者が日本語で本を書くことがどんなに貴重か (一部の研究者が「日本語の原稿や国内学会は業績ではないので意味がない.運営負荷も高いために縮小・廃止すべきだ」「日本語の専門書は不要であり,原著を読める人間だけが読めばいい.」と主張している背景があります) という話をしても一部の人にしか伝わらないと思うので本の話を順にします.

本書の教えがどこまで再現できるかに関わらず,機械学習モデルを用いて何らかの意思決定を行う人は一度読むと非常に勉強になると思います.また,この領域の研究者がどのような問題意識を持っているのか,どのような単語や記号で定式化しているのかがわかるため,論文を読むための足がかりとしても有効だろうと思います.

1章「機械学習実践のためのフレームワーク

1章「機械学習実践のためのフレームワーク」では,本書の根底にある「フレームワーク」の導入が行われます.これは目次にそのまま書かれているのですが,本書において特に強調されているのは「データの観測構造をモデル化する」「観測データを用いて解くべき問題を近似する」の2点ではないでしょうか.

データの観測構造への理解・認識が曖昧なままだと,誤った仮定や思い込みを解消することができず,その結果得られるモデルにバイアスが生じます.これを説明しているのが前者です.そしてバイアスを観測データからいかに除去するか,また,いかにして軽減できるよう (本来解くべきであるが様々な理由によって解けない真のモデルを) 近似したモデルを構築できるかが後者です.

表1.3 の例はその最たるものです (「効果検証入門」の読者には見覚えがあるでしょう).この表から「クーポン配布は性別に関わらずランダムに配信されている」という思い込みに従ってナイーブにクーポンの効果を計算してしまうと,本来の効果 (そもそもこれが観測できないから困っているわけであり,永遠の課題ですが) とは異なる値が得られてしまいます (ここまで読んだところで「効果検証入門」で述べた回帰による効果の推定が本書では行われていないことに気付きました).

この1章のフレームワークにもとづいて,続く章では具体的な問題とバイアスについて触れています.

2章「機械学習実践のための基礎技術」

ここからは具体的な問題に取り組みます.まずは属性推定です (これは属性推定だけでなく, look-alike などにも適用可能でしょう).この時,学習は属性情報が付与された会員データが対象であり,予測 (推論) 時には属性情報が付与されていない非会員データが対象であるため,「会員になるかならないか」がランダムではなく,何らかの要因によって偏っている場合,モデルにはバイアスが含まれてしまいます.言葉にすると何となく分かることを数式を用い「ここにバイアスが生まれる余地がある」「よっての項を追加すると良い」と説明されるのでとても気分が良いです.

次に取り組むのは,既に何らかの意思決定モデルが動作しており,その結果として得られるログを対象により良い意思決定を推定する問題です.過去動作していた意思決定モデルによるバイアスを軽減するために IPS (Inverse Propensity Score) 推定量や Doubly-Robust (DR) 推定量の説明が行われます.ここの説明も一見 IPS だけでいいように見せかけてよく考えるとこれデータがもったいないのでは? という気持ちから DR の説明に入るので理解が進みます.しかし DR 推定量は特に数式の説明がなく唐突に現れるため,この道理を知るためには元論文を読む必要がありそうです.

著者らの研究成果である Open Bandit Pipeline についての説明も1節を割いて行われています.これは社内読書会で検証する際にちゃんと読みます.

3章「Explicit Feedback を用いた推薦システム構築の実践」

続いては商品推薦タスクです. Explicit Feedback と呼ばれるシチュエーションでは,ユーザは商品の評価を uniform に行うわけではなく,そもそもユーザは興味がある程度ある商品しか評価を行わないため,結果として観測されるデータにはバイアスが含まれてしまいます.ではこのデータからより良いモデルを学習するにはどうすればいいのか? という話と,研究用データセットを用いた検証が行われています.

4章「Implicit Feedback を用いたランキングシステム構築の実践」

こちらも商品推薦タスク (タイトルは「ランキングシステム」ですがここでは簡単のため商品推薦タスクと呼びます) です. Implicit Feedback という状況において,3章とは異なるバイアスを考慮しています.それは

  • ポジションバイアス : 商品がユーザに表示される順序が上位であればあるほどクリックされやすい.反対に順序が下位のアイテムがクリックされなかった場合,興味がないのか,そもそもユーザの目に入っていないのかの区別がつかない
  • 選択バイアス : そもそも商品がユーザに表示されていない
  • クリックノイズ : ユーザが誤って興味が無い商品をクリックしているかもしれない

の3つです.これらをどう組み込むかを段階的に説明しています.

5章「因果効果を考慮したランキングシステムの構築」

最後に,「クリック後の購買行動」などを KPI にした時の「推薦機能由来での KPI を最大化する施策」と「プラットフォーム全体での KPI を最大化する施策」の推定について触れています.特に後者は推薦枠が有限である場合,推薦しなかった場合の売上と推薦した場合の売上それぞれを考慮し,最も良いものを探す,という話で uplift modeling の雰囲気を感じます.

本書の良いところと限界

本書の良いところは「バイアスから目をそらすな」という話を繰り返し述べている点です.本書を読み終わり,思想をある程度理解した読者においては,つい手癖で手元のデータに対して何も考えずにモデルを作ってしまう前に「お前の手元にあるデータにはこのような偏りが入っているはずだが?」という内なる著者らからの指摘がきっと入るでしょう.

とはいえ本書の内容がそのまますぐに日々の業務に反映できるかと言われると,そのまま適用できる人は少ないのではないかと思います.

たとえば3章の IPS 推定量に必要な傾向スコアの計算には,完全にバイアスが存在しないデータが必要であり,後段の Yahoo! R3 データでの実験でも (ランダムに収集されバイアスが存在しない) テストデータの一部を用いて傾向スコアを計算しています.3.6 にて補足が入るものの,「このデータにはバイアスがかかっています.それをどう補正したらいいでしょう?」 -> 「ここにバイアスのかかっていないデータがあるので補正に使います」の流れには困惑しました.

また,2章では「過去,どのような値にもとづいて施策を行ったか」を示す (「古い意思決定モデルの行動選択確率」と呼ばれています) \pi_{b} の値が必要です (とはいえ p79 において既存のデータから推定する方法にも触れられています).4章においても,説明している手法の学習には「これまでどのユーザにどの順序で商品を表示していたか」のデータが必要です.これらのデータが現行のシステムにて保存されていない場合には本書の手法をそのままでは適用できません.

とはいえ「では本書は全く役に立たないのか」というわけではなく,

  • これからはなるべく今後のために施策にまつわるデータを収集しよう
  • 「現状のデータにはバイアスが含まれている」と意識することにまず意味がある
  • バイアスを軽減するためのさまざまな手法が研究・開発されているのだから,困ったら本書や本書が言及している論文を読もう

という話ではないかと思います.繰り返しになりますが,本書の教えがどこまで再現できるかに関わらず,機械学習モデルを用いて何らかの意思決定を行う人は一度読むと非常に勉強になると思います.

細かい話

  • 2章で「データサイエンティストはこうやってナイーブな統計量を出してしまうがそれでは駄目」と散々な書き方をしており,そこまで言わなくてもいいのではないかと思いました
  • 表1.2 と表2.2 の話,気持ちはわかるのですが表現が適切でないように思います.ここでは「推定した値と真の値との誤差」でどちらのモデルが良いかを議論し,誤差が小さいモデルで意思決定をすると失敗する (モデルの推定誤差と,そのモデルに従って振る舞った時との結果が食い違う) という話なのですが,そもそも真の値を知っているのならばモデルを推定する必要がない (真の値にもとづいて意思決定すればいい) でしょうし,「モデル評価では真の値を確認できるが意思決定時には参照できない」というのも不自然に思います.より正確には「既知のデータでモデルを推定する」「未知のデータに当てはめる」「既知と未知のデータは同様であるという強い仮定がある」「よって既知のデータに対する誤差が優れたモデルを採用し未知のデータの意思決定に用いる」だと思うのですが,お気付きのようにこの説明はとても面倒です
  • p170 の式は先頭の項に閉じ括弧が一つ足りないと思います.恐らくは  (C(u_{j}, i_{1}, y_{j}(i_{1})), C(u_{j}, i_{2}, y_{j}(i_{2})),\cdots, C(u_{j}, i_{m}, y_{j}(i_{m})))