Типы рекомендаций

Урок раскладывает рекомендации по типам: персональные, похожие товары, популярное и «вместе покупают» — и объясняет, где каждый уместен.

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

Четыре базовых сценария

На любой витрине вы встретите несколько разных блоков рекомендаций, и каждый решает свою задачу.

  • Персональные («для вас») — лента, подобранная под конкретного человека по всей истории его поведения. Самый сложный и ценный тип.
  • Похожие товары («с этим смотрят») — отталкиваются от одного объекта: вы открыли товар — система показывает родственные. Не требует знать пользователя.
  • Популярное («в тренде») — общий топ без персонализации. Простой, надёжный baseline и спасение при холодном старте.
  • «Вместе покупают» (cross-sell) — товары, которые часто оказываются в одной корзине. Работает на со-встречаемости.

Где какой тип уместен

ТипКогда нужен пользовательПример
ПерсональныеДа, нужна историяГлавная страница Netflix
Похожие товарыНет, нужен товар-якорьКарточка товара
ПопулярноеНетВитрина для новичка
Вместе покупаютНет, нужна корзина/товарКорзина магазина

«Вместе покупают» на практике

Этот тип легко реализуется через подсчёт со-встречаемости в корзинах. Для каждого товара мы считаем, какие другие товары чаще всего попадали с ним в одну покупку.

from collections import Counter, defaultdict

baskets = [
    ["хлеб", "молоко", "масло"],
    ["хлеб", "молоко"],
    ["хлеб", "пиво", "чипсы"],
    ["молоко", "масло"],
    ["пиво", "чипсы", "орехи"],
    ["хлеб", "молоко", "сыр"],
]
co = defaultdict(Counter)
for b in baskets:
    for a in b:
        for c in b:
            if a != c:
                co[a][c] += 1

print("С хлебом чаще всего берут:")
for item, c in co["хлеб"].most_common(3):
    print(f"  {item}: {c}")

Вывод:

С хлебом чаще всего берут:
  молоко: 3
  масло: 1
  пиво: 1

Как работает под капотом

Разные блоки часто питаются разными моделями. «Похожие товары» и «вместе покупают» можно строить вообще без знания пользователя — это item-to-item рекомендации, дешёвые и стабильные. Персональная лента, наоборот, требует модель предпочтений конкретного человека. Продакшн-система обычно сочетает несколько источников и展ляет их в разных местах интерфейса.

Частые ошибки

  • Путать «похожие» и «вместе покупают». Похожие — это заменители (две похожие книги), вместе покупают — дополнения (телефон и чехол). Показывать чехол как «похожее на телефон» — ошибка.
  • Везде ставить персонализацию. На карточке товара пользователь думает об этом товаре, и блок «похожее» уместнее персональной ленты.
  • Забывать про популярное. Это самый дешёвый и устойчивый блок, который всегда есть что показать.

Итоги

  • Основные типы: персональные, похожие товары, популярное, «вместе покупают».
  • Похожие — это заменители, «вместе покупают» — дополнения; путать нельзя.
  • Item-to-item рекомендации не требуют профиля пользователя и стабильны.
  • Реальная витрина комбинирует несколько типов в разных местах.
Проверьте себя
1. Блок «похожие товары» показывает прежде всего:
AДополнения к товару (чехол к телефону)
BЗаменители — родственные товары той же категории
CСамые дорогие товары каталога
DСлучайные товары
2. Какой тип рекомендаций лучше всего работает при полном отсутствии данных о пользователе?
AПерсональная лента
BПопулярное
CГлубокая нейросеть на истории
DМатричное разложение