На предыдущем видео мы рассмотрели различные подходы к построению рекомендательных систем и выяснили, что разные подходы имеют свои преимущества и имеют свои недостатки. Или другими словами, каждый подход имеет свою область применения. Нам с вами захотелось иметь возможность в одной системе использовать преимущества разных подходов и таким образом строить гибридные рекомендательные системы, строить системы, использующие разные подходы к построению рекомендаций. Давайте рассмотрим, какие бывают виды гибридизации систем. На самом деле, их довольно много, мы рассмотрим 6 наиболее популярных. Все они перед вами. И давайте начнем с наиболее простой — это схема Weighted. В рамках этого подхода рекомендательная система работает независимо и независимо генерирует оценки для каждого объекта. Далее, наша финальная оценка строится на основе комбинирования доступных оценок от различных рекомендательных систем с весами. Здесь могут быть очень простые примеры. Если у нас есть две системы, скажем, одна на основе коллаборативной фильтрации, другая — content-based, которые могут оценивать объекты, мы с вами можем построить линейную комбинацию оценок, то есть для каждого объекта сложить оценки от этих двух систем с разными весами. С другой стороны, если наши рекомендательные системы не пытаются спрогнозировать полезность объекта для пользователя, а просто генерируют бинарную оценку — либо объект понравится, либо нет, мы можем использовать схему голосования и, скажем, показывать объект только в том случае, если все системы уверены в том, что объект показывать нужно, что объект пользователям действительно интересен. Это довольно простая схема, поэтому ее часто используют. И следующий подход, который мы рассмотрим, называется Switching. В рамках этого подхода мы снова независимо строим наши рекомендательные системы, и далее, в тот момент, когда нам нужно построить рекомендации для пользователя, мы выбираем, какая рекомендательная система будет это делать. То есть в рамках этого подхода мы уже не смешиваем вместе рекомендации от разных систем, а выбираем, какая система будет строить рекомендации для пользователя. Для того чтобы сделать такой выбор, нам нужно построить некоторые критерии, которые подскажут нам, какую систему следует выбрать. Идея здесь довольно простая. Например, content-based подход позволяет нам решать проблему холодного старта для новых объектов. Поэтому если мы хотим порекомендовать пользователю объект, которого в нашей системе еще не было или он появился недавно, и достаточно много статистики о нем мы еще не накопили, то в этом случае нам логичнее использовать content-based подход. Если же мы пытаемся оценить объект, который уже давно в нашей системе, про него много статистики, то коллаборативная фильтрация, возможно, в этой задаче сработает лучше. Соответственно, мы можем построить некоторые критерии, на основании которых мы будем делать выбор, и использовать правильную рекомендательную систему. Следующий подход, который мы рассматриваем, называется Mixed. В рамках этого подхода мы снова генерируем рекомендации независимо, каждая система строит свой список рекомендаций, однако итоговый список рекомендаций строится на основе смеси рекомендаций от разных систем. Это хорошо работает в тех случаях, когда нам нужно одновременно получить длинный, разнообразный список рекомендаций, например, непрерывный feed новостей или рекомендации медиаконтента. В данном случае часто используют эту схему, потому что мы можем дополнять рекомендации от разных рекомендательных систем друг другом. Следующий, довольно интересный подход называется Feature combination. Этот подход в некоторой степени основан на подходе content-based и является его дополнением. Идея в том, что мы хотим объединить в одной обучающей выборке признаки от разных подходов. Чаще всего это выглядит следующим образом: мы используем информацию о предпочтениях похожих пользователей, полученную в рамках коллаборативного подхода, в качестве признаков для content-based подхода. То есть мы с вами можем рассмотреть рейтинги, которые получил объект с помощью пользователей, похожих на нашего пользователя, и эту информацию использовать как признаки. Таким образом, мы обогащаем признаковые описания объекта, полученного в рамках content-based подхода, и добавляем туда информацию о рейтингах. Это часто довольно неплохо работает. И следующий подход, который мы рассматриваем, называется Cascade. Это очень красивая идея, в рамках которой мы последовательно применяем несколько рекомендательных систем для уточнения рекомендаций. Предположим, что у нас есть рекомендательная система, которая работает вычислительно эффективно и может достаточно грубо и просто поделить объекты на два множества: точно нерелевантные, точно неинтересные пользователю и потенциально релевантные. Тогда давайте применим эту рекомендательную систему, отбросим те объекты, которые нашего пользователя точно не заинтересуют, и дальше будем работать только с той группой объектов, которые потенциально релевантны. Вот к ним давайте применим более сложную рекомендательную систему, которая, может быть, работает дольше, но зато она сможет более точно отранжировать эти объекты для пользователя. Такая схема часто называется Candidate selection, когда с помощью одного алгоритма, зачастую вычислительно более эффективного, мы с вами отбираем множество кандидатов и дальше с помощью другой, более сложной, системы их ранжируем. И последний подход, который мы рассмотрим, называется Feature augmentation. В рамках этого подхода мы тоже используем довольно красивую идею. Мы применяем к нашим объектам и пользователям несколько рекомендательных систем, а дальше их выход используем как входные признаки для системы на следующем уровне. Это довольно интересно. В рамках такой системы мы можем оценить объекты с помощью рекомендательной системы на основе коллаборативной фильтрации, а дальше использовать эти оценки для системы на основе content-based. Часто это бывает полезно, потому что мы сможем учесть внешние данные, не доступные нам для рекомендации. Скажем, мы с вами строим рекомендации товаров, то есть товарные рекомендации одежды, продуктов или чего-то еще, и нам с вами для этого хочется использовать данные из внешней системы, например, данные о том, какие товары пользователь искал, какие запросы он задавал. При этом, конечно же, изнутри нашей системы эти данные нам недоступны, мы ничего про это не знаем. Но с другой стороны, мы можем попросить тех, кому эти данные доступны, построить для нас рекомендации, дать нам их и использовать их для того, чтобы каким-то образом улучшить свои рекомендации, то есть эта система позволяет гибко подключать к рекомендациям внешние данные. Итак, мы с вами рассмотрели целый ряд способов построения гибридных рекомендательных систем. Отдельно хочется отметить, что мы совсем не обязаны использовать только один вид гибридов в нашей рекомендательной системе. Мы можем использовать сразу несколько. Как правило, построение гибридных рекомендательных систем улучшает качество рекомендаций, а также иногда положительно сказывается на их разнообразии. Построение таких систем может помочь решить проблемы, связанные с одним или другим подходом, но, к сожалению, построение гибридов не всегда гарантирует улучшение качества вашей рекомендательной системы.