Школьные Проекты Goto: Система Рекомендаций Для Новостного Портала



Школьные проекты GoTo: система рекомендаций для новостного портала

Внутри каждого Перейти в школы Происходит много мероприятий; школьники реализуют десятки успешных и не очень успешных проектов.

К сожалению, мы не можем охватить каждый проект или инцидент, но попытаться поделиться отдельными успехами стоит. Поэтому мы начинаем серию статей учеников об их успехах и проектах в рамках наших школ.

Ээтим летом один из партнеров - Компания Е-Контента – предложил задачу создать рекомендательную систему для новостного портала одного из телеканалов.

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

За решение взялись два ученика июньской школы: 16-летний Андрей Творожков из Москвы и 14-летний Всеволод Жидков из Воткинска.

Также подготовили краткое описание проблемы и ее решения, которое мы публикуем в этой статье под катом.



Описание задачи

Рекомендательная система — это программа, позволяющая прогнозировать наиболее интересные объекты (например, книги, фильмы или статьи), уже имея некоторые данные о текущем состоянии.

Состоянием могут быть объекты, которые пользователю уже понравились, или данные, которые мы знаем о клиенте (например, его музыкальные предпочтения).

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

Основная задача, которую решает рекомендательная система, — повышение удобства использования продукта для конечного пользователя.

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

Благодаря качественным рекомендательным системам выросли такие цифровые гиганты, как Netflix, Spotify и многие другие стартапы.

Среди рекомендательных систем выделяют три основных типа: совместная фильтрация, фильтрация контента и гибридная.

Совместная фильтрация, вероятно, является самой популярной моделью рекомендации объектов.

Его основная идея заключается в том, что если объекты просматривают практически одинаковые пользователи, то эти объекты следует рекомендовать этим пользователям.



Школьные проекты GoTo: система рекомендаций для новостного портала

Например, если определенной Алисе нравятся сериалы «Друзья» и «Теория большого взрыва», а определенному Бобу нравятся «Бруклин 9-9» и «Друзья», то вы можете порекомендовать Алисе «Бруклин 9-9» и «Теория большого взрыва» Бобу.

Существует два основных подхода к совместной фильтрации:

  • Корреляционные модели — основная идея таких моделей основана на хранении матрицы пользователей/объектов.

  • Латентные модели — это модели, которые не позволяют поддерживать матрицу пользователей/объектов, а строятся на основе «профилей» пользователей и объектов.

    Профиль – это вектор скрытых характеристик.

Следующий способ построения рекомендательной модели — рекомендации по контенту.

Это означает, что наша модель будет зависеть от содержимого объектов.

Например, вы можете оценить схожесть текстов новостей (о том, как это сделать, мы поговорим чуть позже) или порекомендовать другие фильмы Кэмерона к фильму «Титаник».

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



Школьные проекты GoTo: система рекомендаций для новостного портала

RTB на ужин от CTO E-Contenta Больше фотографий

Школьные проекты GoTo: система рекомендаций для новостного портала

Коллективное творчество

Школьные проекты GoTo: система рекомендаций для новостного портала

Испытания на прочность

Школьные проекты GoTo: система рекомендаций для новостного портала

Преодоление трудностей

Школьные проекты GoTo: система рекомендаций для новостного портала

Столкновение с реальностью на примере игры Пальцы.



Школьные проекты GoTo: система рекомендаций для новостного портала

Выживает сильнейший

Школьные проекты GoTo: система рекомендаций для новостного портала

Сжигание ошибок напоследок

Решение

Для нашей задачи по рекомендации новостей мы решили использовать гибридную модель.

Он объединяет результаты предыдущих вариантов и возвращает взвешенный результат. Наша гибридная модель, основанная на признаках, которые мы извлекли для объекта и для пользователя, возвращает вероятность того, что пользователь прочитает эту статью (нажмет на нее).

После нескольких тестов мы решили использовать Random Forest в качестве алгоритма машинного обучения, но это не так важно.

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

Школьные проекты GoTo: система рекомендаций для новостного портала

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

Начнем с совместной фильтрации.

Давайте посчитаем схожесть новостей на основе пользователей, просмотревших эту статью.

Для этого часто используют косинусную меру — косинус угла между двумя векторами, в данном случае взглядами пользователей.



Школьные проекты GoTo: система рекомендаций для новостного портала

Поскольку мы хотим, чтобы при вынесении рекомендаций учитывалась не одна новость, давайте возьмем три последние статьи и одну возможную (вероятность перехода на которую мы оцениваем), а затем посчитаем косинусное подобие каждой из прочитанных новостей с возможный.

Таким образом, у нас будет 3 функции.

Теперь стоит задача посложнее – оценить схожесть новостей по их содержанию.

Мы отвергли самые простые варианты, такие как поиск по ключевым словам и подсчет их пересечений, из-за их низкой эффективности.

