1
/
5

【TECH BLOG】ZOZOTOWN検索の精度改善の取り組み紹介

こんにちは。検索基盤部の山﨑です。検索基盤部では、検索基盤の速度改善やシステム改善だけではなく検索の精度改善にも力を入れて取り組んでいます。

検索システム改善についての過去の取り組み事例は、こちらのリンクをご参照ください。


検索 カテゴリーの記事一覧 - ZOZO TECH BLOG
ZOZO TECH BLOG
https://techblog.zozo.com/archive/category/%E6%A4%9C%E7%B4%A2


また、ZOZOTOWNの検索ではElasticsearchを活用しています。Elasticsearchに関する取り組み事例はこちらのリンクをご参照ください。


Elasticsearch カテゴリーの記事一覧 - ZOZO TECH BLOG
ZOZO TECH BLOG
https://techblog.zozo.com/archive/category/Elasticsearch


本記事では、ZOZOTOWNで近年実施した検索の精度改善の取り組み事例を紹介します。

目次

  • 目次
  • はじめに
    • ZOZOTOWN検索の処理フロー
    • ZOZOTOWN検索改善の方針について
  • 商品のリランキングロジックについて
    • 商品のリランキングロジックの概要
    • 特徴量ロギングの導入について
  • 今後のZOZOTOWN検索の展望
  • おわりに

はじめに

ZOZOTOWN検索の処理フロー

ZOZOTOWN検索では、ユーザーが検索クエリを入力してから検索結果を出力するまで大きく3つのステップに分けられます。



  • Step 1: ユーザーから入力された検索クエリを受け取る。
  • Step 2: 検索クエリの意図を解釈した結果を基にElasticsearchのクエリを作成する。
    • クエリ分割をQuery Segmentation、クエリの属性の引当をEntity Recognitionと呼ぶことがあります。
  • Step 3: 作成されたElasticsearchのクエリを基に、検索結果に表示される商品の絞り込みと並べ替えを行う。

本記事では特に以下の内容について紹介します。

  1. 全ステップに共通するZOZOTOWN検索改善の方針について

Step 3の仕組みの概要と特徴量ロギングの導入について

  1. Step 2の現状と今後の展望について

次節では、全ステップに共通する改善方針について説明します。

ZOZOTOWN検索改善の方針について

プロダクトを成長させるためには、良い評価指標の設計と施策の試行回数が必要です。全ての施策はA/Bテストで検証するため、各ステップでA/Bテストが容易に実施可能な状態となるようにシステム改修を進めました。

各ステップでA/Bテストが実施できる状態になった後は、評価指標の設計を進めました。評価指標の設計はZOZOTOWN全体のKGI/KPIまで関わるため、非常に難しい内容です。

私たちは、まず「良いZOZOTOWN検索とはなにか?」を議論してKPIツリーを作成しました。このKPIツリーをベースに、ガードレール指標を定めました。ガードレール指標とは、ビジネス上毀損したくない指標で、例えばZOZOTOWN全体の売上などが該当します。ガードレール指標をA/Bテストの度に計測することで、思わぬ事故を未然に防ぐ効果があります。こちらは、A/B Testing at Scale Tutorialなどで紹介されています。

ZOZOTOWN検索改善の方針について

プロダクトを成長させるためには、良い評価指標の設計と施策の試行回数が必要です。全ての施策はA/Bテストで検証するため、各ステップでA/Bテストが容易に実施可能な状態となるようにシステム改修を進めました。

各ステップでA/Bテストが実施できる状態になった後は、評価指標の設計を進めました。評価指標の設計はZOZOTOWN全体のKGI/KPIまで関わるため、非常に難しい内容です。

私たちは、まず「良いZOZOTOWN検索とはなにか?」を議論してKPIツリーを作成しました。このKPIツリーをベースに、ガードレール指標を定めました。ガードレール指標とは、ビジネス上毀損したくない指標で、例えばZOZOTOWN全体の売上などが該当します。ガードレール指標をA/Bテストの度に計測することで、思わぬ事故を未然に防ぐ効果があります。こちらは、A/B Testing at Scale Tutorialなどで紹介されています。

ガードレール指標を決めた後は各ステップでのA/Bテストの評価指標(Overall Evaluation Criterionを略してOEC指標とも呼ばれます)の設計を進めました。

評価指標の設計に際して、[2019 KDD-tutorial] Challenges, Best Practices and Pitfalls in Evaluating Results of Online Controlled Experiments で紹介されている下記5つの特性を参考にしています。

  • Sensitivity: 変更に対してどれだけ指標が変化するか
  • Trustworthiness: 得られた指標がどれだけ信頼できるか
  • Efficiency: 指標の計測がどれだけ効率的か
  • Debuggability and Actionability: 指標の変化を説明できる状態か
  • Interpretability and Directionality: 指標を改善したとき、最終的な目標値が改善するか

A/Bテストの基盤と運用を整備すると、1回当たりのA/Bテストの実行コストが小さくなるため、小さな改善でも気軽にA/Bテストを実施できるようになります。また、Sensitivityの高い指標を定義できていれば、1回当たりのA/Bテスト期間も短くできます。そのため、Sensitivityが高い指標を見つけることは試行回数を増やす上でも大切です。

