![株式会社メルカリ Machine Learning Engineer alpicola氏](http://cz-cdn.shoeisha.jp/static/images/article/16872/16872_001.jpg)
「メルカリ・パーソナライズ機能」における最適化のチャレンジ
日本最大のフリマサービス「メルカリ」。一般的に私たちは購買行動をする際、さまざまな情報をインプットして、こういうものが欲しいというニーズを認知するところから始まる。そして商品を比較検討し、最も気に入ったモノを購入する。
一見、普通の購買行為に思えるが、「メルカリ」でパーソナライズ機能を開発するalpicola氏は、その難しさと解決策についてこう話す。「出品される商品がたくさんあり、お客さまも多く、そのニーズはさまざまです。多くの商品の中から、お客さま一人ひとりが本当に欲しい商品を見つけるのは難しい。そのニーズの認知と商品の探索というフローをお手伝いするのがパーソナライズ機能です。お客さま一人ひとり、ニーズに合った商品の発見を手助けして買い物を楽しんでもらうために提供しています」(alpicola)
ではどんなパーソナライズ機能を提供しているのか。alpicola氏は2つの取り組み事例を紹介した。1つ目は「パーソナライズド商品レコメンド」。一般的なパーソナライズド商品レコメンドは「お買い物履歴から推測して、パーソナライズし商品をレコメンドしています」とalpicola氏は語る。
「例えばAさん、Bさん、Cさんという3人のお客さまがいたとします。それぞれの購入履歴を調べると、Aさんは子ども服と子どもの靴、Bさんはタブレット、Cさんは子ども服とタブレットでした。これらの買い物傾向から、Aさんと同じように子ども服を購入しているCさんは、子どもの靴も欲しいのではと推測できます。このように個人の買い物履歴に基づいて、潜在的ニーズを推測するのが、よくあるパーソナライズド商品レコメンドの方法です」(alpicola氏)
だがこの方法は、「メルカリ」のようなフリマアプリ(C2Cマーケットプレイス)では難しい。なぜなら「メルカリ」に出品されている商品は1点モノだから。「まったく同じ状態の同じ商品はありません。AさんとCさんの購買履歴から、CさんにAさんの購入した靴をお勧めしたいと思っても、既に売り切れている商品なのでレコメンドすることはできない。そういう問題が『メルカリ』ではあります」(alpicola氏)
ではどのように商品レコメンドをすればよいのか。そのアイデアが商品トピックの作成である。
「トピックとは個々の商品ではなく、興味のある商品のまとまりです。例えば、先の例であればトピック1が子ども服や子ども靴。トピック2はタブレット端末。このようなトピックからキーワードを抽出したり、商品カタログ情報とのひも付けからトピックを商品に割り当てたりして、トピック単位でレコメンドモデルを作成します。トピックの情報とユーザーの情報からマッチング度を予測するというモデルです」(alpicola氏)
そしてこの商品トピックを使ったパーソナライズドレコメンデーションは、通常の商品単位の場合と同様のレコメンドアルゴリズムが適用できるのだ。後はマッチング度の高い順にトピックとその商品をレコメンドしていくだけである。
「商品トピックを使ったレコメンドだと、商品の売り切れに対してよりロバスト性(外的な要因に影響されにくい性質)が高められます。そこがメリットです」(alpicola氏)
加えて、「アプリのホーム画面にレコメンドコンポーネントが組み込まれています」とalpicola氏は明かす。アプリの上部から一つずつトピックをキーワード付きで提示することで、トピックに関してお客さまがニーズを認知する助けになっている。
またもう一つ、「メルカリ」が提供しているのがホーム画面のパーソナライズ機能である。ホーム画面はレコメンドした商品やいいねした商品、閲覧した商品など、複数のコンポーネントで構成されている。「ホーム画面に求められる機能はお客さまによって異なるのではという仮説がありました。そこでお客さまが必要としている機能をパーソナライズして提供するにはどうすれば良いかを考えました」とalpicola氏は続ける。
alpicola氏たちが取り組んでいるのが、「バンディットアルゴリズムを用いた表示レイアウト最適化」である。バンディットアルゴリズムとは、探索的に最適なものを発見するアルゴリズム。特に「メルカリ」のホーム画面のように複数のコンポーネントを組み合わせることができる場合、たくさんの組み合わせの中から表示パターンを一つずつABテストで比較検証するのは、膨大な時間がかかる。だがバンディットアルゴリズムなら表示パターンごとにABテストをすることなく、全パターンに対する最適化ができるのだ。
具体的には、ある表示パターンを提示し、お客さまがどんなコンポーネントをタップしたのか、その行動ログをフィードバックする。その情報を元にバンディットアルゴリズムがさらに良いパターンを提示し、レイアウトの最適化を行っていく仕組みである。
だが、バンディットアルゴリズムを採用する際に重要になるのは、最適化目標を適切に設定すること。alpicola氏も最初の実験では、最適化目標としてコンポーネントのタップ数を設定していた。「タップされていることは、ニーズにマッチして使ってもらえていると考えたため」とalpicola氏。
しかし、結果はホーム画面経由での購入が減少した。理由を分析したところ、表示する候補の一つに閲覧履歴コンポーネントがあったことだ。「閲覧履歴コンポーネントはよくタップされていましたが、結局、購入しなかった商品。そこから新たな商品の発見がなく、結果的に購入につながりませんでした」(alpicola氏)
このことから、新しい商品や本当に欲しい商品が発見でき、購入に結び付けられることが大事だとわかったalpicola氏たちは、それを踏まえて次の実験では、タップや「いいね」など各種フィードバックを元に購入を予測する指標を作成した。それを最適化目標とすることで、ホーム画面経由の購入増加という結果が得られたのだ。
![購買行動のフローとパーソナライズによる支援範囲](http://cz-cdn.shoeisha.jp/static/images/article/16872/16872_002.jpg)
パーソナライズ機能を開発するためのスキルセットと開発体制
このように「メルカリ」ではいろんな切り口でパーソナライズを実現している。いずれもよく知られた手法を使いながらも、サービス要件に合わせて問題設計をカスタマイズする工夫が求められる。
それだけに、このような機能を提供するために必要なスキルセットは多岐にわたるとalpicola氏は言う。大きくは「効果的な施策・アルゴリズムを発見するデータサイエンス力」と「大規模なトラフィックやデータを扱うエンジニアリング能力」が欠かせない。そしてそれぞれの専門性を持ったメンバーが協業していくことで実現している。
だが先述したように、「メルカリ」のようなC2Cマーケットプレイスでのパーソナライズの応用事例は少なく、未知のことだらけ。「何がうまくいくかは本番環境でいろいろと実験してみないとわかりません」とalpicola氏は言う。そこで仮説検証をベースとしたアジャイルなアプローチを採用し、開発している。
メルカリにはパーソナライズ機能開発に取り組む、レコメンデーションチームがある。プロダクトマネージャー、エンジニアリングマネージャー、そして7~8人のソフトウェアエンジニアで構成されている。「データ分析や機械学習などデータサイエンスに強いメンバーや、ソフトウェア開発に精通しているメンバーなど、それぞれの強みを生かして開発に取り組んでいます」(alpicola氏)
開発スタイルは、フルサイクル開発を採用。フルサイクル開発とは、機能を開発から運用まで、ソフトウェアライフサイクル全行程においてチームで完結するスタイルである。
「私たちレコメンデーションチームがメインで担当するのは、Recommendation APIというマイクロサービスの開発、運用です。サーバ部分だけではなく、レコメンド結果を返すためのデータパイプライン、学習したモデルや予測結果を格納するデータストレージなどをまとめて運用しています。ログの基盤やマイクロサービスを束ねる基盤など、メルカリ社内のプラットフォームをフル活用して、機能の開発・リリース、障害対応などチームで責任を持って取り組めるようになっています」(alpicola氏)
機能開発では、「仮説検証の概念を大事にしています」とalpicola氏。実験計画から機能実装、オフライン評価、オンラインABテスト、結果分析、リリースまでを約1〜2カ月のサイクルで実践していく。得られた知見は、次の計画をアップデートしていくのだ。
この仮説検証サイクルを効率的に回すために、alpicola氏たちはいくつかの取り組みを行っている。その一つが実験設計書のテンプレートを導入していることである。テンプレートには目的、仮説、ゴールメトリクスの定義、アクションプランと、実験を正しく行うための情報がリストアップされており、それを埋めることで各実験の品質が担保され、実験設計レビューの効率化が図れる。
またもう一つの取り組みが、実験結果の測定・可視化を自動化してくれるツールの開発である。「設定ファイルに実験期間や実験の成功を定義するメトリクスの定義を記述することで、集計した結果のBigQueryへの書き込みや、Streamlitでの表示までを自動で一気に行ってくれます」(alpicola氏)
![パーソナライズ機能のシステム構成](http://cz-cdn.shoeisha.jp/static/images/article/16872/16872_003.jpg)
C2Cマーケットプレイスのパーソナライズ機能の開発は、まだまだ未知な部分が多く、仮説検証ベースの開発が主となる。「まだまだできていないことも多いです。これからさらにどんどんよくして、お客さまのさらなるニーズに応えていきたいですね」(alpicola氏)
alpiola氏は、そう力強く話しプレゼンテーションを締め括った。2,000万人以上のMAUを持つメルカリが、更に成長するための重要な柱とも言えるパーソナライズ。alpiola氏のチャレンジと今後の機能から目が離せない。