機械学習が正しく機能しないときに考えること

この記事は GMOアドマーケティング Advent Calendar 2021 17日目の記事です。

はじめに

おはようございます。こんにちは。こんばんは。
 GMOアドマーケティングのY-Kです。

 突然ですが、機械学習関連のタスクでこんなことを経験したことはありませんか?
  • 書籍や論文に載せられている有効的な手法を使用したにもかかわらず、タスクの評価指標(KPI)が向上しない
  • 訓練データ上では良い結果だが、本番環境で予測させてみるとそうでもない
  • そもそも、機械学習を用いてタスクを取り組む際、どこから手をつけていけば良いかが分からない

とてもわかります

  • 機械学習についての基本的な知識はある(はず)
  • 与えられたデータに対して、データ分析〜学習〜予測の一連の作業を行なったことがある(大学の研究、kaggleのコンペ等)
  • が、実際のビジネスの施策として機械学習を用いようと考えた途端に思考が纏まらなくなる
上記のような、ひよっこ機械学習エンジニア(私)がぶち当たる(当たった)であろうこの壁について、
最近読んだ「試作デザインのための機械学習入門」に解決のヒントが書かれていたので、
今回は、その内容を軽く話していこうと思います。

(引用元:技術評論社「試作デザインのための機械学習入門」https://gihyo.jp/book/2021/978-4-297-12224-9)

問題点の分割

まず、最初に述べていた3つの壁について、
  • 書籍や論文に載せられている有効的な手法を使用したにもかかわらず、タスクの評価指標(KPI)が向上しない
  • 訓練データ上では良い結果だが、本番環境で予測させてみるとそうでもない
  • そもそも、機械学習を用いてタスクを取り組む際、どこから手をつけていけば良いかが分からない
これらについて、当書では第1章で、前2つの精度については「機械学習に潜む落とし穴」、考え方については「機械学習実践のためのフレームワーク」という観点から、それぞれ述べられていました。

機械学習で陥る落とし穴

「正しいと思われる手順に則って機械学習を導入したが予測精度が良くない」

 このような問題に直面した時、その解決策として関連する書籍や最新の論文を閲読し、それを新たにモデルに適応させようとすると思います。(私はよくしていました。)
 昨今、華々しい活躍を見せる機械学習の技術の数々に魅せられて、ついついモデルの改修ばかりに目が行ってしまいますが、このような場合、機械学習それ自体よりも、機械学習を機能させるために必要なステップを見逃していないかということに意識を向けることが重要だそうです。
 当書では、「必要なステップを軽視し見逃してしまったが故に無意識のうちに落とし穴に陥りうまくいかないこと」を、機械学習に解く意味がない問題を押し付けてしまっているとも表現していました。
 
 当書では、無意識に陥る落とし穴の事例について、いくつか具体例を挙げながら解説しているのですが、
本記事では、その中でも「解くべき問題の誤設定」に関する落とし穴についてアドテク分野を例に述べていこうと思います。

解くべき問題の誤設定

例として、以下のような、ユーザの性質(性別)に対して、2つの広告デザインパターンのvCTRが記録されたデータが存在したとします。
ユーザの性質(性別)パターンAのvCTRパターンBのvCTR
男性30%35%
女性25%15%
vCTR(Visible Click Through Rate)は、以下で求めることができます
ここから、
ユーザの性質(性別)で広告のデザインを切り替えることで、広告のクリック数(収益)を最大化するタスク
に機械学習を用いて取り組むとします。
 取り組むにあたって、以下の方針を立てたとします。
  1. 各ユーザの性質(性別)から、両広告パターンのvCTRを予測するモデルを作成
    (実際はもっと多くの性質から予測すると思いますが、今回は単純な例として性別のみを扱います。)
  2. 予測vCTRが高い方で広告を表示する

 モデルを2つ作成、vCTRを予測、真値との平均予測誤差を算出し、結果が以下のようになったとします。
(真値は先程の表の値)
真値と予測値パターンA:男性パターンB:男性パターンA:女性パターンB:女性平均予測誤差
真値30%35%25%15%
モデルA35%25%25%30%0.05
モデルB10%45%40%10%0.125

 平均予測誤差が小さいモデルAの方が予測精度が良いと考え、モデルAのvCTRに従って、
男性にはパターンA、女性はパターンBをデザインを適用して広告を出すことにします。
その際、タスクの最終的な目標である広告のクリック数は以下になります。 ちなみに、モデルBを使って広告のデザインの出し分けをした場合、クリック数(収益)は以下のようになります。

モデルBの方が結果としてクリック数(収益)が多い

すなわち、モデルBを採用して広告デザインの出し分けをした方が収益が上がるということです。

 なぜ、予測精度が良いモデルAより精度が悪いモデルBの方が、広告のクリック数(収益)を最大化するタスクにおいては、適切であるという結果になったかというと、お気づきの人もおられるかとは思いますが、


最初の方針の時点から誤っています。



 本来の問題は、機械学習によって、広告デザインのどちらのパターンを使うかを決める意思決定の問題であったはずが、最初の方針でユーザの性質ごとの各広告デザインのvCTRを予測する問題に取り組むことになっています。

 広告のデザインの出し分けを機械学習で行うつもりが、広告のデザインを出し分ける目安となる値(vCTR)の算出を機械学習で行なっています

 さまざまな技術でvCTRの精度を上げたとしても、タスクの評価指標であるクリック数とは直接結び付つくことはなく、最初にも述べた
  • 書籍や論文に載せられている有効的な手法を使用したにもかかわらず、タスクの評価指標(KPI)が向上しない
という壁にぶつかってしまいます。


 当書でも述べられていますが、クリック率予測誤差0モデルがあるのであれば、是非そちらを使うべきですが、
現実にはない以上、目的を明確にし、逆にどのような間違いを許容するかを考える必要があります。

 機械学習に予測確率の誤差を最小化させるタスクを取り組ませた場合、そのモデルは、広告出し分けの意思決定の間違いを許容してでも予測の精度を追い求めてしまいます。

 今回の例であれば、vCTRより出したい方の広告のデザインパターンをこちらで決め、機械学習によってユーザの性質(性別)ごとにパターンA(0)とパターンB(1)のどちらを使うべきかの2値分類問題として取り組む方が適切だったと思います。
ユーザの性質(性別)パターンAのvCTRパターンBのvCTR出すべきパターン
(ここを予測させる)
男性30%35%1
女性25%15%0

機械学習のためのフレームワーク

フレームワークといってもTensorFlowやPyTorchといったものではなく、もう少し外側の機械学習を行う際に考えるべきこと・機械学習を機能させるためにたどるべき手順を当書ではうまくフレームワーク化して表現していました。
1:KPIの設定
2:データの観測構造をモデル化
3:解くべき問題を特定する
4:観測データのみを用いて問題を解く方法を考える
5:機械学習モデルを学習する
6:施策を導入する

(「機械学習実践のためのフレームワーク」P18, 図1.6の内容)
これらに基づいて機械学習を行えば、必ず結果が出るというものではないが、これらを軽視して機械学習が機能する状況を整えることができなければ、機械学習を活用することが有効な場面であるか否かという情報すら得られない」という内容も当書では書かれていました。
 このフレームワークを用いることで、最初に述べていた、
  • そもそも、機械学習を用いてタスクを取り組む際、どこから手をつけていけば良いかが分からない
  • に対する解決への足掛かりにもなります。さらには、これに沿って考えをまとめていくことで、エンジニア以外の人に試作のための機械学習の説明をわかりやすく行うための材料にもなると個人的に感じます。

    まとめ

    今回は、機械学習が正しく機能しないときに考えることとして、「試作デザインのための機械学習入門」で学んだ内容の一部を述べさせていただきました。
     当書では、他にも、機械学習に潜む落とし穴について「過去の施策の傾向に起因するバイアス」や「真に目的変数としたい情報と表層的な観測データの違い」といった内容で具体例を挙げながら述べられていたり、問題に対してフレームワークを適用する流れを体験したりといったことが書かれており、機械学習が正しく機能するような土台の作り方や機械学習の知識と実際のビジネス施策を結びつける方法を学ぶことのできる良書だと思います。読み終わった後も、時折この本を振り返り確認していこうと思います。

    ここまでお読みくださり、ありがとうございました。

    明日は石丸(@thomi40)さんによる「Notion APIでデータベースを操作する」に関しての記事です。
    引き続き、
    GMOアドマーケティング Advent Calendar 2021 をお楽しみください!

    ■エンジニア採用ページ ~福利厚生や各種制度のご案内はこちら~
    https://note.gmo-ap.jp/n/n02cbeb6edb0d

    ■noteページ ~ブログや採用、イベント情報を公開中!~
    https://note.gmo-ap.jp/