March 3

Рекомендательные системы для аналитиков, часть 1. Постановка задачи

Вы заходите в онлайн-кинотеатр, чтобы скоротать вечер. Вы не знаете, чего хотите, но спустя пару секунд на экране появляется подборка фильмов, и один из них так и манит нажать кнопку "Смотреть". Это работа сложного алгоритма рекомендаций

Есть два варианта того, как рекомендовать пользователю что-либо:

  1. Предсказать, как пользователь оценит это (конкретное количество "звездочек", которые поставит пользователь)
  2. Просто отранжировать разные варианты от наилучшего к наихудшему

Вообще, предметная область рекомендательных систем очень интересна и обширна:

В этой части статьи мы разберем верхнюю часть картинки

Любая рекомендация начинается с данных. Это топливо, на котором работает система. Всю информацию можно разделить на три больших блока:

1. User (Кто ты?)
Система пытается понять своего пользователя. Она фиксирует статичные характеристики (пол, возраст, страна) и то, как вы себя ведете

2. Item (Что это за штука?)
Система должна понимать, что именно она предлагает. Для этого каждый объект (товар, видео, песня) описывается набором признаков:

  • Название — ну тут понятно
  • Категория — например, Боевики / Комедии
  • Теги — короткие метки: юмор, для подростков, про вампиров
  • Изображение — визуальная информация, которую нейросети тоже умеют смотреть

3. Context (Где и когда это происходит?)
Представьте, что вам предлагают купить теплые перчатки. Летом, в жару, это будет выглядеть глупо, а в декабре — очень кстати. Контекст — это обстоятельства, которые меняют смысл рекомендации. Это время суток, день недели, ваше местоположение (дом, работа, другой город) и даже устройство, с которого вы зашли (с телефона в метро мы листаем ленту иначе, чем с большого компьютера дома).

Итак, у нас есть данные. Но просто знать, что Иван — 30-летний мужчина из Москвы, а фильм Бойцовский клуб имеет теги драма, психология, экшн — недостаточно. Нужно понять, как Иван относится к Бойцовскому клубу. Это и есть обратная связь (feedback).

Обратная связь бывает двух типов:

  1. Явная: что вы говорите системе напрямую. Например, оценка по пятибалльной шкале или дизлайк. Но люди часто ленятся оценивать, поэтому такой информации мало
  2. Неявная: что вы делаете, не задумываясь. Система следит за вашими действиями:
    • Клик: нажали на товар? значит интересно
    • Просмотр: посмотрели трейлер до конца или закрыли через 5 секунд?
    • Покупка: самый сильный сигнал — вы проголосовали рублем
    • Избранное: отложили на потом — значит зацепило

Соединяя данные о пользователе, товаре и контексте с его реакцией, система учится предсказывать предпочтения

Однако не всё так просто, у рекомендательных систем есть куча проблем:

  1. Информационные пузыри — персонализированая фильтрация информации ведет к замыканию пользователя на логически связанных между собой айтемах. Пользователь не увидит того, что не было в поле его интересов ранее
  2. Приватность — защита от утечек персональных данных пользователей
  3. Безопасность — защита от использования слабых мест рекомендательных систем (так называемых атак на модель). Самая популярная и простая атака: накрутка отзывов
  4. Холодный старт — проблемы с новыми элементами системы:
      • Новый пользователь еще не взаимодействовал с айтемами - что ему показывать?
      • Новым айтемом еще никто не пользовался - кому его рекомендовать?
  5. Bias (смещение) — возникает, когда алгоритмы отдают предпочтение определённым группам из-за искажений данных. Например, если в базе данных сервиса много данных по деловым брюкам и мало по джинсам, в общем брюки будут более популярны, и система при добавлении новой модели джинс решит, что они никому не нравятся, и будет показывать их в самом низу. До джинс никто не будет долистывать, и система таким образом получает "доказательство", что джинсы никому не нравятся. Замкнутый круг
  6. Fairness (справедливость) — равное отношение к разным группам пользователей без дискриминации по демографии, полу или другим признакам. Проблема проявляется в демографическом смещении, когда рекомендации хуже для определённых подгрупп (например, по возрасту или нации)
    Первое, на что обращают внимание — как именно достигается справедливость. Здесь выделяют два принципиально разных подхода:
    • Справедливость процесса — это про честность правил игры. Представьте, что система оценивает кандидатов на вакансию. Если алгоритм использует только релевантные признаки (образование, опыт) и игнорирует пол или расу, то сам процесс принятия решения можно считать справедливым. Неважно, кто в итоге получит работу — главное, что ко всем применялись одинаковые критерии.
    • Справедливость результата — здесь мы смотрим на финальный расклад. Даже если процесс был идеален, результат может оказаться несправедливым. Например, рекомендательная система в интернет-магазине может показывать дорогие товары только жителям богатых районов, потому что у них выше покупательная способность. С точки зрения процесса всё честно (алгоритм просто максимизирует прибыль), но результат нас не устраивает

В случае, если мы ориентируемся на справедливость результата, мы должны продумать две вещи:

  1. Кого конкретно мы защищаем?
  2. Какие методы используем для защиты?

Подробности ответа на эти вопросы — прям техничная техника, поэтому в этой статье не будем их рассматривать. Если вам интересно погрузиться, можн воспользоваться этой схемой: