Какие типы пользовательского фидбэка вы знаете?

«Какие типы пользовательского фидбэка вы знаете?» — вопрос из категории Рекомендательные системы, который задают на 26% собеседований Data Scientist / ML Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В рекомендательных системах пользовательский фидбэк классифицируют по степени явности и формату:

  1. Явный (Explicit Feedback): Прямые оценки, которые пользователь сознательно предоставляет.

    • Примеры: Звёздные рейтинги (1-5), лайки/дизлайки, прямые сравнения (предпочтение A над B).
    • Плюсы: Чётко выражает предпочтение.
    • Минусы: Собирается редко, подвержен bias (оценивают чаще крайне довольные или недовольные).
  2. Неявный (Implicit Feedback): Данные, выводимые из поведения пользователя.

    • Примеры: Просмотры, клики, время сессии, скроллинг, добавление в корзину, покупки.
    • Плюсы: Обильный, собирается пассивно.
    • Минусы: Шумный, требует интерпретации (клик — это «нравится» или просто любопытство?).
  3. Гибридный подход: Комбинирование явного и неявного фидбэка для повышения качества рекомендаций.

    • Техника: Модель factorization machines или нейросетевая архитектура, принимающая на вход оба типа сигналов.
    • Пример: Использовать матрицу просмотров (неявный) для заполнения пропусков в матрице рейтингов (явный).

Практический пример обработки в Python (pandas):

import pandas as pd

# Имитация данных
feedback_data = pd.DataFrame({
    'user_id': [101, 101, 102, 103],
    'item_id': [55, 78, 55, 90],
    'rating': [5, None, 3, None],  # Явный фидбэк (есть пропуски)
    'view_time_sec': [120, 45, 10, 300], # Неявный фидбэк
    'purchased': [1, 0, 0, 1]           # Неявный фидбэк
})

# Создание гибридного сигнала: если рейтинга нет, используем нормализованное время просмотра как его прокси
feedback_data['hybrid_score'] = feedback_data['rating'].combine_first(feedback_data['view_time_sec'] / 100)
print(feedback_data[['user_id', 'item_id', 'hybrid_score']])

Выбор типа фидбэка зависит от домена: для Netflix критичны явные рейтинги, для YouTube — неявные данные о просмотрах.