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

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

この記事では昨年の記事に引き続き、ZOZOの推薦基盤チームで私とチームメンバーがこの一年、サービス面・組織面で取り組んできたものをいくつか取り上げたいと思います。昨年の振り返りについては以下の記事を参照ください。

https://qiita.com/f6wbl6/items/448e4f4b420a535f8cfa

なおこの記事のタイトルは弊社 CTO 兼執行役員の [@sonots](https://twitter.com/sonots) が書いた以下の記事のオマージュです。

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

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

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

# モジュール並び順パーソナライズ機能のリリース
ZOZOTOWN のホーム画面では「モジュール」と呼ばれる単位で商品が表示されていますが、このモジュールの並び順をユーザーごとにパーソナライズする機能をリリースしました。

https://techblog.zozo.com/entry/zozotown-home-module-personalization-v1

これまでは一部のモジュールに表示される商品のパーソナライズにとどまっていましたが、本機能のリリースでモジュールの並び順自体がパーソナライズされるようになり、ユーザーの商品閲覧数増加や滞在時間増加が期待できます。

この機能のリリースに際しA/Bテストを実施したところ受注金額系の指標改善は見られなかったものの、モジュールに掲載されている商品の閲覧数やクリック数は大きく増加しており、よりユーザーの興味を惹く訴求が実現できていることを確認しました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/265024/d3fe0e95-7636-97cd-1dad-b1f44e495c24.png)

