Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Copyright(C)2014 Recruit Technologies Co.,Ltd All rights reserved
最適な検索スコア導出のための
アイデアと、その実装
大杉直也
2016/1/27
Copyright(C)2014 Recruit Technologies Co.,Ltd All rights reserved
1
最適な検索スコアとは?
 サービス利用者が各アイテムについて、「良い」と思う程度
アイテム1
アイテム2
...
Copyright(C)2014 Recruit Technologies Co.,Ltd All rights reserved
2
最適な検索スコアとは?
 サービス利用者が各アイテムについて、「良い」と思う程度
アイテム1
アイテム2
...
Copyright(C)2014 Recruit Technologies Co.,Ltd All rights reserved
3
最適な検索スコアとは?
 サービス利用者が各アイテムについて、「良い」と思う程度
アイテム1
アイテム2
...
Copyright(C)2014 Recruit Technologies Co.,Ltd All rights reserved
4
問題のクラスの整理
検索スコア局所最適化
(ユーザー属性無視)
レコメンド
アイテムのみ
の予測
検索スコア...
Copyright(C)2014 Recruit Technologies Co.,Ltd All rights reserved
5
検索スコアの実装の仕方
 バッチで計算すべき検索スコア
 定数項となるような値
各商品の絶対的な売れや...
Copyright(C)2014 Recruit Technologies Co.,Ltd All rights reserved
6
検索スコアの実装の仕方
 バッチで計算すべき検索スコア
 定数項となるような値
各商品の絶対的な売れや...
Copyright(C)2014 Recruit Technologies Co.,Ltd All rights reserved
7
クエリに応じて計算式を変える
 通常の検索の場合検索を使う
何かのサービス
アイテム
インデックス
検索に...
Copyright(C)2014 Recruit Technologies Co.,Ltd All rights reserved
8
クエリに応じて計算式を変える
検索を使う
何かのサービス
アイテム
インデックス
検索に必要なパラメータ+ユ...
Copyright(C)2014 Recruit Technologies Co.,Ltd All rights reserved
9
function queryを使って計算
 ソート順に使える値を、アイテムの属性から計算
 Elasti...
Copyright(C)2014 Recruit Technologies Co.,Ltd All rights reserved
10
書き換えルールの現在の実験
 引数: 検索行動やユーザー属性、出力: function queryのモデ...
Copyright(C)2014 Recruit Technologies Co.,Ltd All rights reserved
11
どうテンプレートを作成するか
 既存のアイテムインデックス内で使えそうな情報を探し出す
 例:ECサイ...
Copyright(C)2014 Recruit Technologies Co.,Ltd All rights reserved
12
テンプレートの例
 ソート順に使える値を、アイテムの属性から計算
 Elasticsearch の例
...
Copyright(C)2014 Recruit Technologies Co.,Ltd All rights reserved
13
どう最適化するか
 検索結果画面に表示された商品の内でのクリック予測問題
 ターゲット変数:クリックさ...
Copyright(C)2014 Recruit Technologies Co.,Ltd All rights reserved
14
最適化計算
 Python のChainerを使ってDeep Learningのネットワークを
工夫し、...
Upcoming SlideShare
Loading in …5
×

最適な検索スコア導出のためのアイデアと、その実装

2,511 views

Published on

2016/01/27 リクルートテクノロジーズ社内勉強会での、大杉の資料になります

Published in: Technology
  • Be the first to comment

