はじめに
こんにちは、データサイエンティストの矢内です。私が所属するData Management Office データサイエンスセクションでは、AI・機械学習、統計学といった技術を活用して、日々Oisixのサービス改善に取り組んでいます。
私たちは、データ分析だけでなく、実際のビジネス指標にインパクトを与える施策の立案・実行にも携わっています。その中で昨年度、パーソナライズ推薦機能の試験導入を行い、売上向上につながる手応えを得たため、全デバイスへの展開を決定しました。
本記事では、このパーソナライズ推薦機能の「あなたにおすすめ」枠導入に至るまでのプロセスや効果検証において注意すべき点をご紹介します。
「あなたにおすすめ」の仕組み
「あなたにおすすめ」は、ユーザーが過去に購入していない商品を中心に推薦し、新しい商品との出会いを増やすものです。これにより、短時間で欲しい商品に辿り着いてもらい、食の楽しみを広げることを目指しています。
裏側の機械学習システムに興味がある方は弊社MLエンジニアが書いた「あなたにおすすめ」を支える機械学習システムの記事もご覧ください。

あなたにおすすめの例:私はよくお菓子や惣菜を買うので、それに関連した商品がレコメンドされています。
あなたにおすすめ導入まで
ビジネスインパクトの推定
我々はデータに関する専門家なので、思いつきで施策を打つのではなく、データを用いて効果を推定して導入の意思決定をします。 とはいえ、パーソナライズされたレコメンド枠は当社に導入事例がなかったので、定性、定量の両面で推定しました。
まず、レコメンドモデルのプロトタイプを開発し、その出力データ(推薦リスト)をECサイトの施策立案等を担当する社内メンバー複数名にレビューしてもらいました。その結果、「このラインナップなら魅力的で購入したい」といった肯定的な定性評価を得ることができました。この評価を踏まえ、新しい推薦枠は既存枠(上記画像のもう一度買う等)の売上と比較しても一定の効果が見込めるという仮定をおき、定量的なインパクトを推定しました。この定性・定量の両面からのアプローチにより、最終的にプロジェクト開始の承認を得ることができました。
KGI, KPIの設計
ECサイトを改善する際には、部分的な最適化が必ずしも全体の最適化につながらない点や、局所的な改善の効果をサービス全体で正しく測定・評価することが難しい点に注意が必要です。
ページや枠を個別に最適化すると、局所的には効果があるように見えても、全体では効果がない場合があります。これは、個々の最適化がサービス全体のユーザー行動や目標達成との関連性を考慮していない場合に起こりえます。実際に弊社でも特定のページに対しての導線を増やす施策を打ち、そのページの売上増加は達成したものの、他のページの売上が下がってしまっていてサービス全体の改善には至らなかったということがありました。
また、今回導入する「あなたにおすすめ」枠のように一部のページのみを変更する場合、その効果はサービス全体から見ると小さいことが多く、サイト全体の様々な変動の中に埋もれてしまう可能性があります。そのためサービス全体で統計的に有意差を出すのは難しくなります。たとえ局所的には効果が見られてもそれが真にサービス全体の改善に貢献しているのかを判断できないため、導入が見送られるリスクがあります。 これは希薄化(dilution)と呼ばれ、この課題や対処法についてはSharpening the Blur: Removing Dilution to Maximize Experiment Powerという記事で詳しく解説されています。我々も、特定の行動をしたユーザーのフィルタリングなど、この記事で紹介されているいくつかの希薄化対策をしています。
※指標の設計に関してより詳しく知りたい方はA/Bテスト実践ガイド 真のデータドリブンへ至る信用できる実験とはの7章「実験のためのメトリクスとOEC」が参考になります。
上記を考慮しながら今回は次のように指標と評価基準の設計をしました。
指標
- KGI:サービス全体の売上
- KPI:「あなたにおすすめ」枠のあるページ全体の売上
評価基準
次の条件を全て満たした場合、KGIに寄与したとする。
- KPIに統計的に有意なupliftがあること
- KGIにupliftがあること(統計的に有意でなくとも可)
- ユーザーアンケートの定性/定量評価が良いこと(スコアが高い、ポジティブなコメントが多いなど)
今回はKPIの有意なuplift、KGIのuplift(残念ながら有意ではなかった)、ユーザーアンケートの評価が良かったということからリリース判断になりました。
A/Bテストおよび効果検証
プロジェクトが無事に始動し、KGI・KPIも設定しました。枠の開発も完了し、A/Bテストの実施です。Treatment群のユーザーのみにあなたにおすすめ枠を表示するというシンプルなものですが、注意すべきポイントがいくつかあります。弊社では特に次の2点に留意しました。
- 分割単位と集計単位が適切に一致しているかを確認する
- 3群以上の比較をする場合は、t検定ではなくDunnett検定を適用する
分割単位と集計単位が適切に一致しているかを確認する
今回のA/Bテストは4週間行いました。そうなると同一ユーザーの購入が複数出てくることがあります。
それを別のユーザー扱いしてA/Aテストを実施した結果、異常に有意差が出やすくなっていることがわかりました。原因はユーザー単位で群を分けたにもかかわらず、集計時にユーザー*週単位とし、データに相関が生じたためでした。 そこで各ユーザーの購入金額の平均を取ることにより、ユーザー単位で集計できるようにしました。

