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.

第16回Lucene/Solr勉強会 – ランキングチューニングと定量評価 #SolrJP

7,188 views

Published on

検索結果の質を定量評価する手法の紹介と、それを活用したランキングチューニングの進め方。

Published in: Technology
  • Be the first to comment

第16回Lucene/Solr勉強会 – ランキングチューニングと定量評価 #SolrJP

  1. 1. Copyright  (C)  2015  Yahoo  Japan  Corpora5on.  All  Rights  Reserved. ランキングチューニングと定量評価 ヤフー株式会社  近藤司 2015/5/13  第16回  Lucence/Solr勉強会  #SolrJP
  2. 2. Copyright  (C)  2015  Yahoo  Japan  Corpora5on.  All  Rights  Reserved. P2自己紹介 •  近藤 司 •  ヤフー株式会社 •  新卒 3年目 •  Solr歴 半年 •  業務内容 •  ヤフーの各種サービスへSolr導入やランキング チューニングのお手伝い •  社内向けドキュメントの検索サービスの開発・運用
  3. 3. Copyright  (C)  2015  Yahoo  Japan  Corpora5on.  All  Rights  Reserved. P3本日の話の概要 •  検索結果の質を定量的に評価する手法 •  ↑と組み合わせてランキングチューニングを する方法についてお話します •  時間があれば、Solrでドキュメントのスコアの 内訳を見る方法を説明します
  4. 4. Copyright  (C)  2015  Yahoo  Japan  Corpora5on.  All  Rights  Reserved. P4話の流れ •  ランキングチューニングについて •  難しいところ •  解決策 •  定量評価の手法 •  NDCG •  実際のチューニング作業の流れ •  (時間があれば)ドキュメントのスコアの見方
  5. 5. Copyright  (C)  2015  Yahoo  Japan  Corpora5on.  All  Rights  Reserved. P5話の流れ •  ランキングチューニングについて •  難しいところ •  解決策 •  定量評価の手法 •  NDCG •  実際のチューニング作業の流れ •  (時間があれば)ドキュメントのスコアの見方
  6. 6. Copyright  (C)  2015  Yahoo  Japan  Corpora5on.  All  Rights  Reserved. P6ランキングチューニングとは •  検索結果の上位に質の高いドキュメントを 持ってくる作業 •  ex) •  q = “本田圭佑 試合” •  「本田試合速報」 •  「本田圭佑2ゴール!!」
  7. 7. Copyright  (C)  2015  Yahoo  Japan  Corpora5on.  All  Rights  Reserved. P7Solrでのチューニング作業 •  Solrだと大体こんな感じ •  qf=title_ma^10 title_ng^2 body_ma^5 body_ng^1 •  各フィールドへの重みを変えたり •  bf=production(field(ctr),10) •  Boost functionでインデキシングしておいた定数を
 調整したり
  8. 8. Copyright  (C)  2015  Yahoo  Japan  Corpora5on.  All  Rights  Reserved. P8チューニングの難しいところ •  フィールドへの重みをどう決めるのか •  とりあえず、Titleは強めの重み? •  MA(形態素解析)も大きめに? •  ランキングが良くなっているのか分かりにくい •  あるクエリでは良くなっているけど、別のクエリでは? •  そもそも、評価が主観 ランキングの良し悪しを判断する基準が無い
  9. 9. Copyright  (C)  2015  Yahoo  Japan  Corpora5on.  All  Rights  Reserved. P9チューニングと定量評価 •  チューニングと定量評価をセットで考える •  重みを変えたら評価をする •  メリット •  客観的にランキングを評価できる •  最もランキングが良くなる重みを探しだせる •  チューニング作業の一部を自動化できる •  デメリット •  導入コストが高い •  定量評価の計算に時間がかかる場合がある
  10. 10. Copyright  (C)  2015  Yahoo  Japan  Corpora5on.  All  Rights  Reserved. P10話の流れ •  ランキングチューニングについて •  難しいところ •  解決策 •  定量評価の手法 •  NDCG •  実際のチューニング作業の流れ •  (時間があれば)ドキュメントのスコアの見方
  11. 11. Copyright  (C)  2015  Yahoo  Japan  Corpora5on.  All  Rights  Reserved. P11NDCG •  NDCG •  Normalized Discounted Cumulative Gain •  ランキングの並びの良さを評価する指標 •  クエリとの適合度が高いドキュメントが上位に 来ていればいるほど評価大
  12. 12. Copyright  (C)  2015  Yahoo  Japan  Corpora5on.  All  Rights  Reserved. P12NDCG •  DCG … 順位と適合度をもとにしたスコア •  IDCG … 理論上ランキングの並びが最も良く なった場合のDCG •  i … 検索順位 •  rel … i位に順位付けされたドキュメントのクエ リとの適合度 NDCG = DCG IDCG DCG = 2reli −1 log(1+i)i k ∑
  13. 13. Copyright  (C)  2015  Yahoo  Japan  Corpora5on.  All  Rights  Reserved. P13NDCGの計算例 •  あるクエリで検索した場合の
 検索結果上位3位の評価が下記の場合 4:  very  good   3:  good   2:  bad   1:  very  bad 順位 ドキュメント 評価 1 doc1 1 2 doc2 4 3 doc3 3   ドキュメントがクエリに   マッチしているかどうかは人手で判断
  14. 14. Copyright  (C)  2015  Yahoo  Japan  Corpora5on.  All  Rights  Reserved. P14DCG DCG = 21 −1 log(1+1) + 24 −1 log(1+ 2) + 23 −1 log(1+3) DCG = 1 1 + 15 1.58 + 7 2 DCG =13.99 順位 ドキュメント 評価 1 doc1 1 2 doc2 4 3 doc3 3   NDCG = DCG IDCG DCG = 2reli −1 log(1+i)i k ∑
  15. 15. Copyright  (C)  2015  Yahoo  Japan  Corpora5on.  All  Rights  Reserved. P15IDCG IDCG = 24 −1 log(1+1) + 23 −1 log(1+ 2) + 21 −1 log(1+3) IDCG = 15 1 + 7 1.58 + 1 2 IDCG =19.93 順位 ドキュメント 評価 1 doc1 1 2 doc2 4 3 doc3 3   NDCG = DCG IDCG DCG = 2reli −1 log(1+i)i k ∑ doc2,doc3,doc1の並びになった   仮定で計算
  16. 16. Copyright  (C)  2015  Yahoo  Japan  Corpora5on.  All  Rights  Reserved. P16NDCG DCG =13.99 IDCG =19.93 NDCG = 13.99 19.93 = 0.7 順位 ドキュメント 評価 1 doc1 1 2 doc2 4 3 doc3 3   NDCG = DCG IDCG DCG = 2reli −1 log(1+i)i k ∑
  17. 17. Copyright  (C)  2015  Yahoo  Japan  Corpora5on.  All  Rights  Reserved. P17話の流れ •  ランキングチューニングについて •  難しいところ •  解決策 •  定量評価の手法 •  NDCG •  実際のチューニング作業の流れ •  (時間があれば)ドキュメントのスコアの見方
  18. 18. Copyright  (C)  2015  Yahoo  Japan  Corpora5on.  All  Rights  Reserved. P18前準備 1.  ランキングを評価するクエリを決める •  検索数上位50位のクエリなど 2.  各評価用クエリでドキュメントの適合度を評 価しておく(正解データの準備)
  19. 19. Copyright  (C)  2015  Yahoo  Japan  Corpora5on.  All  Rights  Reserved. P19チューニングの進め方 1.  各フィールドへの重みを決める •  qf=title_ma^10 title_ng^2 body_ma^5 body_ng^1 2.  評価用クエリで検索+NDCGを計算 •  各クエリで算出したNDCGの平均を算出 3.  重みを変えて、手順1-2を繰り返す
  20. 20. Copyright  (C)  2015  Yahoo  Japan  Corpora5on.  All  Rights  Reserved. P20 Title_ma Title_ng Body_ma Body_ng NDCG 10 2 5 1 0.55 15 2 5 1 0.58 20 2 5 1 0.62 10 4 5 1 0.53 10 6 5 1 0.51 10 8 5 1 0.49 フィールドへの重みの組み合わせとNDCGの値 … … この重みの付け方が1番良さそう!
  21. 21. Copyright  (C)  2015  Yahoo  Japan  Corpora5on.  All  Rights  Reserved. P21補足 •  定性評価について •  必要なくなる訳ではない •  検索結果に不適切なドキュメントが紛れてい ないか調査が必要 •  NDCGが低いクエリの調査 •  TopKに入って欲しくないドキュメントの調査
  22. 22. Copyright  (C)  2015  Yahoo  Japan  Corpora5on.  All  Rights  Reserved. P22 •  正解データを準備するコストが高い •  評価用クエリ100個 * 1クエリ当たりで評価するドキュメン ト5件 = 500件分の評価が必要 •  NDCGの計算に時間がかかる場合がある •  フィールド数:4、調査する重みの範囲:1 – 10の場合、
 10^4=10000通りの試行回数が必要 定量評価を組み合わせることのデメリット
  23. 23. Copyright  (C)  2015  Yahoo  Japan  Corpora5on.  All  Rights  Reserved. P23話の流れ •  ランキングチューニングについて •  難しいところ •  解決策 •  定量評価の手法 •  NDCG •  実際のチューニング作業の流れ •  (時間があれば)ドキュメントのスコアの見方
  24. 24. Copyright  (C)  2015  Yahoo  Japan  Corpora5on.  All  Rights  Reserved. P24Solrのスコアの確認方法 •  Solrのスコアの内訳の確認方法 •  時間があればお話します
  25. 25. Copyright  (C)  2015  Yahoo  Japan  Corpora5on.  All  Rights  Reserved. P25Solrのスコアの確認方法 •  検索時にdebugQueryを有効にする •  q=Solr AND 検索エンジン &defType=edismax&qf=tilte_ma^10 description_ma^5.0&debugQuery=true
  26. 26. Copyright  (C)  2015  Yahoo  Japan  Corpora5on.  All  Rights  Reserved. P26Solrのスコアリング •  debugQueryを叩くと下記のような情報が見れます “1”: “ 1.7210351 = (MATCH) max of: --省略-- 3.4420702 = (MATCH) weight(description_ma:solr^5.0 in 120322) [DefaultSimilarity], result of: 3.4420702 = score(doc=120322,freq=4.0 = termFreq=4.0 ), product of: 0.86576945 = queryWeight, product of: 5.0 = boost 10.601961 = idf(docFreq=20, maxDocs=310669) 0.016332252 = queryNorm 3.9757354 = fieldWeight in 120322, product of: 2.0 = tf(freq=4.0), with freq of: 4.0 = termFreq=4.0 10.601961 = idf(docFreq=20, maxDocs=310669) 0.1875 = fieldNorm(doc=120322) 0.5 = coord(1/2)
  27. 27. Copyright  (C)  2015  Yahoo  Japan  Corpora5on.  All  Rights  Reserved. P27Solrのスコアリング “1”: “ 1.7210351 = (MATCH) max of: --省略-- 3.4420702 = (MATCH) weight(description_ma:solr^5.0 in 120322) [DefaultSim result of: 3.4420702 = score(doc=120322,freq=4.0 = termFreq=4.0 ), product of: 0.86576945 = queryWeight, product of: 5.0 = boost 10.601961 = idf(docFreq=20, maxDocs=310669) 0.016332252 = queryNorm 3.9757354 = fieldWeight in 120322, product of: 2.0 = tf(freq=4.0), with freq of: 4.0 = termFreq=4.0 10.601961 = idf(docFreq=20, maxDocs=310669) 0.1875 = fieldNorm(doc=120322) 0.5 = coord(1/2) Unique key 当該ドキュメントのスコア クエリがヒットしたフィールド 当該フィールド のスコア
  28. 28. Copyright  (C)  2015  Yahoo  Japan  Corpora5on.  All  Rights  Reserved. P28Solrのスコアリング 1.7210351 = (MACTH) max of: --省略-- 3.4420702 = (MATCH) weight(description_ma:solr^5.0 in 120322) [DefaultSimilarity], result of: 3.4420702 = score(doc=120322,freq=4.0 = termFreq=4.0 ), product of: 0.86576945 = queryWeight, product of: 5.0 = boost 10.601961 = idf(docFreq=20, maxDocs=310669) 0.016332252 = queryNorm 3.9757354 = fieldWeight in 120322, product of: 2.0 = tf(freq=4.0), with freq of: 4.0 = termFreq=4.0 10.601961 = idf(docFreq=20, maxDocs=310669) 0.1875 = fieldNorm(doc=120322) 0.5 = coord(1/2) 積に
 なっている
  29. 29. Copyright  (C)  2015  Yahoo  Japan  Corpora5on.  All  Rights  Reserved. P29Solrのスコアリング 0.86576945 = queryWeight, product of: 5.0 = boost 10.601961 = idf(docFreq=20, maxDocs=310669) 0.016332252 = queryNorm 3.9757354 = fieldWeight in 120322, product of: 2.0 = tf(freq=4.0), with freq of: 4.0 = termFreq=4.0 10.601961 = idf(docFreq=20, maxDocs=310669) 0.1875 = fieldNorm(doc=120322)
  30. 30. Copyright  (C)  2015  Yahoo  Japan  Corpora5on.  All  Rights  Reserved. P30Solrのスコアリング •  計算式は上記のようになります – クエリがヒットしたフィールドに対して、スコアを計 算していき、最もスコアが高いものをドキュメント のスコアとします score(d,q) = queryWeight×fieldWeight×coord queryWeight = boost×idf ×queryNorm fieldWeight = tf ×idf ×fieldNorm
  31. 31. Copyright  (C)  2015  Yahoo  Japan  Corpora5on.  All  Rights  Reserved. P31Solrのスコアリング •  boost : qfでフィールドに指定した重み •  idf : クエリのidf値 •  queryNorm : 異なるクエリ同士でスコアを比較 できるようにするための正規化係数 queryWeight = boost ×idf ×queryNorm
  32. 32. Copyright  (C)  2015  Yahoo  Japan  Corpora5on.  All  Rights  Reserved. P32Solrのスコアリング •  tf : クエリのtf値 •  idf : クエリのidf値 •  fieldNorm : 単語数の多いフィールドと少ない フィールドを比較するための正規化係数 fieldWeight = tf ×idf ×fieldNorm
  33. 33. Copyright  (C)  2015  Yahoo  Japan  Corpora5on.  All  Rights  Reserved. P33Solrのスコアリング •  クエリが複数指定されて場合に、そのクエリが フィールドにいくつか出現したか coord
  34. 34. Copyright  (C)  2015  Yahoo  Japan  Corpora5on.  All  Rights  Reserved. P34まとめ •  ランキングチューニングについての説明 •  チューニング作業の説明と難しいところ •  定量評価を組み合わせることのメリット •  評価指標に関する説明 •  NDCG •  実際のチューニング作業の流れ •  定量評価を組み合わせた場合のデメリット
  35. 35. Copyright  (C)  2015  Yahoo  Japan  Corpora5on.  All  Rights  Reserved. P35 ご静聴ありがとうございました

×