ZOZOTOWNにおけるRecommendations AIの事例紹介

安田征弘氏(以下、安田):「ZOZOTOWNにおけるRecommendations AIの事例紹介」ということで、私、安田が発表いたします。よろしくお願いします。

本日は、自己紹介のあとにRecommendations AIについて、次にRecommendations AIの導入に必要なステップ、その次にZOZOTOWNにおける導入の内容という順でお話しいたします。お願いします。

自己紹介です。技術開発本部プラットフォーム部推薦基盤チームを担当している安田です。推薦基盤という名前ですが、推薦と広告とデータ集計基盤を担当しています。前職はインターネットテレビの会社でデータエンジニアをしていました。

Recommendations AIとは

Recommendations AIは、Googleが2019年発表した推薦システムです。ECに特化したマネージドサービスで、スケーラブルでパーソナライズができて、リアルタイム性があるのが特徴です。

推薦なので、商品情報とユーザー情報を元に動くのですが、Googleでは商品のことをプロダクトカタログと言います。そのプロダクトカタログの管理機能とユーザーイベントの収集機能が、インプットデータ管理として提供される機能です。

推薦の方式は選ぶことができます。カート追加後であるとかトップ面であるとか、商品詳細面であるとか、そういったものを選ぶことができます。KPI選択もできて、CTRを最適化するのか、それともCVRを最適化にするのかを選べます。バリエーション選択もできて、いろいろなカテゴリの商品をどのくらいで出すかを選択できます。

次にフィルタリング機能ですが、予測のタイミングで絞り込むことができます。モニタリング、エラーレポート、アラートの機能がありまして、例えばログが突然発火しなくなったというような挙動に対してもアラートを設定できます。その推薦結果に対する確認ツールも用意されていて、プレビュー機能で見ることができます。

それから実際のクリックログとかを正しく送れば、CTR、CVRでレポーティングしてくれる機能もあります。課金の仕方はコール数課金です。予測のタイミングでコールする課金です。

Recommendations AIを導入するには

次に導入のステップですが、まずGoogleのアカウントマネージャーに問い合わせが必要です。デフォルトだとクォータがあまりにも足りないのでプロダクションで利用するには対応不可能です。次に任意なんですが、Recommendations AIパートナーを紹介してもらい、そのパートナーと一緒に初期設計を行います。ZOZOに関しては、Brain Pad様と一緒に初期設計をしました。

そのあとは開発をしてリリースするというステップになります。

ZOZOTOWNにおける設計

ではさっそくZOZOTOWNにおける設計を説明します。

対象枠は、商品詳細面の下にある「おすすめアイテム」という枠としました。図にある通り、見ているページの商品説明の下にあります。この推薦方式になるのでOthers you may likeが選ばれます。

最初にやるべきことは、商品情報の更新です。ZOZOに関しては商品の差分更新データをPub/Subにパブリッシュしまして、そこからDataflow StreamingでRecommendations AIに取り込んでいます。商品の追加と更新系はDataflowで、1,000件ずつか1分経過したら発火するインポート処理で取り込みをしています。

初期はAPIで取り込むことができるのですが、APIのPOSTで取り込むとかなり遅かったので、インポートで取り込むと、とても早いです。商品の在庫切れであるとか表示オフにしたものはすぐに反映したいので、そのままDataflowでPATCHリクエストして更新しています。事前に商品が登録されたもののみユーザーログとつながるので、まずは商品の取り込みを行う必要があります。

ユーザーイベントの収集

次にユーザーイベントの収集です。非常にシンプルでして、Tag ManagerでRecommendations AIに飛ばしています。JSONを飛ばすのですが、ユーザーイベントの主要なものとしてはここに記載している商品詳細の閲覧のアクションと、お気に入り追加、カート追加、購入のログをとっています。

右に書いている通り、home-page-viewであるとかいろいろなアクションがあるんですが、送れるだけ送ったほうがより精度が出ると聞いています。

モデル生成

商品とユーザーイベントを登録したので、モデルを生成できます。モデルを生成するタイミングで必要な手順は、最適化のゴールとしてCTRなのかCVRなのかを選択して、カテゴリの多様性の度合いを決め、同確率時に料金が高いほうを優先するようなソートをするかしないかの選択して、最後にハイパーパラメータチューニングを3ヶ月おきに自動でやるのか、マニュアルチューニングのみにするかを選ぶ流れです。

モデルを生成するには条件がありまして、ユーザーのイベントがある程度以上ある必要があります。Others you may likeに関して言うと、過去90日以上において7日間以上の商品詳細面の閲覧ログがある、かつ商品当たりページビューの過去90日間平均が10以上である。これを両方満たすか、過去90日間において60日以上ログが入っているかのどちらかを満たすと、モデルの作成ボタンを押すことができます。

実際にそのあとは、1週間程度でモデルができあがります。

プロダクションの手順

実際にプロダクション利用を行う手順です。

まずAPIキーを発行する必要があります。APIキーを発行したあとに、どういう枠で使うのかといったプレースメントを発行して、そのモデルとひもづけます。あとはそのプレースメントを指定して、見ている面の商品IDとユーザー情報とフィルタリング条件で予測リクエストを送ります。

すると推薦結果の商品ID一覧と推薦トークンが返却されます。ZOZOに関していうと、Bigtableに保存している商品情報を付与して、推薦APIとして実現しています。実際にその精度なんですが、まだリリースしていないのであれですが、なかなかよさそうな印象です。予測に関してはCTRの最適化とCVRの最適化を選べるんですが、両方のモデルを作成して両方選べるようにといいますか、両方作ってしまうのがいいとされています。

非常にシンプルにRecommendations AIを利用できる

まとめです。非常にシンプルな開発でRecommendations AIを利用できます。多機能なのでいろいろとやってくれます。Google Cloud Day:DigitalでZOZOのCTOである今村が発表していましたが、近日リリース予定です。

推薦基盤チームの役割

最後にちょっと宣伝になってしまうんですが、推薦基盤チームの役割を説明させてください。大きく3つありまして、1つが株式会社ZOZOのビジネスサイドの達成したい目標に対して、どのように技術とビジネスをうまくつなぐかといったところのハブになるような役割です。

次に推薦分野に限った話ですが、これから何をやっていくのかというのを考えて進めていくというのがあります。Recommendations AIに関していうと、検証しておくべきという判断で進めることになりました。そして開発もします。

3つ目の役割は研究所と連携して、会社としてノウハウを蓄積していくべき課題に対しては体制化を推進することです。

以上です。