В области построения моделей контента выделяется тематическое моделирование — метод разделения документов на темы без преподавателя.

Для этого существует несколько алгоритмов; в нашей системе мы использовали NMF – неотрицательное матричное разложение; оно оказалось лучше, чем LDA – латентное распределение Дирихле.

Прежде чем использовать NMF, нам необходимо построить матрицу, которую мы будем разлагать; для этого мы использовали TF-IDF. TF-IDF состоит из двух частей: TF (term Frequency — частота слов) — это отношение количества данного слова в документе к количеству слов в данном документе.

Используя частоту терминов, вы можете оценить важность слова в документе.

Обратите внимание, что частота так называемых стоп-слов — союзов и союзных слов, местоимений, предлогов, частиц и т. д.) будет больше остальных, поэтому мы удалили все новости о них.



Школьные проекты GoTo: система рекомендаций для новостного портала

IDF (обратная частота документов) — это инверсия частоты, с которой определенное слово встречается в документах коллекции.

С помощью IDF мы можем не только убрать стоп-слова, но и снизить важность часто используемых существительных.



Школьные проекты GoTo: система рекомендаций для новостного портала

Поскольку нам важно знать как важность слова в тексте, так и его уникальность, умножаем TF-IDF и получаем:

Школьные проекты GoTo: система рекомендаций для новостного портала

С помощью TF-IDF создаем матрицу документов в слова, на пересечении документа и слова ставим значение, полученное из TF-IDF:

Школьные проекты GoTo: система рекомендаций для новостного портала

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

Близость между любой комбинацией терминов и/или документов легко вычисляется с использованием скалярного произведения векторов.

После всего этого мы получили вполне содержательные темы, например, статьи о Савченко попали в один кластер, а статьи о законах, предложенных Госдумой, в другой.

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

А в качестве признаков мы можем использовать по 40 значений для каждой из четырёх новостей.

Кроме того, можно заняться фиче-инжинирингом и добавить разницу между каждой прочитанной статьей и возможной, но мы этого не делали.

В результате мы получили модель, прогнозы которой нас устроили.

Например, мы читаем несколько новостей о возможном назначении кого-то на должность советника президента, сразу после этого рекомендательная система выдает нам статьи с конкретными именами кандидатов.



Метрика качества

Однако, хотя мы видели, что статьи рекомендовались вполне логично, необходимо было посчитать метрику качества рекомендаций.

Наиболее распространенной метрикой является МАП@К , где K — количество рекомендаций.

В нашей задаче пользователю одновременно рекомендуется 10 статей, поэтому K = 10. Метрика позволяет нам узнать, как быстро мы дали пользователю то, что он хочет, в нашем случае, как быстро мы порекомендовали статью, которую пользователь на самом деле читать.

В результате MAP@10 для нашей итоговой модели составил 0,75, а для самой первой модели — 0,05. Наш результат оказался вполне подходящим, это показали и метрика, и проверка зрения.

После того, как мы закончили делать рекомендательную систему, мы собрали веб-приложение, с помощью которого вы сможете сами оценить ее работу.

Его исходники доступны по адресу Гитхаб .

Работая над проектом, мы заметили важную особенность подобных рекомендательных систем: они очень часто заманивают пользователей в статьи на одну и ту же тему, поэтому стоит рассмотреть возможность включения случайных статей, чтобы попытаться найти другие темы, интересные пользователю.



Каков результат?

Результаты были высоко оценены преподавателями и использованы E-Contenta для дальнейшей работы над проектом заказчика, а ребята были приглашены на стажировку для решения новых задач.

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



Предстоящие мероприятия

Этой осенью состоится школа для старшеклассников и младших школьников в бизнес-инкубаторе «Ингрия» при участии Jetbrains, КРОК, Intel, Института Биоинформатики, BIOCAD, Parseq Lab, Одноклассники и других компаний.

Это наша первая школа в Санкт-Петербурге.

Участники будут заниматься не только анализом данных и биоинформатикой, но и Интернетом вещей с разработкой мобильных приложений, чат-ботов и веб-сервисов.

У каждого есть возможность выиграть гранты на бесплатное обучение в области Биоинформатики и Анализа Данных, приняв участие в соревнованиях GoTo Challenge до 22 октября - осознав сборка генома или тематический классификатор веб-страниц .

Приглашаем экспертов принять участие в роли наставников и учителей; особенно рады стартапам, которые готовы разделить задачи с ребятами.

Мы также скоро расскажем вам о второй хакатон GoToHack по анализу данных, на этот раз он посвящен сфере образования и HR. Обратите внимание, что онлайн-этап уже начался с заданиями на Kaggle на основе реальных данных о студентах, проходящих онлайн-курсы на платформе.

Степик.

орг .

Теги: #goto #анализ данных #рекомендательные системы #школа #Машинное обучение #лагерь #хакатон #школьники #программирование #математика #Машинное обучение

Вместе с данным постом часто просматривают: