Implicit feedback — основной язык production RecSys
В реальных продуктах пользователь редко ставит оценки. Зато он кликает, смотрит, скроллит, покупает, пропускает, скрывает, добавляет в избранное. Эти события и есть implicit feedback — шумный, но массовый сигнал.
Загрузка интерактивного виджета...
Главная особенность: отсутствие клика не равно дизлайк
Если пользователь не кликнул айтем, мы не знаем причину: он мог не увидеть его, айтем стоял слишком низко, был плохой thumbnail, пользователь спешил или ему правда неинтересно. Поэтому implicit задачи обычно учатся не на “оценках”, а на confidence-weighted сигналах и pairwise ranking.
Классические постановки
- Weighted ALS: interaction превращаем в preference p_ui, а частоту/силу события — в confidence c_ui.
- BPR: учим модель ранжировать положительный item выше отрицательного для того же пользователя.
- WARP: оптимизируем приближение ranking loss, полезно для top-K задач.
- Negative sampling: сэмплируем невыбранные айтемы как negatives, но помним, что они noisy.
Идея implicit ALS: событие задает preference, а сила события — confidence.
Как взвешивать события
- Purchase > add_to_cart > favorite > long_view > click > impression.
- Dwell time полезен, но его надо нормализовать по типу контента.
- Skip, hide, dislike, quick bounce — сильные negative/guardrail сигналы.
- Recency decay важен: вчерашний клик часто важнее клика год назад.
- Повторные события нужно логарифмировать или обрезать, чтобы heavy users не доминировали.
На собесе
Материалы
Дополнительно
Базовая статья про confidence-weighted ALS для implicit feedback.
Pairwise ranking loss для implicit feedback.
Практичная Python-библиотека для ALS/BPR/nearest-neighbor моделей.