このプロジェクトに関して [Recommendation Industry Talks #4](https://recommendation-industry-talks.connpass.com/event/330650/) というイベントで発表し、登壇資料も公開しているため是非ご覧ください！

https://speakerdeck.com/f6wbl6/home-page-personalization-at-zozotown


# コスト削減施策実施
ZOZOTOWNで利用される推薦システムが増えるにつれてシステム運用コストも年々増加していたため、2024年は不要なコストを削減する取り組みに注力しました。

コスト削減と言っても小さなことを積み重ねるだけですが、具体的には以下のような施策を実施しています。

- BigQuery に保存されている実験用データセットへの expiration 付与
- BigQuery の料金体系変更（スロット課金 ↔︎ オンデマンド課金）
- Cloud Storage bucket を AutoClass 化
- Cloud Storage オブジェクトの削除・アーカイブポリシー適用
- 再現可能な dev, stg でのバッチジョブ停止
- 推薦商品の遅延読み込み（Lazy loading）機能導入
- etc.

実施した内容を大きくまとめると「不要なデータの削除」「不要なジョブや推薦は実行しない」という2点になります。
MLモデルの開発には大量のデータが必要になりますが、同時に大量の中間データや学習済みモデルといった副産物が生まれるため、こうしたデータを適切なタイミングで自動的に削除する仕組みを利用しています。

コスト削減を進めるにあたって各推薦システムがどの Google Cloud サービスでどの程度コストをかけているのかを把握する必要があり、今回の施策に合わせてコストをモニタリングするための仕組みも作ったため、今後のシステム運用にも有用な仕組み作りになったと考えています。

上記の施策を実施した結果、**年間で数千万円単位のコストを削減**することができました。


# Findy Team+ の運用開始
会社全体での取り組みとして開発生産性の向上を掲げていますが、今年の4月より全社的にFindy Team+の運用が開始されました。
Findy Team+ではGitHubでの行動ログを使って開発生産性を定義していますが、Findy Team+導入後に推薦基盤チームでは特に「**PRオープンからレビューまでの時間**」が極端に長いことが判明しました。

```plantuml
@startuml
<style>
root {
  Padding 0
  Margin 0
}
footer {
  FontColor black
  FontSize 40
}
</style>
footer Findy Team+導入時点の指標に対するコメント
title <img:https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/265024/530cb1b3-3691-4379-ef99-9da791e51e81.png>
@enduml
```

この課題に対してとったアクションは至ってシンプルな以下の二つです。

1. **PRの粒度を細分化**
1. **（基本的に）PRレビューを最優先**

このような施策を進める上では「指標値を改善することが目的になってしまう」という落とし穴があるため、Findy Team+の指標値改善に固執して開発効率が落ちてしまう状況を避けることを前提として、指標値改善を進めています。

この結果として、弊社の中で唯一 Findy Team+ Award 2024 の「チーム単位での開発生産性スコアが優れたチーム」部門で表彰していただくことに繋がりました。

https://findy.co.jp/2372/


# 登壇・テックブログでのアウトプット
今年は外部登壇やテックブログ執筆といったアウトプットが多かったため、推薦基盤チームのメンバーが登壇・公開したものをまとめます。

## テックブログ
今年はチームとして6本のテックブログを執筆しました。

|記事名|執筆者|
|:--|:--|
|[クーポン推薦モデルとシステム改善の取り組み](https://techblog.zozo.com/entry/improve-coupon-recommendation)|[@rayuron](https://x.com/rayuron)|
|[dbt導入によるデータマート整備](https://techblog.zozo.com/entry/dbt-adoption)|[@i-125](https://x.com/i_125)|
|[ZOZOの新卒1年目MLエンジニアが行くCVPR 2024 参加レポート](https://techblog.zozo.com/entry/cvpr2024-report)|[@kosuke_sumiyasu](https://x.com/kosuke_sumiyasu)|
|[ZOZOTOWNホーム画面のパーソナライズ - Two-Towerモデルで実現するモジュールの並び順最適化](https://techblog.zozo.com/entry/zozotown-home-module-personalization-v1)|[@f6wbl6](https://x.com/f6wbl6)|
|[RecSys 2024参加レポート](https://techblog.zozo.com/entry/recsys24)|[@rayuron](https://x.com/rayuron), [@f6wbl6](https://x.com/f6wbl6)|
|[KPIのモニタリング自動化と運用体制の整備](https://techblog.zozo.com/entry/kpi-monitoring)|[@rayuron](https://x.com/rayuron)|

## 外部登壇
今年は5本の登壇を行いました。テックブログ・外部登壇ともにアウトプットしているメンバーに偏りがあるのは否めないので、来年はさらに多くのメンバーにアウトプットしてもらえる仕組みを作っていきます。

|イベント名|登壇者|
|:--|:--|
|[ZOZO Tech Meetup ～データガバナンス / データマネジメント～](https://zozotech-inc.connpass.com/event/329926/)|[@i-125](https://x.com/i_125)|
|[生成 AI Conf - AIレコメンドシステムの最前線を語る](https://generative-ai-conf.connpass.com/event/333524/)|[@f6wbl6](https://x.com/f6wbl6)|
|[Recommendation Industry Talks #4](https://recommendation-industry-talks.connpass.com/event/330650/)|[@f6wbl6](https://x.com/f6wbl6)|
|[【オフライン開催】GitHub Universe 2024 Recap in ZOZO 「GitHub Copilot のテクニック集」](https://zozotech-inc.connpass.com/event/336687/)|[@rayuron](https://x.com/rayuron)|
|[第 47 回 MLOps 勉強会 「ZOZOTOWNの推薦のKPIモニタリング」](https://mlops.connpass.com)|[@rayuron](https://x.com/rayuron)|


# 今年の総括と今後の話
昨年と比較すると2024年は活動が縮小化しているように見えますがそんなことはなく、ホーム画面のパーソナライズ化に向けて大小様々なプロジェクトに取り組んでいます。

ホーム画面でのパーソナライズプロジェクトを通して短期的に CTR や CVR を改善する手札をいくつか得られた一年だったと感じています。一方で長期的なユーザー体験を改善する手札はまだ持ち合わせておらず、結局ユーザーにとってどのようなZOZOTOWNを提供するのが良いのか、というアンサーは得られていません。

この答えを探すべく、現在推薦基盤チームでは新規性や多様性、セレンディピティといったいわゆる **Beyond-accuracy** なメトリクスを改善していく方針を立てて施策を実施してます。

来年の今頃にはこの舵取りの成果がどうだったのか報告できるように ZOZOTOWN をさらにアップデートしていきます！