小さな改修を重ねてA/Bテストを繰り返すと、Sensitivityの高い指標については有意な差が計測され、機能に変化が出ていることが確認できました。 一方で、Sensitivityの低いKPIについては一度のA/Bテストで有意な差が計測されることが少ないため、小さな改善の積み重ねがKPIに正しく影響を与えているのか疑問視されていました。 この疑問に対応するため、ZOZOTOWN検索では、改善を積み重ねた現行ロジックと1年前のロジックをA/Bテストで比較するネガティブテストを行いました。結果として、現行のロジックと1年前のロジックではKPIに大きな差が観測され、小さな改善の積み重ねがKPIの改善に有効であったことが分かりました。

以上をまとめると、各ステップにおいて下記のサイクルを回しながら改善を進めています。

  1. A/Bテストが可能な状態にシステムを改修する。
  2. A/Bテスト後のリリース判断に用いるガードレール指標と評価指標を設計する。
  3. A/Bテストを何度か実施してリリースを進める。
  4. 複数の改修をリリースした後に、1年前のロジックと比較してKPIの改善を確認する。
  5. KPIと評価指標の見直しを行う。

次章では、近年特に改善が進んだStep 3の商品の並べ替え(以下リランキングと呼ぶ)について紹介します。

商品のリランキングロジックについて

ZOZOTOWNのおすすめ順検索では、機械学習モデルを活用することでユーザー1人当たりの購入率を大幅に改善しました。

商品のリランキングロジックの概要

ZOZOTOWN検索では、検索したユーザーの情報と検索クエリを入力として、パーソナライズされた商品一覧の結果を返します。毎回全ての商品を機械学習モデルでランキングすると、計算コストが膨大になります。そこで、商品のランキングロジックを2つのフェーズに分けることで、計算コストを軽量化しました。



最初のフェーズでは、再現率を高めることを目的にルールベースのロジックや軽量な機械学習モデルを用いて、商品のフィルタリングを行います。

Elasticsearchでは、入力されたクエリと商品indexの各フィールドとのマッチスコアの重みを設定できます。下記のクエリ例の "brand_name^0.1"0.1 部分です。この重み付けを線形モデルで学習する手法を採用しています。

{
  "query": {
    "bool": {
      "must": [
        "multi_match": {
          "query": "クエリ1",
          "fields": [
            "brand_name^0.1",
            "shop_name^0.2",
            ...
          ]
        },
        "multi_match": {
          "query": "クエリ2",
          "fields": [
            "brand_name^0.1",
            "shop_name^0.2",
            ...
          ]
        }
      ]
    }
  },
  "score_mode": "sum",
  "boost_mode": "sum"
}

次のフェーズでは、適合率を高めることを目的に商品間の順序関係を学習する「ランキング学習」と呼ばれる手法の機械学習モデルを用いて、商品を並べ替えます。

フィルタリングされた全商品に対してランキング学習を走らせるのではなく、フィルタリング時のElasticsearchのスコア結果トップN件に絞ってリランキング処理を行います。リランキング処理でのランキング学習では、ElasticsearchのLearning to Rankプラグインを使用しています。詳しくはElasticsearch Learning to Rankプラグインの使い方とポイントをご覧ください。


Elasticsearch Learning to Rankプラグインの使い方とポイント - ZOZO TECH BLOG
検索基盤部の内田です。私たちは、約1年前よりヤフー株式会社と協力し、検索機能の改善に取り組んでいます。現在、ZOZOTOWNのおすすめ順検索に用いている、ランキング学習を利用した検索機能も、その取り組みの一部です。 本記事では、Elasticsearch上で、ランキング学習により構築した機械学習モデルを用いた検索を行うためのプラグイン「 Elasticsearch Learning to ...
https://techblog.zozo.com/entry/elasticsearch-learning-to-rank-plugin


また、機械学習モデルの開発にはVertex AI Pipelinesを利用しています。詳しくはVertex AI Pipelinesによる機械学習ワークフローの自動化をご覧ください。


Vertex AI Pipelinesによる機械学習ワークフローの自動化 - ZOZO TECH BLOG
こんにちは。検索基盤部の倉澤です。 私たちは、ZOZOTOWNの検索機能の改善に取り組んでいます。ZOZOTOWNのおすすめ順検索ではランキング学習を用いた検索機能の改善に取り組んでおり、A/Bテストにて効果を測定しています。 ランキング学習やElasticsearch Learning to Rankプラグインについては過去の記事で紹介していますので、併せてご覧ください。 私たちは、機械学習モデルの開発からデプロイまでの一連の処理を実行するワークフローの構築にGoogle Cloud Platform(
https://techblog.zozo.com/entry/automate-workflows-with-vertex-ai-pipelines


機械学習モデルの導入前後でネガティブテストを実施することで、ユーザー当たりの商品購入率が大幅に改善することを確認しました。

次節では、機械学習モデル改善の取り組みの中でも評価指標が大きく改善した、特徴量ロギングの導入について説明します。


特徴量ロギングの導入について

ZOZOTOWN検索の処理フローの概要は下記のとおりです。

続きはこちら

株式会社ZOZOでは一緒に働く仲間を募集しています
2 いいね!
2 いいね!
今週のランキング
株式会社ZOZOからお誘い
この話題に共感したら、メンバーと話してみませんか?