Feature Store и фичи для RecSys
Пользовательские, айтемные, контекстные фичи. Feast, онлайн/оффлайн фичи.
Feature Store — признаки для рекомендаций
Загрузка интерактивного виджета...
Модель ранжирования без признаков — как повар без ингредиентов. В рекомендациях признаки делятся на три группы: пользовательские (кто), айтемные (что) и контекстные (когда и где). Feature Store — централизованное хранилище, чтобы признаки были одинаковыми при обучении и на проде.

Три типа признаков в RecSys
- Пользовательские: возраст, город, история покупок за 7/30/90 дней, средний чек
- Айтемные: категория, цена, рейтинг, кол-во просмотров, дата добавления
- Контекстные: время суток, день недели, устройство, геолокация
- Кросс-признаки: CTR пользователя в этой категории, был ли айтем в корзине
Онлайн vs офлайн признаки
Офлайн — считаются раз в час/день пакетно (среднее за 30 дней, профиль пользователя). Онлайн — считаются в реальном времени (что кликнул 5 секунд назад, текущая сессия). Онлайн сильнее, но дороже в инфраструктуре.
Training-serving skew — проблема №1
Feature Store: Feast и альтернативы
Feast — опенсорсный Feature Store. Хранит определения признаков (feature definitions), офлайн данные в файлах/BigQuery, онлайн данные в Redis. Модель запрашивает нужные признаки по entity_id — Feast отдаёт актуальные значения.
from feast import FeatureStore
store = FeatureStore("feature_repo/")
# Получить признаки для пользователей 1, 2, 3
features = store.get_online_features(
features=["user_stats:avg_order_7d", "user_stats:total_orders"],
entity_rows=[{"user_id": 1}, {"user_id": 2}]
).to_dict()Какие признаки дают максимум в RecSys
По опыту крупных RecSys — самые сильные признаки: 1) статистики взаимодействий пользователя за разные окна (7д, 30д, 90д), 2) CTR пользователя в категории, 3) «свежесть» айтема, 4) позиция при последнем показе.
Совет для system design
🎯 Суть для собеса