Введение
В современном мире каждый клиент сталкивается с несколькими вариантами выбора. Например, если я ищу книгу для чтения, не имея четкого представления о том, чего я хочу, существует множество вариантов того, как мой поиск может увенчаться успехом. Я мог бы потратить много времени на просмотр Интернета и просмотр различных сайтов в надежде найти золото. Я мог бы искать рекомендации от других людей.
Но если бы существовал сайт или приложение, которые могли бы рекомендовать мне книги на основе того, что я читал ранее, это было бы огромной помощью. Вместо того, чтобы тратить время на различные сайты, я мог просто авторизоваться и вуаля! 10 рекомендованных книг на мой вкус.
Рекомендательные системы — это алгоритмы, направленные на то, чтобы предлагать пользователям релевантные товары (например, фильмы для просмотра, текст для чтения, товары для покупки и т. д. в зависимости от отрасли). Они очень важны в некоторых отраслях, поскольку они могут приносить огромный доход, когда они эффективны, а также позволяют значительно выделиться среди конкурентов.
Это то, что делают механизмы рекомендаций, и в наши дни их мощь используется большинством компаний. От Amazon до Netflix, от Google до Goodreads, рекомендательные системы являются одним из наиболее широко используемых приложений машинного обучения. методы.
Система рекомендаций фильтрует данные с помощью различных алгоритмов и рекомендует пользователям наиболее релевантные элементы. Сначала он фиксирует прошлое поведение клиента и на его основе рекомендует продукты, которые пользователи могут купить.
Если совершенно новый пользователь посещает сайт электронной коммерции, этот сайт не будет иметь никакой прошлой истории этого пользователя (Проблема холодного запуска, когда у нас нет истории прошлых покупки определенного пользователя или когда пользователь является совершенно новым). Так как же сайт будет рекомендовать продукты пользователю в таком сценарии? Одним из возможных решений может быть рекомендация самых продаваемых продуктов, то есть товаров, которые пользуются высоким спросом. Другим возможным решением может быть рекомендация продуктов, которые принесут максимальную прибыль бизнесу.
Если мы сможем порекомендовать несколько товаров клиенту, исходя из его потребностей и интересов, это окажет положительное влияние на пользовательский опыт и приведет к частым посещениям. Следовательно, в настоящее время предприятия создают умные и интеллектуальные механизмы рекомендаций, изучая прошлое поведение своих пользователей.
Как работает система рекомендаций?
Прежде чем мы углубимся в эту тему, сначала подумаем, как мы можем рекомендовать элементы пользователям:
- Мы можем рекомендовать пользователю элементы, которые наиболее популярны среди всех пользователей.
- Мы можем разделить пользователей на несколько сегментов на основе их предпочтений (пользовательских характеристик)и рекомендовать им товары на основе того, к какому сегменту они принадлежат.
Оба вышеперечисленных метода имеют свои недостатки. В первом случае самые популярные товары будут одинаковыми для каждого пользователя, поэтому все увидят одни и те же рекомендации. В то время как во втором случае по мере увеличения количества пользователей будет увеличиваться и количество функций. Так что классифицировать пользователей по разным сегментам будет очень сложной задачей.
Основная проблема здесь в том, что мы не можем адаптировать рекомендации, исходя из конкретных интересов пользователей. Это похоже на то, что Amazon рекомендует вам купить ноутбук только потому, что его купило большинство покупателей. Но, к счастью, Amazon (или любая другая крупная фирма) не рекомендует продукты, использующие вышеупомянутый подход. Они используют некоторые персонализированные методы, которые помогают им более точно рекомендовать продукты.
Давайте теперь сосредоточимся на том, как работает механизм рекомендаций, выполнив следующие шаги.
Сбор данных
Это первый и самый важный шаг в создании системы рекомендаций. Данные можно собирать двумя способами: явно и неявно. Явные данные — это информация, которая предоставляется намеренно, т. е. данные пользователей, такие как рейтинги фильмов. Неявные данные — это информация, которая не предоставляется намеренно, а собирается из доступных потоков данных, таких как история поиска, клики, история заказов и т. д.
На изображении выше Netflix явно собирает данные в виде рейтингов, которые пользователь дает разным фильмам.
Здесь история заказов пользователя записывается Amazon, что является примером неявного режима сбора данных.
Хранилище данных
Количество данных определяет, насколько хорошими могут быть рекомендации модели. Например, в системе рекомендаций фильмов чем больше оценок пользователи дают фильмам, тем лучше получаются рекомендации для других пользователей. Тип данных играет важную роль в выборе типа хранилища, которое необходимо использовать. Этот тип хранилища может включать в себя стандартную базу данных SQL, базу данных NoSQL или какое-либо хранилище объектов.
Фильтрация данных
После сбора и сохранения данных мы должны отфильтровать их, чтобы извлечь соответствующую информацию, необходимую для вынесения окончательных рекомендаций.
Существуют различные алгоритмы, которые помогают нам упростить процесс фильтрации. В следующем разделе мы подробно рассмотрим каждый алгоритм.
Контентная фильтрация
Этот алгоритм рекомендует продукты, похожие на те, которые пользователю нравились в прошлом.
Например, если человеку понравился фильм «Начало», то этот алгоритм порекомендует фильмы того же жанра. Но как алгоритм понимает, из какого жанра выбирать и рекомендовать фильмы?
Рассмотрите пример Netflix. Они сохраняют всю информацию, относящуюся к каждому пользователю, в векторной форме. Этот вектор содержит прошлое поведение пользователя, т. е. фильмы, которые ему понравились/не понравились, и оценки, которые они поставили. Этот вектор известен как вектор профиля. Вся информация, относящаяся к фильмам, хранится в другом векторе, который называется вектор элементов. Вектор элементов содержит сведения о каждом фильме, такие как жанр, актерский состав, режиссер и т. д.
Алгоритм фильтрации на основе контента находит косинус угла между вектором профиля и вектором элемента, т. е. косинусное сходство. Предположим, что A — вектор профиля, а B — вектор элементов, тогда сходство между ними можно рассчитать как:
На основе значения косинуса, которое находится в диапазоне от -1 до 1, фильмы располагаются в порядке убывания, и для рекомендаций используется один из двух следующих подходов:
- Подход Top-n: рекомендуются n лучших фильмов (здесь n может определяться бизнесом)
- Шкала рейтинга: установлен порог, и рекомендуются все фильмы выше этого порога.
Основным недостатком этого алгоритма является то, что он ограничен рекомендацией элементов одного типа. Он никогда не будет рекомендовать продукты, которые пользователь не покупал или не любил в прошлом. Таким образом, если пользователь в прошлом смотрел или любил только боевики, система будет рекомендовать только боевики. Это очень узкий способ создания двигателя.
Чтобы улучшить этот тип системы, нам нужен алгоритм, который может рекомендовать элементы не только на основе контента, но и поведения пользователей.
Совместная фильтрация
Давайте разберемся в этом на примере. Если человеку А нравятся 3 фильма, скажем, «Интерстеллар», «Начало» и «Предопределение», а человеку Б нравятся «Начало», «Предопределение» и «Престиж», то у них почти одинаковые интересы. Мы можем с некоторой уверенностью сказать, что А должен нравиться «Престиж», а Б должен нравиться «Интерстеллар». Алгоритм совместной фильтрации использует «Поведение пользователя» для рекомендации элементов. Это один из наиболее часто используемых алгоритмов в отрасли, поскольку он не зависит от какой-либо дополнительной информации. Существуют различные типы методов совместной фильтрации, и мы подробно рассмотрим их ниже.
На основе памяти
К первой категории относятся алгоритмы, основанные на памяти, в которых статистические методы применяются ко всему набору данных для расчета прогнозов.
Чтобы найти рейтинг R, который пользователь U поставил бы элементу I, подход включает:
- Поиск пользователей, похожих на U, которые оценили элемент I
- Расчет рейтинга R на основе оценок пользователей, найденных на предыдущем шаге.
Совместная фильтрация пользователей
Этот алгоритм сначала находит показатель сходства между пользователями. На основе этой оценки сходства затем выбираются наиболее похожие пользователи и рекомендуются продукты, которые понравились этим похожим пользователям или которые они купили ранее.
В нашем примере с фильмами, приведенном ранее, этот алгоритм находит сходство между каждым пользователем на основе оценок, которые они ранее дали разным фильмам. Предсказание элемента для пользователя u рассчитывается путем вычисления взвешенной суммы пользовательских оценок, присвоенных другим пользователям элементу i.
Прогноз Pu,i определяется по формуле:
Здесь,
- Pu,i – прогноз элемента
- Rv,i — оценка, которую пользователь v поставил фильму i.
- Su,v — сходство между пользователями
Совместная фильтрация по элементам
В этом алгоритме мы вычисляем сходство между каждой парой элементов.
Таким образом, в нашем случае мы найдем сходство между каждой парой фильмов и на основе этого порекомендуем похожие фильмы, которые нравились пользователям в прошлом. Этот алгоритм работает аналогично совместной фильтрации пользователей с небольшим изменением — вместо взвешенной суммы оценок «пользователей-соседей» мы берем взвешенную сумму оценок «элементов-соседей». Прогноз дает:
Теперь найдем сходство между элементами.
Теперь, когда у нас есть сходство между каждым фильмом и рейтингами, делаются прогнозы, и на основе этих прогнозов рекомендуются похожие фильмы.
Модель на основе
Вторая категория охватывает подходы, основанные на модели, которые включают шаг по уменьшению или сжатию большой, но разреженной матрицы пользовательских элементов. Для понимания этого шага может быть очень полезно базовое понимание уменьшения размерности.
Уменьшение размерности
В матрице пользовательских элементов есть два измерения:
- Количество пользователей
- Количество предметов
Если матрица в основном пуста, уменьшение размеров может улучшить производительность алгоритма как с точки зрения пространства, так и времени. Для этого вы можете использовать различные методы, такие как матричная факторизация или автоэнкодеры.
Матричную факторизацию можно рассматривать как разбиение большой матрицы на произведение меньших. Это похоже на факторизацию целых чисел, где 12
можно записать как 6 x 2
или 4 x 3
. В случае матриц матрица A размерности m x n
может быть сведена к произведению двух матриц X и Y размерностей m x p
и p x n
. соответственно.
Алгоритмы матричной факторизации
Одним из популярных алгоритмов факторизации матрицы является алгоритм разложения по сингулярным числам (SVD). SVD попал в центр внимания, когда матричная факторизация показала хорошие результаты в призовом конкурсе Netflix. Другие алгоритмы включают PCA и его разновидности, NMF и так далее.
Измерение успеха системы рекомендаций
Используемые общие показатели
Метрики точности прогнозирования, метрики точности классификации и метрики точности ранжирования являются основными типами метрик оценки для рекомендательных систем.
Показатели точности прогнозирования
Прогностическая точность или меры прогнозирования рейтинга касаются того, насколько приблизительные рейтинги рекомендателя близки к реальным рейтингам пользователей. Этот вид меры широко используется для оценки небинарных рейтингов.
Он лучше всего подходит для сценариев использования, в которых критически важен точный прогноз оценок для всех продуктов. Средняя абсолютная ошибка (MAE), среднеквадратическая ошибка (MSE), среднеквадратическая ошибка (RMSE) и нормализованная средняя абсолютная ошибка (NMAE) являются наиболее важными показателями для этой цели.
Показатели точности классификации
Меры точности классификации пытаются оценить способность рекомендательного алгоритма к успешному принятию решений (SDMC). Они полезны для пользовательских задач, таких как определение хороших продуктов, поскольку они оценивают количество правильных и неправильных классификаций как релевантных или нерелевантных вещей, созданных рекомендательной системой.
Показатели точности ранжирования
В статистике точность ранжирования или метрика прогнозирования ранжирования оценивает способность рекомендателя оценивать правильный порядок элементов на основе предпочтений пользователя, что известно как измерение ранговой корреляции. В результате, если пользователю предоставляется длинный отсортированный список товаров, которые ему рекомендуются, этот тип меры является наиболее подходящим.
Источник: Medium, Analyticsvidhya, Real Python.