画像:ユーザー*週単位で集計した時のA/A testの結果。赤の線が期待値だが、p_valueが異常に低く出やすくなっている。1000回やったら偶然有意判定されるのは50回程度になってほしい。

画像:ユーザー単位で集計した時のA/A testの結果。概ね期待値通りの一様分布になっている。
3群以上の比較をする場合は、t検定ではなくDunnett検定を適用する
モデル改善のA/Bテストでは、2群ではなく3群以上での比較をすることもあります。このような場合、多重比較を考慮しないで検定をしてしまうと効果がない施策を誤って「効果あり」と判断してしまう(第一種の過誤)リスクが高まります。
例えば、t検定を有意水準5%で複数回行うと、少なくとも1回は有意になる確率は1-(1-0.05)^n
で表されます。n=10のときには何も効果がない場合でも偶然「有意差あり」と判定される確率がなんと40%を超えてしまいます。
また、3群以上の平均値の比較に使用される分散分析は「複数の群のうちどこかに有意差があるか」かどうかを判定する手法です。そのため、「T群1とT群2の間に有意差がある」場合でも有意と判定されるので、今回の目的には沿いません。
このような多重比較に対応するため、Dunnett検定を実施しました。これは簡単に言えばt検定をベースに、Treatment群の数に応じて有意差が出にくくなるような補正がかかった検定です。
以上のように、プロジェクト承認から効果検証まで試行錯誤を重ねながら進め、無事正式にリリースできました!現在も元気に動いています!
Oisixで働く楽しさ
常にtoC分析ができる
前職のAIコンサル会社では、主にtoB分析を担当していましたが、プロジェクトによってはドメインに興味が持てないこともありました。
しかし、弊社ではtoC分析が自由にできるため、データから「やっぱりそう考えるよね」と共感したり、「この行動履歴のユーザーが多いから、この施策が有効かも」とユーザー心理を分析できたりするのが楽しいです。
特に弊社ではtoCサブスクリプションならではのデータ分析が可能です。同じユーザーが何度も来訪、購入するため、リピート行動や継続率の分析など独自のインサイトを得られます。
単なる分析に留まらずKPI設計などの上流からPJに関われる
「データサイエンティスト」という言葉の定義は広く、会社によって役割も曖昧です。 弊社では単なる分析にとどまらず、施策提案やKPI設計などの上流から多岐に渡ってプロジェクトに関われるため、会社全体の動きを感じられます。
また、コンサルタントとは異なり社内メンバーとして活動するため、社内の用語や歴史に関するドキュメントに自由にアクセスできたり、気軽に同僚に質問もできたりして非常に動きやすいのも魅力です。
終わりに
「あなたにおすすめ」導入までのプロセスと効果検証について重要なポイントを解説しました。 我々は本記事で説明した効果検証や推薦機能以外でも需要予測・生成AI活用に関わる開発をしており、一緒に働いていただけるデータサイエンティストやMLエンジニアの方を募集しています。カジュアルに話すだけでも大丈夫なので、興味がある方はご連絡ください。