最適な検索スコア導出のためのアイデアと、その実装

  1. 1. Copyright(C)2014 Recruit Technologies Co.,Ltd All rights reserved 最適な検索スコア導出のための アイデアと、その実装 大杉直也 2016/1/27
  2. 2. Copyright(C)2014 Recruit Technologies Co.,Ltd All rights reserved 1 最適な検索スコアとは?  サービス利用者が各アイテムについて、「良い」と思う程度 アイテム1 アイテム2 アイテム3 各アイテムの売り上げ予測 好まれるアイテムとは?
  3. 3. Copyright(C)2014 Recruit Technologies Co.,Ltd All rights reserved 2 最適な検索スコアとは?  サービス利用者が各アイテムについて、「良い」と思う程度 アイテム1 アイテム2 アイテム3A さん B さん レコメンドの問題 そのユーザーに好まれるアイテムとは?
  4. 4. Copyright(C)2014 Recruit Technologies Co.,Ltd All rights reserved 3 最適な検索スコアとは?  サービス利用者が各アイテムについて、「良い」と思う程度 アイテム1 アイテム2 アイテム3A さん B さん 検索結果の最適化 XXXを要求した そのユーザーに好まれるアイテムとは? XXXがほしい
  5. 5. Copyright(C)2014 Recruit Technologies Co.,Ltd All rights reserved 4 問題のクラスの整理 検索スコア局所最適化 (ユーザー属性無視) レコメンド アイテムのみ の予測 検索スコア最適化
  6. 6. Copyright(C)2014 Recruit Technologies Co.,Ltd All rights reserved 5 検索スコアの実装の仕方  バッチで計算すべき検索スコア  定数項となるような値 各商品の絶対的な売れやすさ(アイテムのみの予測)  複雑なモデルで導出する場合 ガウスカーネルや、大量の決定木を使用する場合など  性能の劣化が許されない場合 サーバーが貧弱 アイテム数が莫大  リアルタイムで計算すべき検索スコア  多種多様なユーザー属性に応じたスコア 組み合わせ爆発をおこし、バッチ処理では早々に限界点が  検索行動(絞り込み・フリーワードなど)に応じたスコア すべての場合について、計算はできない  更新頻度が高い情報に基づくスコア 在庫状況とか
  7. 7. Copyright(C)2014 Recruit Technologies Co.,Ltd All rights reserved 6 検索スコアの実装の仕方  バッチで計算すべき検索スコア  定数項となるような値 各商品の絶対的な売れやすさ(アイテムのみの予測)  複雑なモデルで導出する場合 ガウスカーネルや、大量の決定木を使用する場合など  性能の劣化が許されない場合 サーバーが貧弱 アイテム数が莫大  リアルタイムで計算すべき検索スコア  多種多様なユーザー属性に応じたスコア 組み合わせ爆発をおこし、バッチ処理では早々に限界点が  検索行動(絞り込み・フリーワードなど)に応じたスコア すべての場合について、計算はできない  更新頻度が高い情報に基づくスコア 在庫状況とか
  8. 8. Copyright(C)2014 Recruit Technologies Co.,Ltd All rights reserved 7 クエリに応じて計算式を変える  通常の検索の場合検索を使う 何かのサービス アイテム インデックス 検索に必要なパラメータ
  9. 9. Copyright(C)2014 Recruit Technologies Co.,Ltd All rights reserved 8 クエリに応じて計算式を変える 検索を使う 何かのサービス アイテム インデックス 検索に必要なパラメータ+ユーザー属性 Query Rewriter 書き換えルール集 ロジック部分を外部化 無停止・高速リリース実現  QASSが提供するインフラ
  10. 10. Copyright(C)2014 Recruit Technologies Co.,Ltd All rights reserved 9 function queryを使って計算  ソート順に使える値を、アイテムの属性から計算  Elasticsearch の例 "function_score": { "query": {}, "boost": “1", “functions”: [{"field_value_factor": { "field": “numStock", "factor": 3, "modifier": “square", "missing": 0 } }], "boost_mode”:"sum" }  Solrの場合 の例 select?q=*:*&sort=sum(score, pow(numStock, 2)^3) desc
  11. 11. Copyright(C)2014 Recruit Technologies Co.,Ltd All rights reserved 10 書き換えルールの現在の実験  引数: 検索行動やユーザー属性、出力: function queryのモデルを計算  function queryそのものを出力する計算は非現実的  function queryテンプレートを作り、各パラメータ最適化問題に帰着 検索インデックス内の情報の重み付き線形和 この重みを、検索行動・ユーザー属性に応じて最適化 ここまで、一般的に展開できそうな話 テンプレートをどうするか? どう最適化するか?
  12. 12. Copyright(C)2014 Recruit Technologies Co.,Ltd All rights reserved 11 どうテンプレートを作成するか  既存のアイテムインデックス内で使えそうな情報を探し出す  例:ECサイトの場合  送料無料か否か  翌日配送可能か  レビューの件数は何件か  価格帯はどのくらいか などなど、使えそうなところを洗い出し  上記の要因+既存のCV予測値+フリーワード紐付けジャンルの線形重み 付けでテンプレートを作成  使えそうな要因はすべてテンプレートに組み込む  一部の要素は値を対数化するなどはしているので真に線形ではない  このテンプレートの値を変更することでCVRの増減を確認! →最適化すべき対象
  13. 13. Copyright(C)2014 Recruit Technologies Co.,Ltd All rights reserved 12 テンプレートの例  ソート順に使える値を、アイテムの属性から計算  Elasticsearch の例 "function_score": { "query": {}, "boost": “1", “functions”: [{"field_value_factor": { "field": “numStock", "factor":1, "modifier": "square", "missing": 0 }, weight : {{weight_numStock}} }], "boost_mode”:"sum" }  Solrの場合 の例 select?q=*:*&sort=sum(score, pow(numStock, 2)^{{weight_numStock}}) desc
  14. 14. Copyright(C)2014 Recruit Technologies Co.,Ltd All rights reserved 13 どう最適化するか  検索結果画面に表示された商品の内でのクリック予測問題  ターゲット変数:クリックされたか否か(2値分類)  特徴量: その商品の検索スコアテンプレートに利用されている要素  本番コピーの商品インデックスに問い合わせ その結果画面を作った検索行動  ジャンル検索、フリーワードなど その検索画面を見たユーザー属性  性別・年齢・ログイン有無など その他、情報  検索された時刻、デバイス情報など  予測が目標ではなく、テンプレートのパラメータの最適値推定が目的な ことに注意
  15. 15. Copyright(C)2014 Recruit Technologies Co.,Ltd All rights reserved 14 最適化計算  Python のChainerを使ってDeep Learningのネットワークを 工夫し、実装  ここから先はマニアックなので、後日

×