ZOZO推薦基盤チームの2023年の振り返りと現状

株式会社ZOZO 推薦基盤チームリーダーの [@f6wbl6](https://twitter.com/f6wbl6) です。この記事は「[ZOZO Advent Calendar 2023](https://qiita.com/advent-calendar/2023/zozo)」のカレンダー7の最終回（25日目）です。

この記事では、ZOZOの推薦基盤チームで私とチームメンバーがこの一年、サービス面・組織面で取り組んできたものをいくつか取り上げたいと思います。なおこの記事のタイトルと冒頭の文章は弊社 CTO 兼執行役員の [@sonots](https://twitter.com/sonots) が書いた以下の記事のオマージュです。


https://qiita.com/sonots/items/ca77f06ac0a806fd2e30

https://qiita.com/sonots/items/eaec792b4ee41ad7ef1b


# 2023年以前の取り組み
まず前提として、推薦基盤チームではこれまでにどのような施策を実施してきたのかを簡単にご紹介します。

## 商品詳細画面「おすすめアイテム」枠の改善
ZOZOTOWN において、商品詳細画面の下にある「おすすめアイテム」枠での推薦精度を改善するプロジェクトです。

既存システムではオンプレの SQL Server に対して都度クエリを投げていましたが、これを Google Cloud が提供する SaaS である [Recommendations-AI](https://cloud.google.com/retail/docs/features?hl=ja) での推薦にリプレイスしてその精度を改善しました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/265024/c29020db-61a5-3fc7-f505-3bbca6ef92ba.png)


Recommendations-AI 導入時の事例紹介については以下の記事を参照ください。

https://logmi.jp/tech/articles/323413


## 機械学習パイプラインの導入・標準化

その当時社内では機械学習パイプライン（以下、ML パイプライン）の構築・運用方針が標準化されていない中、バッチ ML パイプラインの標準化に向けて AI Platform Pipelines (現: [Vertex AI Pipelines](https://cloud.google.com/vertex-ai/docs/pipelines/introduction?hl=ja)) の導入を行ってきました。

https://techblog.zozo.com/entry/aip-pipelines-impl

上記システムの導入を皮切りに推薦基盤チームで管理している ML パイプラインがどんどん増えていきましたが、Kubeflow Pipelines ベースの ML パイプラインの作成・運用方法の標準化までは至っていませんでした。

そんな折に 2021年5月に Vertex AI Pipelines が発表され、MLOps チームが以下記事中の「今後の展望」セクションに記載している「パイプラインテンプレート」と呼ばれるものを開発し、ML パイプラインの開発フローが標準化されました。

https://techblog.zozo.com/entry/migrate-to-vertex-pipelines

以降、推薦基盤チームで管理していた ML パイプラインは全て Vertex AI Pipelines に移行しただけでなく、バッチシステムを作成する際のファーストチョイスとして Vertex AI Pipelines が挙がるようになりました。

### メール配信コンテンツ・セグメントの改善

上記の ML パイプラインを利用したシステムの多くはいわゆる MA (Marketing Automation) の文脈で使用されています。ZOZOTOWN では例えばメール・LINE経由で以下のような訴求をしています。

- ハイブランド好きなユーザーに向けたメール・push 通知
- コスメが好きなユーザーに向けたメール・push 通知
- シューズが好きなユーザーに向けたメール・push 通知
- etc.

こうした多様な訴求の裏側では、推薦基盤チームで開発した ML パイプラインによるユーザーセグメント・通知コンテンツの最適化が行われています。


## ホーム画面「モジュール」へのパーソナライズ導入・運用

ZOZOTOWN のホーム画面は「モジュール」と呼ばれる単位で商品が表示されており、推薦基盤チームではこのモジュールに表示されるコンテンツをユーザーごとにパーソナライズさせてきました。

https://techblog.zozo.com/entry/zozotown-home-personalize-impl

コンテンツのパーソナライズ結果を定量的に評価するためにモジュールの閲覧・クリックログを社内のデータ基盤に集約し、Looker Studio でダッシュボードを作成して運用状況をモニタリングするといった、データドリブンな施策を行うための地盤固めも並行して行ないました。

https://techblog.zozo.com/entry/zozotown-home-data-driven

#### 【コラム】モジュール管理ツールの開発

上述の「モジュール」はコンテンツを管理する EC チームが施策内容を考え、定期的にモジュールでの訴求内容を変更するリリースを行なっています。

こうしたリリース対象のモジュールは歴史的経緯から Google Spreadsheet で管理されていましたが、これを管理するための専用ツールを推薦基盤チームで内製化し運用を続けています。この内製管理ツールについてはテックブログ等にもアウトプットしていないため、また別な機会で取り上げたいと考えています。


## KPI ダッシュボードの開発・運用

ここまでに述べてきた商品詳細画面・MA・ホーム画面で運用されているシステムのビジネス指標を定量的にモニタリングするためのダッシュボード開発と運用フロー整備を行なってきました。

例えばホーム画面のモジュールは以下のようなダッシュボードを Looker Studio で開発し、推薦基盤チームではトレンドの把握やインサイトの獲得を目的として定期的に「ダッシュボードを眺める会」を行なってきました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/265024/65b45ca7-a6e0-bae3-d414-855ea9751b26.png)


# 2023 年の取り組み
ここからは 2023 年に取り組んだものにフォーカスしてピックアップしていきます。


## 商品詳細画面での取り組みについて記事化・登壇

商品詳細画面「おすすめアイテム」枠での改善の取り組みの総集編 + α として Google Cloud の佐藤様・桃井様のご協力のもと、「ZOZOTOWN に学ぶ次世代の推薦基盤」というタイトルにて Google Cloud Innovators Live Japan というイベントで登壇させていただきました。

https://twitter.com/googlecloud_jp/status/1626159458417008642

また Recommendations-AI の事例紹介として、以下のような記事を執筆していただきました。

https://cloud.google.com/blog/ja/topics/customers/zozo-recommendations-ai/

上記の記事中では「v1 beta1 から Retail API SDK に移行したい」と述べていますが既に Retail API SDK には移行済みで、また Recommendations-AI のネイティブアプリへの展開も完了しました。

これで「おすすめアイテム」枠で当初スコープとしていた範囲は一通り完了したため、ここからは商品詳細面での推薦システムの更なる改善に向けて施策を検討中です。


## ホーム画面でのパーソナライズの拡充

前述したホーム画面でのモジュールについて、ユーザーごとに表示されるコンテンツが変化するモジュールを拡充させました。

以下の記事ではユーザーがかつて接触した商品カテゴリ・ブランドを訴求するパーソナライズを行なっていますが、ここに「ブランド推薦」と「商品特徴推薦」を導入しました。

https://techblog.zozo.com/entry/zozotown-home-personalize-impl#アルゴリズム概要

### ブランド推薦
ブランド推薦は [Two Tower モデル](https://medium.com/nvidia-merlin/scale-faster-with-less-code-using-two-tower-with-merlin-c16f32aafa9f) と呼ばれるモデルアーキテクチャを使い、Two Tower モデル構築には [TensorFlow Recommenders](https://blog.tensorflow.org/2020/09/introducing-tensorflow-recommenders.html) というフレームワークを使用しています。

Two Tower モデルは、以下の図に示すように 2 つのニューラルネット（Tower）を使ってユーザーの特徴量とブランドの特徴量をそれぞれベクトルにして、ベクトル同士が近くなる（or 遠くなる）ように学習させるイメージです。

<img width="400" alt="tt" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/265024/7cc9fd82-e1d8-95ec-13b3-43ef5804aa83.png">

ここで得られた 2 つの学習済み Tower を使って推薦を行っていきますが、各 Tower を使ってどのように推薦ができるのかはちょうど推薦基盤チームのメンバーがアドベントカレンダーで整理してくれていましたので、そちらを参照ください。

https://qiita.com/rayuron/items/cc04468de7af3d82bac2


### 商品特徴推薦
商品特徴推薦は商品に紐づく検索用のタグをユーザーごとにパーソナライズさせる仕組みです。詳細は推薦基盤チームメンバーがアドベントカレンダーで書いてくれた以下の記事を参照ください。

https://qiita.com/shutosekiguchi/items/cf13328627ebd35bcbfe


## 既存推薦システムリプレイス・運用の廃止

2023年は推薦システムとしての地盤が固まってきたこともあり、ZOZOTOWN で運用されている既存システムについて大きく以下の観点で洗い出しを行いました。

1. **システムとして存在しているが使われていないもの**
2. **システムとして存在しており使われているがシステムコストが高すぎる（≒コストに対してペイできていない）もの**
3. **システムとして存在しており使われているが、改善の見込みがある & その改善幅が大きいと見込めるもの**

特に 2 番目の「コストに対してペイできていないもの」については重要な取り組みだと考えており、ZOZOTOWN は大量のトラフィックが来る関係でとてつもないコストがかかることがままあります。

実際に行ったものとして、「ホーム画面に表示させていたモジュールの一つを削除する」という施策があります。これはリアルタイムにシステム負荷の大きいクエリを実行する関係でインフラコストがかかっていたモジュールを削除したもので、このモジュールを削除したことで年間数千万円単位の人件費・インフラコストを削減することができました。

こうした施策を進めるためにはシステムメトリクスやビジネス指標のモニタリング体制が必要であり、これまでに推薦基盤で培ってきたシステムやダッシュボードが身を結んだ結果だと感じています。

ちなみにモジュールを削除する際に代替となる仕組みを用意しようとしており、その過程で「商品推薦を行う際、ビジネス要件に応じたフィルタリングはどのように実施すれば良いんだろうか…🧐」となって調査したものの一部が以下のアドベントカレンダーで書かれています。

https://qiita.com/yutatanamoto/items/503c80c1fe8adfbbebd4

## ホーム画面運用改善

前述の通り ZOZOTOWN のホーム画面のモジュールは EC チームがそのコンテンツを考えていますが、こうしたモジュールの運用実績はどうだったか・どういうトレンドだったか・どのような訴求方法だとユーザーにハマるか、といった振り返りを月次で実施するようにしました。

推薦システムを考える上でもファッションドメインの知見は重要で、実際にコンテンツを運用しているビジネスレイヤの方々とディスカッションできる貴重な場所となりました。

このように「システム開発側」「ビジネス側」という隔たりを作ることなくサービス改善で BizDevOps をした、という話を推薦基盤チームメンバーが以下の記事で話してくれています。

https://qiita.com/yan_yan/items/a8d82eb76d5e29f267cf


# 今後の話
ここまでに取り上げなかった施策も多数ありますが 2023 年までは基本的に土台整備のフェーズで、これからは「100 を 101 にする」というアップリフトを目指すフェーズに入っていきます。

ビジネス的にあって然るべきと考えられる推薦・パーソナライズを行うための地盤作りとはまた異なった視点での推薦システム構築が求められるため、ここからが本当の戦いになると考えています。

また地盤が整ったことで、これまでリソースを割くことが難しかった技術領域へのコミットもできるようになります。LLM の台頭などがある中でどこに注力すべきかの判断が難しくなってきますが、より良い ZOZOTOWN・ファッション業界を作るために日々進歩していきたいと思います。