Wantedlyのデータサイエンティストの樋口です。先週、推薦システムの国際会議であるRecsys2021にオンラインで参加させていただきました。
新卒として働くなかで、ビジネス上有益な効果をもたらすように、推薦システムの改善することは本当に難しく、やりがいがあると感じます。 モデルの精度改善だけでなく、どんなデータで何を最適化し、どのように結果を測るか、など機械学習が機能する問題設計から考える必要があるためです。Recsysではそういった実サービスでの問題設計から取り上げている発表が多く非常に参考になりました。
そこで今回は「推薦システムの問題設計と改善」というテーマで、ビジネス要件から丁寧に問題設計を決め、実サービスを改善していた発表を2本紹介させていただきます。
EX3: Explainable Attribute-aware Item-set Recommendations
一つ目はReal-World Concernsのセッションにて発表された、AmazonのECサイトの推薦事例を紹介します。この発表では、アイテムの属性(※後述)情報を考慮した、説明性のある関連アイテムの推薦方法を提案しています。
ユーザの商品購買の意思決定を援助できるというモチベーションのもと過去にあまり例のないチャレンジングな問題設計に取り組んでおり、面白かったため紹介します。
モチベーション
ここで、属性とは商品の出品者・サイズ・製造者など、商品カテゴリ毎に異なる不定形のデータを指します。筆者らは、商品カテゴリごとに重要な属性を割り出し、それを有効活用して推薦することでユーザの商品購買の意思決定を援助できると主張しています。
- 例1: 乾電池を買いたい時、同じ型を推薦する
- 例2: 家具を買いたい時、似たサイズの家具を推薦する
- 例3: サプリを買いたい時、似た成分が含まれているサプリを推薦する
具体的に、属性情報を使うとどのように関連アイテムの推薦を改善できるのか、Amazonの推薦UIを例に説明しています。
現在の推薦UIは属性をうまく扱えていないため、説明性の低い情報しか提示できません。
(1) 商品カテゴリに関わらず、同じ種類の属性が同じ順番で表示されている
家具だったらサイズが重要、乾電池なら型が重要といったようにカテゴリごとに重要な属性は違います。理想的にはその商品カテゴリごとに重要度順に属性を選択し、表示したいですが、今はどのようなカテゴリのアイテムでも配送者(prime)→出店者→サイズ→量などと固定の属性・並び順になってしまっています。
(2) "類似アイテムと比較しましょう"という画一的なタイトル
いまの推薦UIは全て類似度の近い順に表示しているので、"類似アイテムと比較しましょう"という画一的タイトルしかつけることが出来ません。
(3) 類似度ベースの似たようなレコメンドセット
いまの推薦UIは全て類似度の近い順に表示しているので、同じようなアイテムが並んでしまうことがあります。
属性を適切に用いることで、下記のようなリッチな情報を含んだ推薦ができると主張しています。
(1) 商品カテゴリごとに、最適な並び・種類の属性を表示される
画像例であれば、サプリなら値段→ブランド→サプリメントタイプ→...のように、サプリを購入する上で重要な属性種類を重要順に並び替えて表示できています。
(2) 属性情報を組み込み、なぜそのアイテムが推薦されたかわかるタイトル
今見ている商品と同じ属性を持つ商品を提示しています。これによって、各アイテムがなぜ推薦されているかがタイトルからも分かるようになります。
(3) 複数の属性を根拠とした、多様性のあるレコメンドセット
複数の属性情報を根拠に推薦することで、類似度という単一の指標で、推薦するよりも多様性のあるレコメンドを提示することが出来ています。
しかし、属性情報を使うにはいくつもの困難があります。ユーザはどの属性が商品選択に有用だったかを明示しておらず、商品によっては少数の属性しか付与されていない(欠損データが多い)です。また商品カテゴリごとに付与される属性が異なるため、相当な組み合わせを考慮する必要があります。
提案手法
上記の問題を解決するために、筆者らは”重要な属性が一致しない限り、類似アイテムは購入しない"という仮定を元に、ユーザの行動から属性がどれほど商品購買に寄与するか重要度を割り出すというアイディアを提案します。
このアイディアによって、商品カテゴリによらず、あらゆるアイテムの属性に対して重要度を定義することが出来るようになります。
そして上記のアイディアを取り入れた、EX3という学習フレームワークを提案しています。
このEX3は3つのコンポーネントからなりたっており、それぞれ以下のような役割があります。
Extract-step: ユーザーの行動履歴から、アイテム間の関係をエンコードし、アイテムの分散ベクトルを出力する
Expect-step: アイテムペアと、そのペアに付随する属性情報を入力に、アイテムペアの関連度と属性情報の重要度を出力する
Explain-step: Expect-stepで得られた属性の重要度を元に、推薦リストを各属性ごとに分割する
このようにステップを踏むことで、商品カテゴリごとに、最適な並び・種類の属性を算出し、説明性のある推薦システムを構築しています。
感想
アイテムの属性情報は、欠損が多く、ラベルもなく、種類も多いと、一見非常に使いづらそうです。
しかし、その属性情報を使うことで、ユーザの商品購買の意思決定を支援する推薦システムが構築できるだろうと仮説をたてて、見事に課題を解いていることに感動しました。
複雑な課題も1つずつ仮定をおいて分解すれば解ける、本当に価値があるものであれば既存の枠組みにとらわれず開発するという姿勢についても学ぶことが出来ました。
リファレンス
Recommendations at Videoland
二つ目はApplications-Driven Advancesのセッションにて発表された、オランダ最大手のVOD(ビデオオンデマンド)プラットフォーム、"Videoland"の推薦事例を紹介します。
Videolandの改善にあたり作成した、アイテムスコアの定義、推薦モデルの改善、オフラインテスト指標、オンラインテスト指標、について紹介しています。どの取り組みも一貫して”どうすればユーザの価値を測れるか、どうすればその価値を最大化できるか”という目的を念頭に行われており、面白かったです。
本ブログではアイテムスコアの定義、オンラインテスト指標をピックアップして紹介します。
アイテムスコアの定義
一般に推薦システムはユーザがまだ見ていないアイテムに対して、スコア(=ユーザがアイテムを好む度合い)を予測し、高いスコアのアイテムを推薦します。それゆえ、推薦システムの構築において、スコアを適切に定義することは非常に重要です。
スコアをつけるために、ユーザの行動を使うことが出来ます。各ユーザは明示的に作品を好むと評価する(Explicit feedback)場合もあれば、視聴をするなどで暗黙的に作品を好むという情報を残す場合(Implict feedback)もあります。
Explicit feedbackはユーザの好みを陽に表していますが、データが少なくコチラだけでは良いモデルを作ることが難しいです。そこで、VideolandではExplicit feedback, Impicit feedbackを合成して、以下のようにスコアを定義しています。
- ユーザがlike/dislikeした場合、1/0のスコアを付ける
- 明示的にインタラクションがないユーザは視聴割合(=視聴した時間/アイテムの総時間)をスコアとする
- ユーザが過去に見たシリーズ物なら、そのアイテムの視聴割合のスコアをブーストする
- 視聴時間が過去のものほど、スコアを減衰する
このように、ユーザの明示的/暗黙的なインタラクションを総合することで、ユーザの好みを忠実に表現したスコアを多くのアイテムに付与できています。
オンラインテスト指標
サブスクリプションモデルであるVideolandでの推薦モデルの役割は、ユーザのリテンション(=継続利用)を最大化できるコンテンツを提示することです。しかし、リテンションは推薦モデル以外の様々な要因が絡み合って変化します。また、変動も非常にゆっくりです。
従って、リテンションをメトリクスに置いて推薦システムのA/Bテストをすると、測定に時間がかかったり、有意差が出ない恐れがあります。そこで、Videolandではユーザのコンテンツの消費量と離脱率の正の相関に着目し、これも追加で評価するようにしています。
評価しているのは以下の4つになります。
- (無料アカウント→有料アカウントとなったユーザ数) / 無料アカウントユーザ数
- 平均視聴終了アイテム数
- 平均視聴時間
- (有料アカウント→無料アカウントとなったユーザ数)/無料アカウントユーザ数
このように、ユーザの振る舞いから、真に達成したい指標の類似指標を割り出し、測定することで素早く正確な意思決定ができるようになります。
感想
いくら機械学習モデルの予測精度誤差を小さくしても、最適化したい指標が誤っていた場合、ユーザに価値を届けることはできません。また、オンラインテストにて、指標になかなか有意差が出ず意思決定が遅れてしまった場合、その分ビジネス上の機会損失が生じてしまいます。
このようなビジネス上の課題をいかに解決するかを考えて、推薦システムの改善に取り組んでおり、とても参考になる発表でした。
リファレンス
おわりに
実務にて、ビジネス上有益な効果をもたらすように、推薦システムの改善することの難しさを感じてきたからこそ、Recsys2021の発表は自分ごととして非常に興味深く、関心を持って見ることが出来ました。今回学んだ知見を、少しでも今後の業務に生かしていきたいです。
次のRecSys2021参加レポートは Wantedly Visit データサイエンティストの角川さんのブログです。どうぞ、楽しみにしていてください!
最後に、Wantedlyでは一緒にユーザに価値を届けるために、良い推薦とはなにか?と問題設計から突き詰めたいというデータサイエンティストを募集しています。もし少しでも興味がありましたら、下の募集からぜひ「話を聞きに行きたい」ボタンを押してください!