こんにちは。ZOZO研究所の山﨑です。
ZOZO研究所では、検索クエリのサジェスト(以下、サジェスト)や検索後のアイテムの並び順といったZOZOTOWNでの検索改善にも取り組んでいます。
本記事では、ZOZOTOWNにおける実例を交えながら、サジェストの改善方針についてご説明します。
目次
一般的なサジェストの概要
はじめに、一般的なサジェストの分類や評価指標を説明します。
サジェストの分類
サジェストとは、検索窓にキーワードが入力された際に関連するクエリを表示する機能を指します。また、本記事ではサジェストに候補として表れるクエリをサジェストクエリと呼びます。
さらにサジェストは、A Survey of Query Auto Completion in Information Retrieval では、Query Auto CompletionとQuery Suggestionに分類されています。
名称 | イメージ図(画像は上記論文より引用) | 入力 | 出力 |
---|---|---|---|
Query Auto Completion | クエリのprefix | prefixから始まるN件のクエリのリスト | |
Query Suggestion | クエリ | 入力クエリに関するN件のクエリのリスト |
Query Auto Completionは新たな検索クエリを提案することではなく、ユーザーの検索を完了させることを目的としています。Query Auto CompletionとQuery Suggestionのどちらを採用するべきかは、サービスの目的などによって異なります。
しかし、改善には同じ指標を使うことができます。
サジェストの評価指標
サジェストの良し悪しを測る指標は、以下のように色々なものが提案されています。
名称 | 概要説明 |
---|---|
Impression Rate | 入力クエリに対してサジェストが表示される割合です。 |
Click Through Rate(pSaved) | サジェストクエリを選択した確率です。 オンラインのサジェストの評価指標としてよく用いられます。 |
Null Search Hit Rate(NSR) | サジェストクリック後、商品数が0件となる検索結果に飛ばした割合です。 0件ヒットページに飛ばすことはユーザー体験に悪影響を及ぼすため、できるだけ下げることが望ましいとされている指標です。 |
Minimal Keystrokes(MKS) | サジェストクエリを選択するまでの最小のキーストローク数です。 キーストローク数が少ない状態でサジェストをクリックする方がユーザビリティ向上に繋がったとみなせます。 |
eSaved | CTRに「サジェストを選択することで省略することができたキーストローク数」ベースの重みをかけ合わせた指標です。 CTRとMKSを組み合わせたような指標で、多くの文字列を省略できて、かつそのクエリが多くクリックされることを良しとした指標です。 |
ランキングベース指標 | 実際に選択されたサジェストがサジェスト一覧の何番目に表示されていたかをベースに判断する指標で、順位の逆数を表すReciprocal Rank(RR)などがあります。 複数のクエリについてRRベースの結果を取得するときは平均値を取ったMRRやprefix毎に重みを変えたweighted MRRなどが存在します。 |
Diversity | サジェストの多様性を示す指標です。 例えば、Diversifying Query Suggestion Results のようにサジェスト選択後クリックされたページの異なり具合を測る指標などが存在します。 |
このように様々な指標が提案されているため、各サービスの課題とシステム制約の観点から使用可能な評価指標を選択する必要があります。
次章では、ZOZOTOWNのサジェストの課題解決のために、上記指標をどのように選択して改善したかについて説明します。
ZOZOTOWNでのサジェストの改善
本記事で説明するサジェストは、現在PCとスマートフォンのWeb版のZOZOTOWNでのみ有効となっています。
サジェスト改善のサイクル
以下の4ステップのサイクルを何度か回して、サジェストを改善しました。
- サジェスト改善方針の仮説をたてる
- 課題点や改善方針から目標とするKPIを策定する
- KPIが向上する改善を行い、定量評価と定性評価する
- ABテストでのKPIとGMVを計測し、改善の効果を確認する
次節からは各ステップの進め方を説明します。
1. サジェスト改善方針の仮説
サジェストはユーザーの意図しているクエリを補完することを目的としています。従来のZOZOTOWNでのサジェストは、ブランド名、ショップ名、カテゴリ名といった情報のみから作成されていました。そのためユーザーの意図したクエリの補完に対応できていないという課題感がありました。
この課題感を明確にするため、まずは、具体的にクエリの結果を眺めることで課題点を発見していきました。
クエリ例 | 2020/06/11時点のサジェストの結果 | 課題点 | 改善方針 | 計測指標 |
---|---|---|---|---|
ブレザー | サジェストクエリが表示されない | サジェストがカバーするクエリを増やす | Impression Rate | |
サンダル | 入力したクエリが、サジェストのどの部分に対応しているかが分かりにくい | Query Auto Completionの対応を行う | CTR | |
パーカー | 「在庫なし含む パーカー」などのクエリが検索結果が0件になる | 検索結果が0件となるサジェストクエリを削除する | NSR |
2. KPIの策定
以上の調査結果とシステム制約などから、以下の2つをKPIとしてサジェスト改善の取り組みを進めました。
- サジェストのクリック率(CTR)を増やす
- 0件ヒットするサジェストの数(NSR)を減らす
サジェスト経由のCVR(商品購入率やお気に入り追加率など)も検討しましたが、サジェスト以外の影響を多分に受けるためKPIとしての採用は見送りました。
3. サジェストの改善施策
ZOZOTOWNでは、サジェストの検索システムとしてElasticsearchを採用しています。Elasticsearchの取り組みについては、こちらの記事 をご覧ください。 techblog.zozo.com
また、Elasticsearchのデフォルトのサジェスト機能は日本語との相性が悪いため、通常の検索クエリを使用して実装しました。こちらについては、Elasticsearch公式のブログ記事 で詳しく言及されています。 www.elastic.co
Elasticsearchでのクエリとドキュメントのマッチングに用いるデフォルトスコアは、検索クエリとドキュメントのBM25などをベースに計算されています。詳しくはElasticsearchの公式の解説 をご覧ください。 www.elastic.co
今回デフォルトのスコアを使用せずに、過去のサジェストのクリック率やクリック後の商品の購入率などをベースにした重みを使用するように修正しました。
また、上述した「サンダル」の例のように、従来のサジェストでは入力クエリとサジェストクエリの対応が分かりにくいという課題がありました。その課題の改善策としてQuery Auto Completionを採用して、prefix matchするように変更しました。
さらに、過去に何度か検索結果が0件となる場合のサジェストクエリは結果から除去することでNSRの改善を目指しました。
まずはオフラインでの定量評価を以下の手順で行いました。
- ある期間の過去ログを使用して、サジェストを作成する
- サジェスト作成で使用したログに後続する期間のログを使用したテストデータを作成する
- テストデータに含まれる検索キーワードの内、サジェストクエリと一致した割合を求める
- オフラインでのCTRとする
- 上記と同様のログを使用して、サジェストの遷移先のURLの内商品数が0件となる割合を求める
- オフラインでのNSRとする
オフラインでの定量評価で改善が見込めることを確認した後に、オフラインでの定性評価を進めました。
専用のツールを作成し、上記の改善を施したサジェストと既存のサジェストの定性的な比較実験を行いました。
被験者は社内で募集した47人、485件のクエリに対して回答が得られ、改善を施したサジェストの方が約76%のクエリで良いという結果が得られました。
オフラインでの定量評価と定性評価の結果を踏まえて改修と評価を繰り返しました。
4. ABテストの実施
サジェストの改善の結果、CTRは約20%向上、NSRは約50%低下しました。KPIの他にも、ABテスト実施による売上の低下などGMVにも影響がないかをウォッチしつつ進めました。
予めテストを中断するための基準や、リリース実施可否を判断するための基準を設けておくことが大切です。
まとめと今後の改善案
本記事では一般的なサジェスト改善に用いられる指標の説明とZOZOTOWNでのサジェスト改善の取り組みについて説明しました。
サジェストの改善を進める上で、さらなる改善施策も見えてきました。例えば現状のサジェストでは多様性の計測は行っているものの、多様性を最適化する仕組みを取り込むことはできていません。今後は多様性を考慮したサジェストの改善も検討しています。
おわりに
ZOZO研究所ではMLエンジニア、バックエンドエンジニアのメンバーを募集しております。今回紹介した検索技術に興味ある方はもちろん、幅広い分野で一緒に研究/開発を進めていけるメンバーも募集しています。
ご興味のある方は、以下のリンクからぜひご応募ください!