рекомендательные системы история развития
История систем рекомендаций
Первый этап развития рекомендательных систем — коллаборативная фильтрация
Первый цифровой видеомагнитофон, который пытался учесть предпочтения пользователей, чтобы автоматически записывать подходящие им передачи, появился в конце 1990-х. Устройство называлось TiVo и продавалось конечным пользователям такими брендами, как Sony и Philips (до выхода TiVo на IPO в 1999 году компания Philips, в которой в то время работал автор этой статьи, являлась одним из совладельцев TiVo). В то время хорошо структурированных описаний для всех вещаемых телепередач не было и мощности пользовательских устройств для сложных вычислений тоже не хватало, поэтому в основу системы рекомендаций был положен алгоритм коллаборативной фильтрации.
Несмотря на то, что решение не работало в реальном времени и иногда неправильно определяло интересы пользователя (см, например, «Мой видеомагнитофон считает, что я гей» — истории о том, как пользователи пытаются понять и повлиять на результаты рекомендаций), простота подхода быстро сделала его популярным в отрасли. Чемпионом применения стала компания Netflix, которая для своего бизнеса предоставления DVD-дисков в аренду привлекла команду разработчиков, настраивающих параметры рекомендательного движка коллаборативной фильтрации, и добивалась год от года все лучших результатов.
Однако в середине 2000-х качество рекомендаций, которое может обеспечить алгоритм коллаборативной фильтрации, достигло некоторого предела.
В надежде спасти ситуацию за счет коллективного разума в 2006 году Netflix организовал конкурс Netflix Prize. Лучшие команды разработчиков в течение трех лет добились дальнейшего улучшения точности рекомендаций еще на 10%, но предложенные решения использовать на практике было нельзя — небольшое улучшение точности требовало совершенно неадекватных операционных затрат. Коллаборативная фильтрация как основной метод рекомендаций в видео зашла в тупик.
Второй этап развития рекомендательных систем — фильтрация по контенту
Третий этап развития рекомендательных систем — анализ контекста
Тем временем развитие облачных вычислений предоставило компаниям, разрабатывающим рекомендации, колоссальные возможности для проведения натурных тестов. Наша компания APRICO Solutions, как и другие исследователи, на основе этих тестов получила ясную информацию о том, в каком виде люди хотят получать рекомендации, как они реагируют и какую обратную связь готовы предоставлять. И оказалось, к изумлению многих разработчиков, что требованиям пользователей ни один конкретный рекомендательный алгоритм удовлетворить не может. Пользователям нужна комбинация редакторских рекомендаций, фильтрации по контенту на основе персональных предпочтений, рекомендаций сообщества людей с близкими вкусами, и чтобы в этих рекомендациях были удачные находки, а подбор контента соответствовал сиюминутному настроению и типу используемого устройства. При этом пользователь должен понимать, что это не какой-то там «Большой брат» следит за ним, а он сам может повлиять на результат. Сложные настройки предлагать не нужно, скажем, соотношение между редакторскими рекомендациями и фильтрацией по контенту определяет оператор, но, например, если рядом с рекомендованным фильмом указано, что данный фильм вам советуют посмотреть потому, что вам нравится Дженнифер Лопес, а она вам на самом деле не нравится, нужно иметь возможность сразу это отметить и немедленно получить другие рекомендации.
Таким образом, после периода изучения кликов пользователя и после периода семантических рекомендаций мы пришли к новому этапу, в котором основную роль играет контекст: cиюминутные намерения, интересы и окружение пользователя. Ясно, что это снова другой подход, при котором рекомендательный движок должен давать результат сразу, как только будут получены данные о контексте, учитывать все варианты алгоритмов, пояснять рекомендации пользователю и давать ему постоянный контроль над параметрами. Компания XroadMedia, в которой автор является директором и одним из соучредителей, была как раз и создана для того, чтобы отвечать требованиям этого нового этапа развития, и, насколько можно судить, является единственной, предоставляющей услуги в реальном времени в соответствии с этой новой концепцией. Пока не известно, на каких параметрах (контекстах) будут фокусироваться Netflix и другие, когда они тоже присоединятся к этому направлению, но XroadMedia и наши клиенты — Zatoo, DVBLogic, Technisat — уже над этим работают.
Подпишитесь на канал «Телеcпутника» в Telegram: перейдите по инвайт-ссылке или в поисковой строке мессенджера введите @telesputnik, затем выберите канал «ТелеСпутник» и нажмите кнопку +Join внизу экрана.
Что такое рекомендательные системы и как они работают
Откуда соцсети, интернет-магазины и онлайн-кинотеатры знают, что вы любите? Разбираемся вместе.
Покупая что-то в онлайн-магазине, вы наверняка замечаете блок «Рекомендованное». И чем больше времени вы рассматриваете товары, тем более качественными становятся рекомендации.
Пока вы изучаете ассортимент, специальный алгоритм собирает досье: какие цвета и модели вам нравятся, что покупаете, а что удаляете из корзины. Программа находит похожие товары и в первую очередь показывает вам именно их — как если бы в ассортименте магазина были только ваши любимые вещи.
Сложно устоять перед соблазном и не потратить все деньги. На это и рассчитывают заказчики рекомендательных систем — они пытаются увеличить конверсию в покупку и средний чек своих магазинов.
Пишет про digital и машинное обучение для корпоративных блогов. Топ-автор в категории «Искусственный интеллект» на Medium. Kaggle-эксперт.
Виды рекомендательных систем
Представьте, что вам нужно порекомендовать кому-то фильм. На чём вы будете основываться? Другу, с которым у вас много общего, можно посоветовать то, что понравилось вам. Но восьмилетней сестре вы вряд ли предложите «Декстера» — и вкусы, и потребности явно будут отличаться.
Логика рекомендательных систем тоже может быть разной:
Рассмотрим каждый из типов подробнее.
Фильтрация, основанная на контенте (content-based filtering)
Посмотрели ужастик про зомби? Рекомендательная система, основанная на контенте, посоветует ещё 25. Постоянно слушаете Queen? Вот вам плейлист рок-музыки семидесятых. Кажется, что это безотказный метод. Но нет.
Допустим, вы купили диван. Это крупная и дорогая покупка, большинство людей не приходит за новым диваном каждый месяц. Если рекомендательная система посоветует вам купить ещё 15 диванов, то магазин явно будет в убытке. А вот рекламные системы вроде «Яндекс.Директа» о факте покупки не знают, поэтому ещё долго будут кидаться в вас всевозможными диванами — то есть фильтровать рекламу, основываясь на контенте.
Коллаборативная фильтрация (collaborative filtering)
Что же делать магазину мебели в такой ситуации? Рецепт простой — можно отследить историю корзин всех покупателей диванов. И окажется, что спустя пару месяцев многие покупают средства и губки для чистки мебели, какие-то аксессуары, чехлы, накидки. Порекомендовать их клиенту — значит сделать его жизнь проще, а заодно заработать. Но и этот подход не универсален.
Фильтрация, основанная на знаниях (knowledge-based filtering)
Если на сайте продаются дома или машины, полагаться на отзывы других пользователей система не может: покупки штучные и редкие, а значит, информации слишком мало — нет статистической значимости. Но мы же хотим, чтобы пользователь купил дом своей мечты у нас, а не у конкурентов?
В этом случае можно добавить фильтры: дом в городе или в деревне, количество этажей и квадратных метров, материал стен. После этого рекомендательная система подбирает наиболее подходящие дома из каталога.
Такой тип рекомендаций точен: пользователю показывают именно то, что он хочет видеть. Но алгоритмы фильтрации, основанной на знаниях, сложнее продумать, потому что параметров поиска может быть очень много.
Гибридные рекомендательные системы (hybrid filtering)
Гибридные рекомендательные системы сочетают разные подходы. Так можно избавиться от большинства недостатков «несмешанных» систем. Например, в онлайн-магазинах одежды в рекомендациях показываются вещи, похожие на те, что вы уже смотрели, а также те, которые покупали пользователи с похожими вкусами, — то есть одновременно включаются механизмы фильтрации, основанной на контенте, и коллаборативной фильтрации.
Как работает рекомендательная система Netflix
Считается, что рекомендательная система Cinematch, созданная Netflix, — одна из наиболее продуманных в мире. Netflix не раскрывает всех деталей работы своей модели машинного обучения, но основные принципы известны.
При регистрации вас сразу просят указать несколько любимых фильмов и сериалов. На их основе генерируется лента, которая будет подстраиваться под ваши вкусы. С помощью лайков и дизлайков вы можете корректировать её и добавлять понравившиеся фильмы в плейлист.
Netflix хочет знать о вас всё: что вы смотрите, что смотрели до и после конкретной программы, в какое время суток используете сервис и сколько времени в нём проводите. Алгоритм учитывает ваши возраст, пол и геопозицию.
Каждое видео на Netflix сначала просматривают специалисты. Они вручную маркируют и размечают контент, то есть описывают, что зритель увидит на экране. Пользователи иногда ищут очень конкретные вещи — например, «британская комедия про зомби» — и Netflix может выдать релевантный контент даже на такие сложные запросы.
Видеосервис использует данные о фильмах и пользователях, чтобы с помощью алгоритмов машинного обучения оценить, какая информация важнее всего. Например, что больше влияет на ваши вкусы сегодня: то, что вы смотрели год или неделю назад? Обычно чем свежее данные, тем лучше. Хотя если сейчас конец декабря, то новогодние и рождественские комедии окажутся более уместными — но только для стран с христианскими традициями.
Cinematch рассматривает как явные, так и неявные источники информации. Если вы добавляете сериал в избранное, значит, он вас заинтересовал. Но если вы посмотрели три сезона сериала за два дня и при этом не добавили его в избранное, это тоже хороший знак.
Алгоритм машинного обучения анализирует не только каждого отдельного пользователя, но и группы пользователей со сходными вкусами — сегменты. У Netflix таких сегментов по интересам больше 2 тысяч. В итоге на рекомендации влияет даже то, что смотрели другие люди из вашего сегмента.
В Интернете множество сайтов, на которых фильмы можно смотреть бесплатно, но Netflix в 2020 году набрал почти 200 млн платных подписчиков. А значит, их рекомендательная система чего-то стоит.
Плюсы и минусы рекомендательных систем
Рекомендательные системы приносят очевидную выгоду владельцам онлайн-магазинов, различных сервисов и приложений. Они показывают пользователю именно то, что ему интересно, и генерируют прибыль.
Но есть и минусы. Человек привыкает к подсказкам рекомендательных сетей при выборе книг, фильмов и музыки. У него пропадает стимул изучать новые непривычные жанры — ведь всё, что предлагает сеть, ему в принципе нравится.
Особенно остро стоит проблема потребления новостей и выдачи умной ленты в социальных сетях. Потому что здесь речь идёт уже не столько о развлечениях, сколько о формировании мировоззрения.
Например, у расиста или у конспиролога, верящего в рептилоидов, в ленте будут преобладать поддерживающие его точку зрения материалы — а значит, его шансы познакомиться с качественными альтернативными источниками стремятся к нулю и он будет лишь ещё больше укрепляться в своём мнении. И это может привести к печальным последствиям или неадекватным поступкам.
Социальные сети и алгоритмы выдачи борются с таким явлением. Так что бояться полной потери индивидуальности не стоит. Все мы в какой-то степени полагаемся на гаджеты и современные технологии, а рекомендации помогают ориентироваться в потоке информации и находить интересные материалы быстрее.
Создавать рекомендательные системы, анализировать данные и писать алгоритмы, которые помогают компаниям в России или за рубежом делать клиентов счастливыми, вы научитесь на курсе по Data Science.
Рекомендательные системы: идеи, подходы, задачи
Многие привыкли ставить оценку фильму на КиноПоиске или imdb после просмотра, а разделы «С этим товаром также покупали» и «Популярные товары» есть в любом интернет- магазине. Но существуют и менее привычные виды рекомендаций. В этой статье я расскажу о том, какие задачи решают рекомендательные системы, куда бежать и что гуглить.
Что рекомендуем?
Что, если мы хотим рекомендовать комфортный для пользователя маршрут? Разным пользователям важны различные аспекты поездки: наличие сидячих мест, время в пути, загруженность транспорта, кондиционер, красивый вид из окна. Необычная задача, но примерно понятно, как построить такую систему.
Что, если мы рекомендуем новости? Новости быстро устаревают — нужно показывать пользователям свежие статьи, пока они ещё актуальны. При этом необходимо понимать содержание статьи. Уже сложнее.
А если мы рекомендуем рестораны на основе отзывов? Но рекомендуем не только ресторан, но и конкретные блюда, которые стоит попробовать. Можно также давать рекомендации ресторанам о том, что стоит улучшить.
Что, если мы вообще развернем задачу и попытаемся ответить на вопрос: «Какой товар будет интересен наибольшей группе людей?». Становится совсем необычно и сходу непонятно, как такое решать.
На самом деле, существует множество вариаций задачи рекомендаций и в каждой есть свои нюансы. Рекомендовать можно совершенно неожиданные вещи. Мой любимый пример — рекомендация превьюшек на Netflix.
Более узкая задача
Возьмем понятную и привычную задачу рекомендации музыки. Что именно мы хотим порекомендовать?
На этом коллаже можно найти примеры различных рекомендаций Spotify, Google и Яндекса.
Классическая постановка
В классической постановке задачи всё, что у нас есть — это матрица оценок user-item. Она очень разрежена и наша задача — заполнить пропущенные значения. Обычно в качестве метрики используют RMSE предсказанного рейтинга, однако существует мнение, что это не совсем правильно и следует учитывать характеристики рекомендации как целого, а не точность предсказания конкретного числа.
Как оценивать качество?
Online evaluation
Наиболее предпочтительный способ оценки качества системы — прямая проверка на пользователях в контексте бизнес-метрик. Это может быть CTR, время, проведенное в системе, или количество покупок. Но эксперименты на пользователях дороги, а выкатывать плохой алгоритм даже на малую группу пользователей не хочется, поэтому до онлайн-проверки пользуются оффлайн метриками качества.
Offline evaluation
Relevance в контексте MAP@k — бинарное значение, а в контексте nDCG@k — может быть и рейтинговая шкала.
Но, помимо точности предсказания, нас могут интересовать и другие вещи:
Данные
Explicit feedback
Матрица оценок — это пример explicit-данных. Лайк, дислайк, рейтинг — пользователь сам явно выразил степень своего интереса к айтему. Таких данных обычно мало. Например, в соревновании Rekko Challenge в тестовых данных хотя бы одна оценка есть только у 34% пользователей.
Implicit feedback
Гораздо больше имеется информации о неявных предпочтениях — просмотры, клики, добавление в закладки, настройка уведомлений. Но если пользователь посмотрел фильм — это означает лишь то, что до просмотра фильм казался ему достаточно интересным. Прямых выводов о том, понравился фильм или нет, мы сделать не можем.
Функции потерь для обучения
Чтобы использовать implicit feedback, придумали соответствующие методы обучения.
Bayesian Personalized Ranking
Известно, с какими айтемами взаимодействовал пользователь. Будем считать, что это положительные примеры, которые ему понравились. Остается множество айтемов, с которым пользователь не взаимодействовал. Мы не знаем, какие из них пользователю будут интересны, а какие нет, но мы наверняка знаем, что далеко не все из этих примеров окажутся положительными. Сделаем грубое обобщение и будем считать отсутствие взаимодействия отрицательным примером.
_
Будем семплировать тройки <пользователь, положительный айтем, отрицательный айтем>и штрафовать модель, если отрицательный пример оценен выше положительного.
Weighted Approximate-Rank Pairwise
Добавим к предыдущей идее adaptive learning rate. Будем оценивать обученность системы, исходя из количества семплов, которые нам пришлось просмотреть, чтобы для данной пары <пользователь, положительный пример>найти отрицательный пример, который система оценила выше положительного.
Если мы нашли такой пример с первого раза, значит штраф должен быть большой. Если пришлось долго искать, значит система уже неплохо работает и штрафовать так сильно не нужно.
О чём ещё стоит подумать?
Холодный старт
Как только мы научились делать предсказания для существующих пользователей и товаров, встаёт два вопроса: — «Как рекомендовать товар, который ещё никто не видел?» и «Что рекомендовать пользователю, у которого ещё нет ни одной оценки?». Для решения этой проблемы стараются извлечь информацию из других источников. Это могут быть данные о пользователе из других сервисов, опросник при регистрации, информация об айтеме из его содержания.
При этом существуют задачи, для которых состояние холодного старта является постоянным. В Session Based Recommenders нужно успеть понять что-то о пользователе за то время, что он находится на сайте. В рекомендателях новостей или товаров моды постоянно появляются новые айтемы, а старые быстро устаревают.
Long Tail
Если для каждого айтема посчитать его популярность в виде количества юзеров, которые с ним взаимодействовали или поставили положительную оценку, то очень часто будет получаться график как на изображении:
Существует очень маленькое количество айтемов, о которых знают все. Нет никакого смысла их рекомендовать, потому что пользователь, скорее всего, либо уже их видел и просто не поставил оценку, либо и так о них знает и собирается посмотреть, либо твердо решил не смотреть вовсе. Я не раз смотрел трейлер «Списка Шиндлера», но посмотреть так и не собрался.
С другой стороны, популярность очень быстро спадает, и подавляющее количество айтемов практически никто не видел. Делать рекомендации из этой части полезней: там есть интересный контент, который пользователь вряд ли сможет найти сам. Для примера — справа статистика прослушиваний одной из моих любимых групп на Яндекс.Музыке.
Exploration vs Exploitation
Допустим, мы точно знаем, что нравится пользователю. Значит ли это, что мы должны рекомендовать одно и то же? Есть ощущение, что такие рекомендации быстро наскучат и стоит иногда показывать что-то новое. Когда мы рекомендуем то, что точно должно понравиться — это exploitation. Если мы пробуем добавить в рекомендации что-то менее популярное или как-то их разнообразить — это exploration. Хочется балансировать эти вещи.
Неперсонализированные рекомендации
Самый простой вариант — рекомендовать всем одно и то же.
Сортировка по популярности
Score = (Positive ratings) − (Negative ratings)
Можно вычесть из лайков дислайки и отсортировать. Но в таком случае мы не учитываем их процентное соотношение. Есть ощущение, что 200 лайков 50 дислайков не то же самое, что 1200 лайков и 1050 дислайков.
Score = (Positive ratings) / (Total ratings)
Можно поделить количество лайков на количество дислайков, но в таком случае мы не учитываем количество оценок и товар с одной оценкой в 5 баллов будет отранжирован выше, чем очень популярный товар со средней оценкой в 4.8.
Как не сортировать по среднему рейтингу и учитывать количество оценок? Посчитать доверительный интервал: «Исходя из имеющихся оценок, с вероятностью в 95 % истинная доля положительных оценок как минимум какая?». Ответ на этот вопрос дал Эдвин Уилсон в 1927 году.
— наблюдаемая доля положительных оценок
— 1-альфа квантиль нормального распределения
Совстречаемости
Выделение часто встречающихся множеств товаров включает в себя целую группу задач pattern mining: periodic pattern mining, sequential rule mining, sequential pattern mining, high- utility itemset mining, frequent itemset mining (basket analysis). Для каждой конкретной задачи будут свои методы, но если грубо обобщать, алгоритмы по поиску частых множеств выполняют сокращенный поиск в ширину, стараясь не перебирать заведомо плохие варианты.
Отсечение редких множеств происходит по задаваемой границе support — количество или частота встречаемости множества в данных.
После выделения частых itemset оценивается качество их зависимости с помощью метрики Lift или Confindence(a,b) / Confidence(!a,b). Они нацелены на то, чтобы удалить ложные зависимости.
Например, бананы могут часто встречаться в продуктовой корзине вместе с консервами. Но дело не в какой-то особой связи, а в том, что бананы популярны сами по себе, и это следует учитывать при поиске совстречаемостей.
Персонализированные рекомендации
Content-Based
Идея content-based подхода заключается в том, чтобы по истории действий пользователя создать для него вектор его предпочтений в пространстве предметов и рекомендовать товары, близкие к этому вектору.
То есть у айтема должно быть какое-то признаковое описание. Например, это могут быть жанры фильмов. История лайков и дизлайков фильмов формирует вектор предпочтения,
выделяя одни жанры и избегая другие. Сравнивая вектор пользователя и вектор айтема, можно сделать ранжирование и получить рекомендации.
Collaborative Filtering
Коллаборативная фильтрация предполагает наличие матрицы оценок пользователь-айтем. Идея заключается в том, чтобы для каждого пользователя найти наиболее похожих «соседей» и заполнить пропуски конкретного пользователя, взвешенно усредняя рейтинги «соседей».
Аналогично можно смотреть на схожесть айтемов, считая, что похожие айтемы нравятся похожим людям. Технически это будет просто рассмотрение транспонированной матрицы оценок.
Пользователи по-разному используют шкалу оценок — кто-то никогда не ставит выше восьми, а кто-то использует всю шкалу. Это полезно учитывать, и поэтому можно предсказывать не сам рейтинг, а отклонение от среднего рейтинга.
Либо можно заранее нормализовать оценки.
Matrix Factorization
Из математики мы знаем, что любую матрицу можно разложить на произведение трех матриц. Но матрицы оценок очень разрежены, 99 % — обычное дело. А SVD не знает, что такое пропуски. Заполнять их средним значением не очень хочется. И в целом, нас не очень интересует матрица сингулярных значений — мы просто хотим получить скрытое представление пользователей и предметов, которое при перемножении будет приближать истинный рейтинг. Можно сразу раскладывать на две матрицы.
Что же делать с пропусками? Забить на них. Оказалось, что обучать приближать рейтинги по метрике RMSE с помощью SGD или ALS можно, вообще игнорируя пропуски. Первый такой алгоритм — Funk SVD, который придумали в 2006 году в ходе решения соревнования от Netflix.
Netflix Prize
Netflix Prize — значимое событие, которое дало сильный толчок развитию рекомендательных систем. Цель соревнования — обогнать существующую систему рекомендаций Cinematch по метрике RMSE на 10 %. Для этого был предоставлен большой на то время датасет, содержащий 100 миллионов оценок. Задача может показаться не такой сложной, но для достижения требуемого качества потребовалось переоткрывать соревнование два раза — решение было получено только на 3 год соревнования. Если бы было необходимо получить улучшение в 15 %, возможно, этого бы и не удалось достичь на предоставленных данных.
В процессе соревнования в данных были найдены некоторые интересности. На графике показана средняя оценка фильмов в зависимости от даты появления в каталоге Netflix. Видимый разрыв связывают с тем, что в это время Netflix перешел от объективной шкалы (фильм плохой, фильм хороший) к субъективной (мне не понравилось, мне очень понравилось). Люди менее критичны, когда высказывают свою оценку, а не характеристику объекта.
На этом графике показано, как меняется средняя оценка фильмов после релиза. Видно, что за 2000 дней оценка поднимается на 0.2. То есть, после того как фильм перестал быть новым, его начинают смотреть те, кто достаточно сильно уверен в том, что фильм ему понравится, что повышает рейтинг.
Первый промежуточный приз взяла команда специалистов из AT&T — Korbell. После 2000 часов работы и составления ансамбля из 107 алгоритмов им удалось получить улучшение в 8,43 %.
Среди моделей была вариация SVD и RBM, которые сами по себе давали большую часть вклада. Остальные 105 алгоритмов улучшали только одну сотую метрики. Netflix адаптировал эти два алгоритма под свои объемы данных и использует их до сих пор как часть системы.
Во второй год соревнования произошло объединение двух команд и теперь приз взяли Bellkor in BigChaos. Они настакали суммарно 207 алгоритмов и улучшили точность ещё на одну сотую, достигнув значения 0.8616. Требуемое качество все ещё не достигнуто, но уже понятно, что на следующий год все должно получиться.
Третий год. Объединение еще с одной командой, переименование в Bellkor’s Pragmatic Chaos и достижение необходимого качества, немного уступая The Ensemble. Но это только публичная часть датасета.
На скрытой части оказалось, что точность у этих команд совпадает до четвертого знака после запятой, поэтому победителя определила разница коммитов в 20 минут.
Netflix выплатил обещанный миллион победителям, но так никогда и не использовал полученное решение. Внедрять полученный ансамбль оказалось слишком дорого, а пользы от него не так много — ведь всего два алгоритма уже дают большую часть прироста в точности. А самое главное — на время завершения соревнования в 2009, Netflix уже два года как начал заниматься своим стриминговым сервисом помимо аренды DVD. У них появилось много других задач и данных, которые они могли использовать в своей системе. Однако их сервис аренды DVD по почте до сих пор обслуживает 2,7 миллионов счастливых подписчиков.
Нейросети
В современных рекомендательных системах частый вопрос — как учитывать различные явные и неявные источники информации. Часто есть дополнительные данные о пользователе или айтеме и их хочется использовать. Нейросети — хороший способ учета такой информации.
В вопросе применения сетей для рекомендаций следует обратить внимание на обзор Deep Learning based Recommender System: A Survey and New Perspectives. В нем описаны примеры использования большого количества архитектур применительно к различным задачам.
Архитектур и подходов очень много. Одно из повторяющихся названий — DSSM. Ещё я бы хотел отметить Attentive Collaborative Filtering.
ACF предлагает ввести два уровня аттеншена:
Многорукие бандиты — одна из популярных тем недавнего времени. Что такое многорукие бандиты можно почитать в статье на Хабре или на Медиуме.
В применении к рекомендациям задача Contextual-Bandit будет звучать примерно так: «Подаем на вход системы контекстные вектора пользователя и айтема, хотим максимизировать вероятность взаимодействия (клика, покупки) по всем пользователям с течением времени, совершая частые обновления политики рекомендации». Такая формулировка естественным образом решает проблему exploration vs exploitation и позволяет быстрее выкатывать оптимальные стратегии на всех пользователей.
На волне популярности архитектуры трансформер также появляются попытки использовать их в рекомендациях. Next Item Recommendation with Self-Attention пытается комбинировать долговременные и недавние предпочтения пользователя для улучшения рекомендаций.
Инструменты
Рекомендации — не такая популярная тема, как CV или NLP, поэтому чтобы использовать последние архитектуры сеток придется либо реализовывать их самому, либо надеяться, что реализация автора достаточно удобна и понятна. Однако некоторые базовые инструменты все же есть: