[БЕЗ_ЗВУКА] В этом уроке мы поговорим про рекомендательные системы. Что же мы хотим научиться делать, когда строим рекомендательную систему? Прежде всего, мы хотим научиться что-то рекомендовать пользователям. Что нам для этого нужно? Для этого нам нужны сами пользователи, сами объекты, которые мы рекомендуем, и какие-то данные о связи пользователей и объектов, например, какой-то feedback от пользователей насчет того, какие объекты им понравились, а какие — нет. Как может ставиться задача рекомендации фильмов? У нас могут быть оценки, которые пользователи поставили фильмам, которые посмотрели. И мы можем задаться целью спрогнозировать оценки для тех фильмов, которые пользователи еще не видели, и на основе этих оценок рекомендовать пользователям то, что больше всего понравится. В этом случае мы имеем дело с матрицей «Пользователи-фильмы», в ячейках которой у нас будут оценки, которые пользователи ставили. При этом не все ячейки заполнены, некоторые из них пустуют, потому что фильм не был просмотрен. Но те, которые заполнены, могут быть заполнены как высокой оценкой, так и низкой оценкой, что дает нам знание и о том, что человеку нравится, и о том, что человеку не нравится. Наша задача в этом случае — заполнить ячейки, в которых нет никакой оценки, для того чтобы на основе этих спрогнозированных значений можно было рекомендовать что-то пользователям. Совсем другая ситуация с рекомендациями товаров. Здесь мы уже не знаем, какой товар пользователю не понравился, потому что у нас есть данные только о том, что пользователь что-то посмотрел, что-то купил. В этом случае мы должны строить рекомендации, основываясь только на положительном feedback, и этот случай называется случаем implicit feedback, а предыдущий случай, когда у нас были как высокие оценки, так и низкие — случаем explicit feedback, как мы уже обсуждали в предыдущих курсах. При этом мы можем решать задачу построения рекомендаций как для конкретного пользователя на основе каких-то его параметров или на основе его поведения, так и задачу построения рекомендаций для конкретного объекта. Ну, например, показать похожие фильмы или похожие товары, или аксессуары к данному товару. Кстати говоря, задача рекомендаций к товару может решаться с помощью уже известного вам понятия взаимной информации. Можно просто посмотреть, какие товары встречаются в пользовательской сессии вместе, то есть какие товары пользователи смотрят вместе, или какие товары пользователи покупают вместе, но о покупках обычно меньше данных, и на основе этого рекомендовать какие-то сопутствующие товары. Кроме того, нам могут потребоваться рекомендации в каком-то специальном сценарии, например, часто на сайтах магазинов на главной странице показывают самые популярные товары, хиты. При этом, конечно же, понятие популярности в какой-то степени абсолютно, то есть мы можем сформулировать его таким образом, чтобы все товары одинаково для всех пользователей расположить в порядке убывания популярности. Но при этом мы можем добавить какую-то небольшую персонализацию, то есть немножко переставить товары из топа популярных для того, чтобы показать человеку именно то, что ему интересно. А кроме того, мы можем также персонализировать рекомендации товаров из той же категории, можем персонализировать блок с сопутствующими товарами или с товарами, которые просто покупают вместе. Итак, мы поговорили с вами о том, что же делают при построении рекомендательных систем, какие задачи решают; упомянули, что мы можем делать рекомендации как для пользователей, так и для объекта; и обсудили некоторые дополнительные ограничения, которые могут возникать в задаче рекомендации. В следующем видео мы вспомним некоторые методы построения рекомендации, которые мы уже обсуждали ранее.