Для данного задания предлагается использовать полный датасет MovieLens.
Необходимо построить векторные представления (эмбеддинги) пользователей и фильмов используя нейросетевые подходы, чтобы можно было по эмбеддингу пользователя искать похожие эмбеддинги фильмов и рекомендовать ему их. При выполнении задания обратите внимание на:
- Разбиение данных на обучение и валидацию, обоснование
- Выбор и обоснование метрики
- Разработка архитектуры нейронной сети с пояснениями
- Обучение и валидация
- Решение должно быть воспроизводимым, в формате Jupyter Notebook (Google Colab / файл на Github) с подробными пояснениями на каждом шаге
Результат на тестовой выборке:
Пример предсказания для пользователя:
Я считаю, что результаты проделанной работы можно считать успешными.
На тестовой выборке невооружённым глазом видно корреляцию между реальным рейтингом и предсказанным, так что в контексте актуальной рекомендации модель справляется хорошо. Кроме того, test loss = 0.038.
В ходе тестирования функции рекомендации также можно увидеть положительный результат. Конечно, умозрительно оценить актуальность предложенного фильма из непросмотренных пользователем довольно трудно, но, как минимум, видно, что фильмы в ответе сложи между собой по тематике (Планета Земля 1 и 2 части), а также каждый из них в реальности высоко оценён большим количеством пользователей (средняя оценка на kinopoisk у предложенных пользователю фильмов ~8.5/10).
- Добавление данных о пользователях (пол, возраст, предпочитаемые жанры...)
- Более тщательная настройка гиперпараметров модели, количества слоёв, функций активации
- Подбор оптимальных функции потерь и оптимизатора
- Увеличение количества эпох (может привести к переобучению!)