У рекомендательных систем, как и у всего в ИТ, есть несколько разрозненных определений, но то, которое мне больше всего нравится, дано этим постом:

Системы рекомендаций — это системы, которые помогают пользователям находить товары, которые могут им понравиться.

Довольно просто и понятно. Когда вы читаете новости, смотрите фильм на Netflix или просто делаете что-то на Amazon, вы получаете сообщения вроде:

  • Вам это тоже наверняка понравится
  • Вместе с этим часто покупают
  • Товары, относящиеся к этому пункту
  • Клиенты, купившие данный продукт, также приобрели
  • Поскольку вы видели X, вам также может понравиться Y
  • Рекомендуется для вас

Существует множество сообщений, которые могут быть показаны вам, но, в конце концов, они в основном одинаковы, они просто рекомендуют вам какой-то предмет для потребления. И это потому, что у этих сложных систем есть профиль пользователей, и они знают, какие продукты они склонны потреблять. Таким образом, они просто пытаются придумать элементы, которые вам больше понравятся, вместо самых популярных, или просто случайный набор предметов, которые могут вам не понравиться.

Но… Почему веб-сайты так озабочены своими рекомендательными системами?

Деньги! Разве вы этого еще не знали? Как вы думаете, стал бы Нетфликс давать приз в миллион долларов, если бы они не были уверены, что результат, полученный ими от такого конкурса, увеличит их доход на гораздо большую сумму? Я тоже так не думаю.

Электронные коммерции, такие как Amazon или Ebay в США и MercadoLibre в Латинской Америке, вкладывают в это много денег. Они создают отличные команды только для того, чтобы сосредоточиться на повышении точности своих рекомендаций, потому что таким образом у пользователей гораздо больше соблазнов покупать больше вещей. Вот почему, когда вы покупаете что-то вроде велосипеда, вы получаете теплое сообщение, подобное этому: Возможно, вас также заинтересует покупка этого замечательного шлема. Могу поспорить, что это каким-то образом произошло с вами, и, более того, вы попались в эту мощную ловушку и в итоге купили предложенный продукт. В конце концов, это просто вопрос счастья. Да, людям нравится тратить деньги, поэтому рекомендации просто пытаются стимулировать ту часть мозга, которая заставляет вас чувствовать себя счастливее, покупая какие-то вещи.

Но не только интернет-магазины увеличивают свои доходы за счет внедрения рекомендательных систем. Другие платформы, которые предоставляют пользователю множество возможностей, также могут воспользоваться хорошими рекомендациями, например, Netflix или The New York Times. Но они ничего не продают, так зачем им беспокоиться о таких сложных системах? Опять же, все дело в деньгах. Предлагая хорошие предложения фильмов, телепередач или новостей, эти веб-сайты поощряют пользователя оставаться вовлеченным, и, следовательно, они могут показывать больше рекламы или просто привлекать больше клиентов.

Как это работает на самом деле?

Существует множество методов, которые можно использовать при создании рекомендательной системы, некоторые из них довольно просты, а некоторые используют сложные математические модели. Давайте просто перечислим некоторые из них:

  • рекомендатели популярности: вероятно, самый простой способ создать рекомендателя – просто порекомендовать самые популярные товары. Например, для Netflix это будут самые популярные фильмы, для Amazon — самые продаваемые товары и так далее. В этой простой стратегии также есть несколько вариантов: рекомендатель может предложить самые популярные товары (например, Youtube), которые являются самыми популярными за последние несколько часов или дней; или могут быть рекомендации для каждой категории, в которой пользователь склонен искать.
    Преимуществом этого подхода является простота, которая также означает меньшее использование вычислений, и их также очень легко обновлять. Минусы — отсутствие персонализации, низкая точность рекомендаций, что также означает меньшую прибыль.
  • Системы рекомендаций на основе содержания. Для повышения окончательной точности был принят новый и более интуитивно понятный подход. Рекомендации на основе контента используют два компонента: профиль пользователя и представление элемента. Последний — это, по сути, некий способ описания элемента в векторе чисел, например, если мы говорим о сообщении, сообщение может быть представлено содержащимися в нем словами и категориями. Для фильмов это может быть жанр, актеры и так далее. В дополнение к представлению используется метод нормализации, чтобы исключить влияние очень популярных элементов. Один из таких методов — представление TF-IDF, другой — нормализация Жаккара, в зависимости от приложения. обычно взвешенное среднее значение. Когда для каждого элемента имеется векторное представление, а у каждого пользователя есть собственный профиль, алгоритм выполняет поиск по всем элементам, чтобы найти наиболее похожие на пользователя, которого мы хотим порекомендовать.
    Этот алгоритм имеет тенденцию к работают очень хорошо, когда элементов не так много, и мы пока мало знаем о пользователе. Однако при большом количестве элементов (что является распространенным случаем) этот подход требует больших вычислительных ресурсов, и рекомендации начинают ухудшаться.
  • Совместная фильтрация: это эволюция основанной на содержании. В широком смысле она учитывает взаимодействие между различными пользователями и элементами и использует эту информацию для выдачи очень проницательных рекомендаций. Существует два варианта: совместная фильтрация пользователя и пользователя и совместная фильтрация пользователя и элемента.
    Например, предположим, что мы хотим дать рекомендации пользователю U, который смотрел фильмы ‹X, Y, Z›. Первая альтернатива ищет «похожих» пользователей, чтобы основывать рекомендации на просмотренных ими фильмах. Продолжая пример, помимо U есть еще два пользователя U1 и U2, и они смотрели фильмы ‹X, Y, Z, T› и ‹X, R, T, S› соответственно. Просто взглянув на их историю, мы можем сделать вывод, что наиболее похожим на U пользователем является U1, потому что они смотрели почти одни и те же фильмы, поэтому при подходе «пользователь-пользователь» мы рекомендуем пункт T.
    С другой стороны , метод User-Item измеряет сходство между элементами на основе людей, которые с ними взаимодействуют, и возвращает наиболее похожие элементы на элементы, которые обычно ищет пользователь U. Например, при таком подходе также рекомендуется использовать T, так как он больше всего похож на ‹X, Y, Z›.
    Существует несколько способов измерения расстояний и агрегирования метрик от пользователей, но в основном это подход. взятые с помощью совместной фильтрации. Обычно стратегия «пользователь-пользователь» возвращает более неожиданные элементы, а подход «пользователь-элемент» имеет тенденцию возвращать более предсказуемые элементы, скажем, если вы покупаете компьютер, он, вероятно, порекомендует вам наушники или мышь.

Это было краткое введение в системы рекомендаций, в следующих постах мы углубимся в более продвинутые методы, такие как матричная факторизация или комбинация рекомендаций. Мы также начнем изображать некоторый код, чтобы получить более низкое представление о том, как работает рекомендатель.