Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Learn-to-Rank или как научить бездушную машину хорошо искать

Learn-to-Rank или как научить бездушную машину хорошо искать

Роман Гребенников (http://deeprefactoring.ru/speakers/roman-grebennikov)

Видео: https://youtu.be/nvxVMCtRpNc

Ввел поисковый запрос - получил идеальный список результатов, чего уж тут проще? Но ведь сам текст поискового запроса это далеко не единственное, что может быть известно в момент нажатия на кнопку “поиск”: разные люди в разном контексте могут быть заинтересованы совсем в разных вещах, даже если ввели одно и то же.

Можно городить пирамиду из if-else-if-else, чтобы получить идеальное ранжирование результатов в вакууме, а можно послушать этот доклад, в котором мы обсудим алгоритмы Learn-to-Rank, позволяющие обучить бездушную машину неявным зависимостям в поведении пользователей и ранжировать по-разному в зависимости от текущего контекста.

Благодаря опыту простреливания далеко не одной ноги в области создания поисковой системы для 1500 онлайн-магазинов, мы ответим на следующие вопросы:

- влияет ли релевантность поиска на продажи,
- почему скорость реакции алгоритма на внешние события так важна (и как её уменьшить, если ты не гугл),
- что делать, если люди тыкают на первые результаты потому что они первые, а не потому что они хорошие,
- как использовать модель, обученную на магазине по продаже дилдо, для ранжирования товаров в магазине детских игрушек?

========================
"Глубокий Рефакторинг" - открытый клуб разработчиков и профессионалов IT-индустрии Воронежа, организующий доклады на профильные темы - http://deeprefactoring.ru/

Открытый чат: https://t.me/deeprefactoring
Новостной канал: https://t.me/deeprefactoring_news
Видео всех докладов - https://www.youtube.com/c/deeprefactoring
Слайды выступлений: https://speakerdeck.com/deeprefactoring

Группа FB - https://www.facebook.com/groups/deeprefactoring
Группа ВК - https://vk.com/deeprefactoring
===========================

80eadbf0a221aaa4b764854df32fb781?s=128

Deep Refactoring

July 31, 2019
Tweet

Transcript

  1. LEARN-TO-RANK LEARN-TO-RANK ИЛИ КАК НАУЧИТЬ БЕЗДУШНУЮ МАШИНУ ХОРОШО ИСКАТЬ ИЛИ

    КАК НАУЧИТЬ БЕЗДУШНУЮ МАШИНУ ХОРОШО ИСКАТЬ Grebennikov Roman / / / Deep Refactoring / Voronezh / 2019 ndify.io @public_void_grv grv@dfdx.me 1
  2. ПРО FINDIFY ПРО FINDIFY 2

  3. ПРО FINDIFY ПРО FINDIFY white-label eCommerce SaaS search 2

  4. ПРО FINDIFY ПРО FINDIFY white-label eCommerce SaaS search 1500 магазинов,

    20M товаров 2
  5. ПРО FINDIFY ПРО FINDIFY white-label eCommerce SaaS search 1500 магазинов,

    20M товаров 50M посетителей в месяц 2
  6. FINDIFY В ДАЛЕКОМ 2014 FINDIFY В ДАЛЕКОМ 2014 3

  7. FINDIFY В ДАЛЕКОМ 2014 FINDIFY В ДАЛЕКОМ 2014 Плагин для

    shopify, фокус на UI 3
  8. FINDIFY В ДАЛЕКОМ 2014 FINDIFY В ДАЛЕКОМ 2014 Плагин для

    shopify, фокус на UI Внутри ElasticSearch 3
  9. FINDIFY В ДАЛЕКОМ 2014 FINDIFY В ДАЛЕКОМ 2014 Плагин для

    shopify, фокус на UI Внутри ElasticSearch Ранжирование ES по-умолчанию 3
  10. ВАЖНОСТЬ РАНЖИРОВАНИЯ ВАЖНОСТЬ РАНЖИРОВАНИЯ 4

  11. ВАЖНОСТЬ РАНЖИРОВАНИЯ ВАЖНОСТЬ РАНЖИРОВАНИЯ никто не скроллит вниз 4

  12. ВАЖНОСТЬ РАНЖИРОВАНИЯ ВАЖНОСТЬ РАНЖИРОВАНИЯ 5

  13. ВАЖНОСТЬ РАНЖИРОВАНИЯ ВАЖНОСТЬ РАНЖИРОВАНИЯ второго раза не будет 5

  14. ВАЖНОСТЬ РАНЖИРОВАНИЯ ВАЖНОСТЬ РАНЖИРОВАНИЯ 6

  15. ВАЖНОСТЬ РАНЖИРОВАНИЯ ВАЖНОСТЬ РАНЖИРОВАНИЯ и завтра никто не вернется 6

  16. ТИПИЧНАЯ СЕССИЯ ПОЛЬЗОВАТЕЛЯ ТИПИЧНАЯ СЕССИЯ ПОЛЬЗОВАТЕЛЯ 7

  17. ТИПИЧНАЯ СЕССИЯ ПОЛЬЗОВАТЕЛЯ ТИПИЧНАЯ СЕССИЯ ПОЛЬЗОВАТЕЛЯ 1. Зашел на страницу

    товара (0s) 7
  18. ТИПИЧНАЯ СЕССИЯ ПОЛЬЗОВАТЕЛЯ ТИПИЧНАЯ СЕССИЯ ПОЛЬЗОВАТЕЛЯ 1. Зашел на страницу

    товара (0s) 2. Куда-то тыкнул (+10s) 7
  19. ТИПИЧНАЯ СЕССИЯ ПОЛЬЗОВАТЕЛЯ ТИПИЧНАЯ СЕССИЯ ПОЛЬЗОВАТЕЛЯ 1. Зашел на страницу

    товара (0s) 2. Куда-то тыкнул (+10s) 3. Сделал поиск (+20s) 7
  20. ТИПИЧНАЯ СЕССИЯ ПОЛЬЗОВАТЕЛЯ ТИПИЧНАЯ СЕССИЯ ПОЛЬЗОВАТЕЛЯ 1. Зашел на страницу

    товара (0s) 2. Куда-то тыкнул (+10s) 3. Сделал поиск (+20s) 4. Ушел навсегда (+30s) 7
  21. НАДО ЧТО-ТО МЕНЯТЬ НАДО ЧТО-ТО МЕНЯТЬ 8

  22. МЕШН ЛЕРНИНГ! МЕШН ЛЕРНИНГ! 9

  23. МЕШН ЛЕРНИНГ! МЕШН ЛЕРНИНГ! 9

  24. 10

  25. AI ML AI ML Algorithm Conversion AOV 11

  26. AI ML AI ML Algorithm Conversion AOV Elasticsearch baseline baseline

    11
  27. AI ML AI ML Algorithm Conversion AOV Elasticsearch baseline baseline

    Regression +3.1% +2.5% 11
  28. НЕ ИЗОБРЕТАТЬ ВЕЛОСИПЕД НЕ ИЗОБРЕТАТЬ ВЕЛОСИПЕД 12

  29. НЕ ИЗОБРЕТАТЬ ВЕЛОСИПЕД НЕ ИЗОБРЕТАТЬ ВЕЛОСИПЕД Learn to Rank 12

  30. НЕ ИЗОБРЕТАТЬ ВЕЛОСИПЕД НЕ ИЗОБРЕТАТЬ ВЕЛОСИПЕД Learn to Rank RankBoost,

    AdaRank, LambdaRank, LambdaMART 12
  31. НЕ ИЗОБРЕТАТЬ ВЕЛОСИПЕД НЕ ИЗОБРЕТАТЬ ВЕЛОСИПЕД Learn to Rank RankBoost,

    AdaRank, LambdaRank, LambdaMART XGBoost / LightGBM / CatBoost 12
  32. LEARN TO ЧЁ? LEARN TO ЧЁ? или что не так

    с регрессией 13
  33. NDCG NDCG Normalized Discounted Cumulative Gain 14

  34. RANKBOOST RANKBOOST 15

  35. RANKBOOST RANKBOOST Засунуть NDCG как метрику в регрессию 15

  36. RANKBOOST RANKBOOST Засунуть NDCG как метрику в регрессию Градиентным спуском

    подобрать параметры 15
  37. ADARANK ADARANK 16

  38. ADARANK ADARANK Засунуть NDCG как метрику в регрессию (опять) 16

  39. ADARANK ADARANK Засунуть NDCG как метрику в регрессию (опять) Аналитически

    вычислить оптимальные параметры 16
  40. LAMBDARANK LAMBDARANK 17

  41. LAMBDARANK LAMBDARANK Нейросеть вместо регрессии 17

  42. LAMBDARANK LAMBDARANK Нейросеть вместо регрессии Градиентным спуском подобрать параметры 17

  43. LAMBDAMART LAMBDAMART 18

  44. LAMBDAMART LAMBDAMART Нейросеть тормозит и сложна 18

  45. LAMBDAMART LAMBDAMART Нейросеть тормозит и сложна Multiple Additive Regression Trees

    18
  46. LAMBDAMART LAMBDAMART Нейросеть тормозит и сложна Multiple Additive Regression Trees

    Градиентным спуском подобрать параметры 18
  47. LAMBDAMART LAMBDAMART Нейросеть тормозит и сложна Multiple Additive Regression Trees

    Градиентным спуском подобрать параметры 18
  48. ИНТЕГРАЦИЯ С ELASTICSEARCH ИНТЕГРАЦИЯ С ELASTICSEARCH ltr-плагин, обертка над xgboost

    19
  49. ИНТЕГРАЦИЯ С ELASTICSEARCH ИНТЕГРАЦИЯ С ELASTICSEARCH ltr-плагин, обертка над xgboost

    19
  50. 20

  51. ИНТЕГРАЦИЯ С ELASTICSEARCH ИНТЕГРАЦИЯ С ELASTICSEARCH 21

  52. ОБУЧЕНИЕ ОБУЧЕНИЕ 22

  53. ОБУЧЕНИЕ ОБУЧЕНИЕ Исторические данные о поисках-кликах-покупках 22

  54. ОБУЧЕНИЕ ОБУЧЕНИЕ Исторические данные о поисках-кликах-покупках Отдельная модель для каждого

    магазина 22
  55. ОБУЧЕНИЕ ОБУЧЕНИЕ Исторические данные о поисках-кликах-покупках Отдельная модель для каждого

    магазина Цель - минимизация NDCG 22
  56. ФИЧИ ФИЧИ поисковый запрос: # слов, # фильтров товар: цена,

    # просмотров вариант: цвет, размер сессия пользователя: чувствительность к цене, # поисков профиль пользователя: # сессий запрос+товар: # просмотров в рамках запроса 23
  57. ФИЧИ ФИЧИ поисковый запрос: # слов, # фильтров товар: цена,

    # просмотров вариант: цвет, размер сессия пользователя: чувствительность к цене, # поисков профиль пользователя: # сессий запрос+товар: # просмотров в рамках запроса + на разных интервалах 23
  58. 24

  59. 25

  60. ВЫШЛО ХОРОШО, НО НЕ ОЧЕНЬ ВЫШЛО ХОРОШО, НО НЕ ОЧЕНЬ

    26
  61. ВЫШЛО ХОРОШО, НО НЕ ОЧЕНЬ ВЫШЛО ХОРОШО, НО НЕ ОЧЕНЬ

    26
  62. ВЫШЛО ХОРОШО, НО НЕ ОЧЕНЬ ВЫШЛО ХОРОШО, НО НЕ ОЧЕНЬ

    Algorithm Conversion AOV Elasticsearch baseline baseline Regression +3.1% +2.5% LMART v1 +6.1% (+8.1%) no data 27
  63. КОСЯКИ КОСЯКИ Исторические данные о поисках-кликах-покупках 28

  64. КОСЯКИ КОСЯКИ Исторические данные о поисках-кликах-покупках 28

  65. КОСЯКИ КОСЯКИ Исторические данные о поисках-кликах-покупках Отдельная модель для каждого

    магазина 28
  66. КОСЯКИ КОСЯКИ Исторические данные о поисках-кликах-покупках Отдельная модель для каждого

    магазина Цель - минимизация NDCG 28
  67. ПОЛОЖИТЕЛЬНАЯ ОБРАТНАЯ СВЯЗЬ ПОЛОЖИТЕЛЬНАЯ ОБРАТНАЯ СВЯЗЬ 29

  68. ПОЛОЖИТЕЛЬНАЯ ОБРАТНАЯ СВЯЗЬ ПОЛОЖИТЕЛЬНАЯ ОБРАТНАЯ СВЯЗЬ 30

  69. POSITION POSITION 31

  70. СЛУЧАЙНОЕ РАНЖИРОВАНИЕ СЛУЧАЙНОЕ РАНЖИРОВАНИЕ 32

  71. СЛУЧАЙНОЕ РАНЖИРОВАНИЕ СЛУЧАЙНОЕ РАНЖИРОВАНИЕ 32

  72. СЛУЧАЙНОЕ РАНЖИРОВАНИЕ СЛУЧАЙНОЕ РАНЖИРОВАНИЕ Algorithm Conversion AOV Elasticsearch baseline baseline

    Regression +3.1% +2.5% LMART v1 +6.1% (+8.1%) no data Random -2.8% -1.3% 33
  73. POSITION BIAS POSITION BIAS L. Li, W. Chu, J. Langford,

    R. Schapire. 2010. A contextual-bandit approach to personalized news article recommendation. 34
  74. POSITION BIAS POSITION BIAS L. Li, W. Chu, J. Langford,

    R. Schapire. 2010. A contextual-bandit approach to personalized news article recommendation. Два сегмента: exploration и exploitation убрать bias при обучении 34
  75. POSITION BIAS POSITION BIAS L. Li, W. Chu, J. Langford,

    R. Schapire. 2010. A contextual-bandit approach to personalized news article recommendation. Два сегмента: exploration и exploitation убрать bias при обучении 34
  76. EXPLORATION EXPLORATION 35

  77. EXPLORATION EXPLORATION 0.1-1% всего трафика 35

  78. EXPLORATION EXPLORATION 0.1-1% всего трафика первая страница результатов поиска перемешана

    35
  79. EXPLORATION EXPLORATION 0.1-1% всего трафика первая страница результатов поиска перемешана

    используется для обучения 35
  80. КОСЯКИ КОСЯКИ Исторические репрезентативные данные о поисках-кликах-покупках Отдельная модель для

    каждого магазина Цель - минимизация NDCG 36
  81. КОСЯКИ КОСЯКИ Исторические репрезентативные данные о поисках-кликах-покупках Отдельная модель для

    каждого магазина Цель - минимизация NDCG 36
  82. ОТДЕЛЬНАЯ МОДЕЛЬ ДЛЯ КАЖДОГО МАГАЗИНА ОТДЕЛЬНАЯ МОДЕЛЬ ДЛЯ КАЖДОГО МАГАЗИНА

    37
  83. ОТДЕЛЬНАЯ МОДЕЛЬ ДЛЯ КАЖДОГО МАГАЗИНА ОТДЕЛЬНАЯ МОДЕЛЬ ДЛЯ КАЖДОГО МАГАЗИНА

    Магазины с низким трафиком 37
  84. ОТДЕЛЬНАЯ МОДЕЛЬ ДЛЯ КАЖДОГО МАГАЗИНА ОТДЕЛЬНАЯ МОДЕЛЬ ДЛЯ КАЖДОГО МАГАЗИНА

    Магазины с низким трафиком Время на онбординг и холодный старт 37
  85. ОТДЕЛЬНАЯ МОДЕЛЬ ДЛЯ КАЖДОГО МАГАЗИНА ОТДЕЛЬНАЯ МОДЕЛЬ ДЛЯ КАЖДОГО МАГАЗИНА

    Магазины с низким трафиком Время на онбординг и холодный старт Отвратительное ранжирования для сегмента "Exploration" 37
  86. ОДНАЖДЫ НА ХАКАТОНЕ ОДНАЖДЫ НА ХАКАТОНЕ 38

  87. ОДНАЖДЫ НА ХАКАТОНЕ ОДНАЖДЫ НА ХАКАТОНЕ Заменить костыли на ML

    для автокомплита 38
  88. ОДНАЖДЫ НА ХАКАТОНЕ ОДНАЖДЫ НА ХАКАТОНЕ Заменить костыли на ML

    для автокомплита гораздо проще чем поиск 38
  89. ОДНАЖДЫ НА ХАКАТОНЕ ОДНАЖДЫ НА ХАКАТОНЕ Заменить костыли на ML

    для автокомплита гораздо проще чем поиск все фичи зависят только от языка 38
  90. ОДНАЖДЫ НА ХАКАТОНЕ ОДНАЖДЫ НА ХАКАТОНЕ Заменить костыли на ML

    для автокомплита гораздо проще чем поиск все фичи зависят только от языка три магазина для теста: S, M, XXL 38
  91. РЕЗУЛЬТАТЫ? РЕЗУЛЬТАТЫ? 39

  92. ПЕРЕСАДКА МОДЕЛИ ПЕРЕСАДКА МОДЕЛИ 40

  93. ПЕРЕСАДКА МОДЕЛИ ПЕРЕСАДКА МОДЕЛИ из XXL магазина в S: 40

  94. ПЕРЕСАДКА МОДЕЛИ ПЕРЕСАДКА МОДЕЛИ из XXL магазина в S: 40

  95. ОБОБЩЕННАЯ МОДЕЛЬ ОБОБЩЕННАЯ МОДЕЛЬ 41

  96. ОБОБЩЕННАЯ МОДЕЛЬ ОБОБЩЕННАЯ МОДЕЛЬ Больще данных 41

  97. ОБОБЩЕННАЯ МОДЕЛЬ ОБОБЩЕННАЯ МОДЕЛЬ Больще данных Лучшее покрытие необычных случаев

    41
  98. ОБОБЩЕННАЯ МОДЕЛЬ ОБОБЩЕННАЯ МОДЕЛЬ Больще данных Лучшее покрытие необычных случаев

    Не надо собирать данные для нового магазина 41
  99. ОБОБЩЕННАЯ МОДЕЛЬ ОБОБЩЕННАЯ МОДЕЛЬ Больще данных Лучшее покрытие необычных случаев

    Не надо собирать данные для нового магазина Фичи нужно масштабировать 41
  100. КОСЯКИ КОСЯКИ Исторические репрезентативные данные о поисках-кликах- покупках Отдельная Обобщенная

    модель Цель - минимизация NDCG 42
  101. КОСЯКИ КОСЯКИ Исторические репрезентативные данные о поисках-кликах- покупках Отдельная Обобщенная

    модель Цель - минимизация NDCG 42
  102. NDCG NDCG 43

  103. NDCG NDCG 1.0 - хорошо, 0.0 - плохо, 0.4-0.7 -

    норм 43
  104. NDCG NDCG 1.0 - хорошо, 0.0 - плохо, 0.4-0.7 -

    норм сравнивает идеальное ранжирование с реальным 43
  105. NDCG NDCG 1.0 - хорошо, 0.0 - плохо, 0.4-0.7 -

    норм сравнивает идеальное ранжирование с реальным какое такое идеальное ранжирование? 43
  106. ИДЕАЛЬНОЕ РАНЖИРОВАНИЕ ИДЕАЛЬНОЕ РАНЖИРОВАНИЕ 44

  107. STANLEY BONG STANLEY BONG 45

  108. STANLEY BONG STANLEY BONG Позиция в поиске поднялась с #20

    до #1 45
  109. STANLEY BONG STANLEY BONG Позиция в поиске поднялась с #20

    до #1 Ни разу никто не купил 45
  110. STANLEY BONG STANLEY BONG Позиция в поиске поднялась с #20

    до #1 Ни разу никто не купил Стоит всего 3500$ 45
  111. STANLEY BONG STANLEY BONG 46

  112. STANLEY BONG STANLEY BONG пере-оптимизировали для кликов 46

  113. ИДЕАЛЬНОЕ РАНЖИРОВАНИЕ ИДЕАЛЬНОЕ РАНЖИРОВАНИЕ 47

  114. TRAINING ISSUES TRAINING ISSUES Исторические репрезентативные данные о поисках-кликах- покупках

    Отдельная Обобщенная модель Цель - минимизация NDCG (с корректными весами!) 48
  115. РЕЗУЛЬТАТЫ РЕЗУЛЬТАТЫ 49

  116. NDCG WITH PERSONALIZATION NDCG WITH PERSONALIZATION Algorithm NDCG (of ine)

    50
  117. NDCG WITH PERSONALIZATION NDCG WITH PERSONALIZATION Algorithm NDCG (of ine)

    Random 0.544 50
  118. NDCG WITH PERSONALIZATION NDCG WITH PERSONALIZATION Algorithm NDCG (of ine)

    Random 0.544 Popularity 0.578 50
  119. NDCG WITH PERSONALIZATION NDCG WITH PERSONALIZATION Algorithm NDCG (of ine)

    Random 0.544 Popularity 0.578 Elasticsearch 0.601 50
  120. NDCG WITH PERSONALIZATION NDCG WITH PERSONALIZATION Algorithm NDCG (of ine)

    Random 0.544 Popularity 0.578 Elasticsearch 0.601 Regression 0.615 50
  121. NDCG WITH PERSONALIZATION NDCG WITH PERSONALIZATION Algorithm NDCG (of ine)

    Random 0.544 Popularity 0.578 Elasticsearch 0.601 Regression 0.615 LMART v1 ~0.621 50
  122. NDCG WITH PERSONALIZATION NDCG WITH PERSONALIZATION Algorithm NDCG (of ine)

    Random 0.544 Popularity 0.578 Elasticsearch 0.601 Regression 0.615 LMART v1 ~0.621 LMART unbiased 0.635 50
  123. NDCG AND BUSINESS METRICS NDCG AND BUSINESS METRICS Algorithm NDCG

    CTR Conversion AOV 51
  124. NDCG AND BUSINESS METRICS NDCG AND BUSINESS METRICS Algorithm NDCG

    CTR Conversion AOV Elasticsearch 0.601 baseline baseline baseline 51
  125. NDCG AND BUSINESS METRICS NDCG AND BUSINESS METRICS Algorithm NDCG

    CTR Conversion AOV Elasticsearch 0.601 baseline baseline baseline Random 0.544 -7.1% -2.8% -1.3% 51
  126. NDCG AND BUSINESS METRICS NDCG AND BUSINESS METRICS Algorithm NDCG

    CTR Conversion AOV Elasticsearch 0.601 baseline baseline baseline Random 0.544 -7.1% -2.8% -1.3% Regression 0.615 -1.1% +3.1% +2.5% 51
  127. NDCG AND BUSINESS METRICS NDCG AND BUSINESS METRICS Algorithm NDCG

    CTR Conversion AOV Elasticsearch 0.601 baseline baseline baseline Random 0.544 -7.1% -2.8% -1.3% Regression 0.615 -1.1% +3.1% +2.5% LMART v1 ~0.621 no data +6.1% no data 51
  128. NDCG AND BUSINESS METRICS NDCG AND BUSINESS METRICS Algorithm NDCG

    CTR Conversion AOV Elasticsearch 0.601 baseline baseline baseline Random 0.544 -7.1% -2.8% -1.3% Regression 0.615 -1.1% +3.1% +2.5% LMART v1 ~0.621 no data +6.1% no data LMART unbiased 0.635 no data +8.1% (est) no data 51
  129. ВЫВОДЫ ВЫВОДЫ 52

  130. ВЫВОДЫ ВЫВОДЫ Лучше поиск - больше денег 52

  131. ВЫВОДЫ ВЫВОДЫ Лучше поиск - больше денег Можно легко прострелить

    ногу 52
  132. ВЫВОДЫ ВЫВОДЫ Лучше поиск - больше денег Можно легко прострелить

    ногу Умножьте оценку сроков на 52
  133. 53