検索システムの改善 その1 現状把握編
こんにちはrilmayerです。
この記事はアドベントカレンダー「Search&Discovery 全部俺」21日目の記事となります。(遅刻
今日はSearch&Discoveryシステムの改善を実際の業務でどのように進めていくかということについてお話します。
今回は自分が検索サービス改善に用いている「改善の型」のような物を紹介します。ただしここでは一般的な検索サービスを想定して、最低限のログデータが取れているものとします。さらに、オフラインの評価による改善はスコープ外とします。
ちなみに推薦システムに関しても同様な部分が多いですが、少し異なる部分もあるので今回はあくまでも検索システムについての話です。
汎用的に使える検索改善の6ステップ
自分はすでに動いている何らかの検索サービスを改善する際は、以下のようなステップで行います。
以下のステップについては検索サービスに限らず応用が可能ですが、2〜4に関して検索システム特有なものが出てくるかもしれません。
現状理解
1. アプリケーションの検索導線を洗い出す
2. 可能な限りのオンライン評価指標作成/計算
3. 求めた指標をあらゆるディメンションで切り刻む
4. 現行の検索システムで変更できる要素を確認
課題特定
5. 課題の特定+改善時の効果試算
施策立案&実行
6. 施策の立案→実行
基本的には「現状理解」→「課題特定」→「施策立案」と進みます。
以下は上記の6ステップに沿って説明していきます。
1. アプリケーションの検索導線を洗い出す
これを正確に行っておくと、改善対象としているアプリケーションがどのように使われているのかの理解が進みます。
検索システムを起点として、その前後にどのようなユーザー行動があるかを整理します。
以下の図は「note」の検索導線整理の例です。(勝手に題材にしてすみません
このようにページとアクションを分けて考えると図示しやすいかと思います。この図はこの後の指標を作成するのに非常に重要です。
それぞれの矢印に関しては戻る導線や複数回のアクションがあるかなどの情報も含められるとよりリッチな整理図になります。
余力があれば、ファネルモデルなどを作成するとより理解が進みます。
次の図は、上記の図をベースにそれぞれのページからどのくらいの割合のユーザーが次の状態に遷移するかというのを表したものです。(数字はテキトウ)
2. 可能な限りのオンライン評価指標作成/計算
次にオンライン指標を作成していきます。
以前、こちらの記事で検索に使えるいくつかの評価指標を紹介しました。
例えば以下のような検索評価指標がありました。
コンバージョン率 ... サービスによってコンバージョンは購入や、問い合わせや、視聴など様々なものが存在しますが、検索・推薦システムを通してどれだけコンバージョンが生まれたかは重要な指標です
CTR(Click Through Rate) ... システムを通してアイテムをクリック(タップ)がどのくらい生まれたかを計測する指標です
アクション指標 ... サービスによっては「いいね」や「コメント」、「ブックマーク」等のアクションを計測することができます
詳細ページ滞在時間 ... 検索結果や推薦されたアイテムの飛び先ページでどの程度ユーザーが時間を過ごしたかを表し、一定の閾値を設けて滞在時間が短い場合のみを集計して不満足なクリックとして指標として使うこともできます
今回は上記のアクション指標を、先ほど作成した遷移図を元に作成してみます。
・検索結果一覧上でのスキ数 / 率
・検索結果一覧上でのマガジン追加数/率
・検索結果一覧経由でのノートページでのスキ数/率
・検索結果一覧経由でのノートページでのマガジン追加数/率
・検索結果一覧経由でのノートページでのサポート数/率
・検索結果一覧経由でのノートページでのサポート金額/率
・検索結果一覧経由でのノートページでのフォロー数/率
などなど
(率はアクション or UU数 を母数とする)
その他、検索結果一覧のノートに対するタップやスキをベースとして、以下のようなランキング指標を算出することもできます。
MAP@10(検索結果TOP10の平均クリックアイテム数) ... 10で正規化すると0〜1の値になり、1に近づくほど良い(と仮定できる)
MFTP(Mean First Tap Position:検索結果の最初にクリックされたアイテムの順位の平均) ... 1に近いほど良い(と仮定できる)
MRR(Mean Reciprocal Rank:検索結果の最初にクリックされたアイテムの逆順位の平均 ... 詳細はこちら。1に近いほど良い。
NDCG@10 ... 詳細はこちら。
また、ユーザーの検索行動の指標として「再検索率」や「ユニーク検索条件数」、「検索放棄数」なども集計できるとより解像度高くユーザーの検索行動を把握することができます。
このようにそれぞれの指標をリストアップします。
またここでできれば社内の評価に関わる人たちとこの辺りの評価指標について共通の理解を作っておくとより良いでしょう。
最後にこれらの指標について期間を決めて算出し、これから改善したいサービスの大まかな数字感覚を掴んでおくと良いかもしれません。
集計して以下のような形でまとめておきましょう。CTRは様々な定義があるので、改善したいサービスで用いるCTRをしっかり定義しておくのもポイントです。
以下、テキトウな例(数字はテキトウ)
集計期間:2019/9/1 ~12/31
・CTR(検索結果経由ノートページビュー数/検索結果表示回数):10%
・詳細ページ滞在時間(検索結果経由ノートページの閲覧時間総数/検索結果経由ノートページビュー数):18.3秒
・検索結果一覧経由でのノートページでのスキ追加率(UU):20%
などなど
もし可能だったら、ここで分布も見ておくとさらに良いでしょう。
例えば詳細ページ滞在時間は以下のような分布になるかもしれません。
3. 求めた指標をあらゆるディメンションで切り刻む
分析の本質は比較にあると私は考えます。
そのため2つの群を用意する必要があり 、ディメンションはそのための道具です。
ディメンションとは「個々のデータをまとめるための属性」で、「〇〇ごとの検索実行数」という場合の〇〇に当たります。
ということで、ここから上記で求めた指標を色々なディメンションで切っていきます。
検索システムの改善のための分析では基本的に検索内容を元にディメンションを作成します。
検索条件
・検索キーワード
・検索ボリューム:ヘッド(検索回数上位5%など)、トルソー(検索回数上位6〜10%など)、テール(それ以外)・・・
・ヒット件数(0件、それ以外など)
・検索カテゴリ
などなど
それ以外
・時間(日付、シーズン、時間など)
・ユーザーセグメント(デモグラフィック、サイコグラフィックなど)
などなど
ということで以下のようにディメンションで切って特性を把握しましょう。
4. 現行の検索システムで変更できる要素を確認
会社や検索システムによっては検索システムで簡単に変更できる部分やなかなか変更できない部分などがあります。
そこで既存の検索システムで変更できそうな部分を把握していきます。
大きい会社ほど変更できる部分は少なくなり、そして変更するためのコストが大きくなります。
以前の記事で紹介しましたが、検索システムはだいたい以下のような感じになります。
もし仮に上記のようなシステム図が描ける場合は、以下のように変更できそうな箇所を洗い出します。
・検索エンジンへのクエリの送り方
・受け取った検索結果の並び替え
・インデクシング方法の変更(フィールド追加やトークナイザー変更など)
・検索エンジンのソフトウェア変更
・検索補助や補正情報など(シノニムやストップワード、サジェストなど)
などなど
例えば、検索エンジンとしてSolrやElasticsearchを使っている場合はクエリの送り方(DSLやクエリファンクションなど)を工夫するとヒットやソートを変更することができます。
また取得したアイテムを並び替えることができれば、今までと異なる検索結果を作ることができます。
このように、変更可能箇所とその変更コストを見積もっておくことは見つけた課題に対する施策を考える歳に非常に有効です。
続きは次回!
ちょっと、長くなってしまったので「課題特定」と「施策の立案・実行」は次回やります!