The repository contains 3rd place solution of VK-Cup 2022 qualification task
- train_val_test_split.ipynb - разбиение исходного датасета в хронологическом порядке
- recommenders.ipynb - отбор кандидатов с помощью различных методов
- merge_candidates.ipynb - скрипты для объединения кандидатов и признаков в один dataframe
- features.ipynb - построение признаков
- train_lgb.ipynb - обучение lightgbm ранкера
- make_prediction_by_chanks.ipynb - финальное предсказание на тесте
- Alternative Least Squares (ALS) - 300 кандидатов
- BM25 Recommender - 200 кандидатов
- Наиболее близкие по содержанию (на основании эмбеддингов содержимого, предоставленных организаторами) к 2-3 наиболее релевантным статьям каждого пользователя (релевантность рассчитывалась как timespent / rank, где rank - ранг статьи в истории просмотра пользователя; у последней просмотренной пользователем статьи rank = 1) - 200 кандидатов
- Наиболее популярные статьи за последнее время - 200 кандидатов
- скор и ранг, полученные с помощью каждого метода отбора кандидатов
- степень похожести кандидатов на статьи в истории просмотра пользователя (здесь рассматривались статистики min, max, mean и std). Степень похожести двух элементов рассчитывалась как скалярное произведение для BM25 и как косинусное расстояние для ALS и эмбеддингов содержимого.
- информация о статьях (item), источниках (source) и пользователях (user):
- средний timespent на статью за последние 1, 10, 50 и 100 просмотров пользователей
- средний timespent на источник за последние 1, 10, 50 и 100 просмотров пользователей
- популярность статьи внутри источника - (timespent на статью) / (timespent на весь источник) и (количество просмотров на статью) / (количество просмотров на весь источник)
- среднее время, потраченное пользователем на статью
- среднее время, потраченное пользователем на источник
- количество просмотренных пользователем источников
- и др.
Для обучения ранкера train разбивался в хронологическом порядке для каждого пользователя - 20% последних просмотренных статей использовались как таргеты и 80% в качестве тренировочной выборки, на основании которой производился отбор кандидатов и вычисление признаков.
- Только ALS (512 факторов, ~75 итераций) на всём train - 0.087
- 400 кандидатов, полученных с помощью ALS, и минимальное количество признаков, включающих информацию о популярности статей и источников, + ранжирование с помощью lightgbm - 0.131
- Полный пайплайн, описанный ранее - 0.146