Типы рекомендаций
Урок раскладывает рекомендации по типам: персональные, похожие товары, популярное и «вместе покупают» — и объясняет, где каждый уместен.
Тип рекомендации — это сценарий, в котором система отвечает на конкретный вопрос пользователя: «что мне посмотреть», «что похоже на это» или «что обычно берут вместе».
Четыре базовых сценария
На любой витрине вы встретите несколько разных блоков рекомендаций, и каждый решает свою задачу.
- Персональные («для вас») — лента, подобранная под конкретного человека по всей истории его поведения. Самый сложный и ценный тип.
- Похожие товары («с этим смотрят») — отталкиваются от одного объекта: вы открыли товар — система показывает родственные. Не требует знать пользователя.
- Популярное («в тренде») — общий топ без персонализации. Простой, надёжный 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 рекомендации не требуют профиля пользователя и стабильны.
- Реальная витрина комбинирует несколько типов в разных местах.