Моя страсть - комиксы. Как вы могли заметить, даже если вы не читаете, вы обязательно столкнетесь с персонажами и историями, которые возникли в комиксах, используемых на телевидении и в кино. Netflix, Hulu, Amazon, HBO и многие другие погрузились в создание контента из комиксов. Летние театры кишат новейшими сказками о Мстителях или Бэтмене.

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

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

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

Имея все это в виду, давайте создадим систему рекомендаций!

Подготовка данных и копание комиксов

Моей целью было найти людей, которые оценили и фильмы / сериалы, и комиксы / графические романы. Чтобы построить свою модель, я использовал большое хранилище обзоров Amazon, ранее собранных в рамках исследовательского проекта Калифорнийского университета в Сан-Диего (~ 24 ГБ обзоров книг и фильмов / телепрограмм за 1996–2014 годы, дополнительная информация здесь).

Чтобы извлечь правильных пользователей и рейтинги, мне пришлось потратить много времени на изучение и изучение этого набора данных. Все комиксы / графические новеллы сгруппированы во всех других книжных обзорах, и нет никаких ярлыков, чтобы их вытащить. Я начал с меньшего количества идентификаторов Amazon (ASIN) для комиксов из страниц бестселлеров Amazon. Основываясь на исследовании данных, я обнаружил в идентификаторах шаблон для быстрого получения нескольких больших блоков идентификаторов для комиксов. Ниже приведен пример найденных мною паттернов:

С этим набором идентификаторов я нашел соответствующие обзоры. Затем я взял рецензентов из этого набора и нашел тех, кто также рецензировал фильмы / телевидение. После удаления элементов с менее чем 5 отзывами и удаления любых данных с отсутствующими метаданными (у некоторых отсутствовали заголовки или были ссылки на элементы, которых больше не было в списке, что делало их непригодными для использования), я работал с ~ 84000 отзывами, с ~ 8,500 отдельными пользователями и ~ 7400 наименований (~ 1300 комиксов / графических романов, ~ 6100 фильмов / телепрограмм).

Моделирование и чередование наименьших квадратов

Мой подход заключался в создании альтернативной модели наименьших квадратов (ALS), чтобы иметь рекомендательную систему для совместной фильтрации. Вы можете спросить себя, что это за наименьшие квадраты и почему, черт возьми, они чередуются?

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

Итак, у меня есть матрица оценок с пользователями и их отзывами на комиксы и фильмы (R). Эта матрица будет довольно разреженной, поскольку пользователи будут оценивать только некоторые вещи, но мы хотим заполнить эти пустые места и угадать, сколько они могут набрать, исходя из того, что мы о них знаем. Сначала выберем ряд скрытых функций. Скрытые функции - это, по сути, математически выведенный способ описания пользователей и элементов. Посредством неотрицательной матричной факторизации (NMF) мы можем получить из R матрицы для пользователей (U) и элементов (P). Мы сохраняем константу U (заполненную случайными значениями) и решаем относительно P. Затем мы сохраняем константу P и решаем относительно U. Этот процесс идет вперед и назад до тех пор, пока не будет видно уменьшения ошибки. После завершения U и P умножаются вместе, чтобы получить нашу новую оценку R, заполняя значения во всей матрице отзывов пользователей.

Оценка

Для оценки я оптимизировал производительность моей модели на основе оптимизации для среднеквадратичной ошибки (RMSE) и средней абсолютной ошибки (MAE). Настройка параметров моей модели не дала слишком многого с точки зрения производительности, но я остановился на своей лучшей модели, использующей 50 скрытых функций, параметр регуляризации на уровне 0,1 и максимальное количество итераций на уровне 20. Моя самая эффективная модель имеет коэффициент RMSE 1,17. В общем, я бы надеялся получить это число меньше 1, но думаю, что это довольно хорошая производительность в моих текущих масштабах.

Вверх вверх и прочь!

Вы можете проверить это на себе на IntoComics. Приложение предлагает вам выбор фильмов для оценки от 1 до 5 (в настоящее время это тщательно подобранный список из 60 фильмов, которые оценивались чаще всего, но не учитывают все, что основано на комиксах или графических романах, чтобы более четко разделить их. Средняя). После того, как вы оценили один или несколько, он возвращает список из 5 лучших рекомендаций по комиксам / графическим романам со ссылками на каждый продукт на Amazon. Я собираюсь продолжить работу над улучшением модели, но пока надеюсь, вам понравится!