Потратив прошлый семестр на изучение концепций науки о данных в контексте линейной алгебры, я стал все больше интересоваться тем, как эти математические методы применяются в реальном мире. Одним из таких вариантов использования, который получил широкое распространение в 2022 году, являются системы рекомендаций по контенту.
Мотивы рекомендательных систем
За последние 20 лет технологические продукты произвели революцию в том, как пользователи создают, находят и потребляют контент. Развлекательные компании, такие как Netflix и Amazon, собрали огромные каталоги фильмов, намного большие, чем любой отдельный пользователь мог бы эффективно просматривать. Поскольку видеоконтент стало намного проще создавать, приложения для социальных сетей, такие как Instagram и TikTok, были заполнены еще большими видеокаталогами, созданными их пользователями. Опять же, это приводит к гораздо большему выбору контента, чем может обнаружить любой пользователь. Кроме того, по мере того, как традиционные предприятия переходят к веб-модели, аналогичная проблема возникает с массовым онлайн-выбором физических продуктов, цифровых товаров или любого другого контента, который можно найти в Интернете.
Эта проблема чрезвычайно больших наборов данных, которые пользователи полны решимости эффективно просматривать, мотивировала системы рекомендаций по разработке как приложение науки о данных. Если на YouTube заходит пользователь, который любит видео с кошками, и другой пользователь, который предпочитает видеоблоги, как YouTube может помочь каждому пользователю найти предпочитаемый контент как можно быстрее?
Наука о данных может решить эту проблему!
Подходы к системе рекомендаций
Исследователи данных обнаружили ряд подходов, которые можно использовать для создания современных эффективных (определяемых как точное прогнозирование поведения пользователей) систем рекомендаций по контенту. Здесь основное внимание будет уделено двум методам: (1) фильтрация на основе контента, которая рекомендует контент на основе функций этого контента и предпочтений пользователей в отношении этих функций, и (2) совместная фильтрация. , который изучает более глубокие закономерности в данных о поведении пользователей.
Независимо от того, какой метод мы решим применить, важно сначала понять данные и их значение, прежде чем решать проблему.
Хранение данных
Для рекомендаций по контенту нам нравится представлять всех пользователей и контент в виде взвешенного графика, на котором пользователи связаны с контентом в зависимости от того, как они с ним взаимодействуют. Например, на YouTube мы можем представить наблюдаемое поведение пользователя в виде графика, на котором каждый пользователь связан с каждым просмотренным видео.
Важно понимать, что мы можем назначать веса этому графику любым способом, который нам нравится, но он, скорее всего, будет использовать комбинацию неявных функций и явных функций. В предыдущем примере связи между пользователями и видео, которые они видели, представляют собой неявную функцию, поскольку оценка пользователем контента как положительного подразумевается при его просмотре. С другой стороны, явная функция — это функция, в которой пользователь намеренно помечает данные для нас, например, нажимает кнопку «Нравится».
На практике системы рекомендаций по контенту будут использовать многие неявные функции, такие как просмотры, время просмотра или продолжительность сеанса, а также несколько явных функций, таких как лайки, комментарии или рейтинги, для определения веса связи между пользователем и контентом.
Для простоты давайте представим график, представляющий собой упрощенную версию графика пользовательского контента YouTube. В этом случае -1 означает, что пользователь просмотрел видео и ему не понравилось, 0 означает, что пользователь просмотрел видео и не взаимодействовал с ним, а 1 означает, что пользователь просмотрел видео и оно ему понравилось.
Должно быть интуитивно понятно, что большинство пользователей не видели и не взаимодействовали с большинством видео на YouTube, а это означает, что матрица, представляющая этот график, будет довольно разреженной. Цель рекомендаций по контенту — предсказать эти отсутствующие значения с плавающей запятой, где 1 — это видео, которое, скорее всего, заинтересует пользователя, а -1 — наименее интересное для этого конкретного пользователя.
Фильтрация на основе содержания
Один из самых простых способов сделать эти прогнозы — использовать контентную фильтрацию. Для этого метода мы вводим слой функций между пользователями и контентом, что позволяет увеличить количество возможных связей и повысить точность предсказания.
Например, мы можем изменить наш предыдущий график, чтобы использовать фильтрацию на основе контента, сначала назначив категории для каждого из видео. Используя такие категории, как «видео с кошками» и «блоги», мы можем создать сопоставление между категориями и контентом. Некоторые видео могут быть явно «видео о кошках», а некоторые могут быть скорее смесью, в случае влогера, который показывает своих кошек в видео. Точно так же мы можем создать сопоставление между пользователями и категориями на основе предпочтений каждого пользователя.
Затем мы можем использовать этот дополнительный слой между пользователями и контентом, чтобы делать прогнозы о ненаблюдаемых записях в нашей исходной матрице. Для этого мы просто умножаем две матрицы, используемые для сопоставления, чтобы представить рекомендуемый график контента.
Хотя это действительная реализация системы рекомендаций, у этого подхода есть много недостатков, в том числе: (1) большие требования к данным, (2) неточность маркировки и (3) отсутствие учета возникающих закономерностей в данных.
Чтобы правильно реализовать контентную фильтрацию, необходимо сначала собрать данные о категориях, представленных в контенте, и категориальных предпочтениях пользователей. Первая проблема, которая возникает, касается масштаба сбора данных, необходимого для достижения этой цели. Для очень больших видеобиблиотек загрузчики могут определить широкую категорию, но для более тонких категорий будет сложно собрать данные. Кроме того, пользователям придется вручную вводить слишком большой объем данных о предпочтениях, что по своей природе подвержено человеческим ошибкам, поскольку люди не могут точно описать свои предпочтения.
Последней серьезной проблемой, которая может возникнуть при реализации фильтрации на основе содержимого, является ограниченное количество функций. Если каждая функция является категорией, помеченной вручную, существует естественный предел того, что люди могут легко наблюдать и тратить время на маркировку. Для большинства данных в данных будут лежать более глубокие закономерности, которые человек вряд ли заметит и классифицирует.
Функции и скрытые функции
Такой тип возникающего паттерна называется скрытой функцией. Обычно их обнаруживают с помощью методов машинного обучения, особенно методов уменьшения размерности. Когда скрытые функции используются в рекомендательных системах, могут появиться новые методы, дающие ряд преимуществ.
Совместная фильтрация
Один из таких методов известен как совместная фильтрация. Этот метод работает аналогично фильтрации на основе содержимого, но вместо определения сопоставления, которое генерирует предсказанный граф, для создания сопоставления используется наблюдаемый граф.
Матрицы, которые мы сгенерируем, будут сопоставлять пользователей со скрытыми функциями, а латентные функции — с контентом. Метод создания этого отображения использует процесс, известный как матричная факторизация. Матричная факторизация — это задача минимизации, целью которой является уменьшение квадрата разницы между значениями в наблюдаемой матрице и предсказанной матрице. Основными методами матричной факторизации являются стохастический градиентный спуск, который является более настраиваемым, и взвешенный альтернативный метод наименьших квадратов, который разработан специально для случаев использования совместной фильтрации и сходится быстрее.
Есть еще одна проблема с этим методом. Чтобы делать правильные прогнозы, необходимо учитывать ненаблюдаемые записи, иначе продукт отображения просто сгенерирует точные наблюдаемые данные. Эту проблему можно решить, установив для всех ненаблюдаемых записей значение 0 и применив SVD, но на практике этот метод неэффективен, поскольку разлагаемая наблюдаемая матрица обычно довольно разреженная. Вместо этого, используя взвешенную матричную факторизацию, мы можем добавить настраиваемый гиперпараметр, который присваивает веса ненаблюдаемым записям.
Мало того, что совместная фильтрация часто намного лучше предсказывает поведение пользователей на контентных платформах, она также имеет преимущество сжатия данных. Поскольку сопоставления скрытых признаков, созданные в результате матричной факторизации, могут точно генерировать точный наблюдаемый граф, исходную матрицу графа больше не нужно хранить. Это приводит к значительному снижению требований к хранению данных.
Заключение
Рекомендации по содержанию — это широкий и важный вариант использования науки о данных. Как в более примитивной форме фильтрации на основе контента, так и в более точном методе совместной фильтрации разработчикам программного обеспечения предоставляются полезные данные, что позволяет пользователям лучше находить контент.