Обязательно

Implicit Feedback

Учимся работать с неявной обратной связью — кликами, просмотрами, временем

Время изучения: 19 мин

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.
cui=1+αrui,pui=1[rui>0]c_{ui} = 1 + \alpha r_{ui}, \quad p_{ui} = \mathbb{1}[r_{ui} > 0]

Идея 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 не доминировали.

На собесе

Хороший ответ: “Implicit feedback много, но он зашумлен и biased. Я бы начал с time split, weighted ALS/BPR baseline, аккуратного negative sampling, recency weighting и обязательной онлайн проверки”.