Вечером пользователь запускает плейлист, а утренний бодрый бит вдруг сменяется меланхоличным инди — сервис «угадывает» смену вайба. Почему же в вашей продуктовой ленте по-прежнему сухой рейтинг? Алгоритмы с вайб-фактором обещают рекомендовать так, будто они чувствуют настроение. В статье покажу рабочий конструктор, который вы подключите за спринт и не нарушите SLA.
- Эмоция как фича: где взять implicit-сигналы без камеры.
- Три слоя модели: контекст, настроение, бизнес-метрика.
- Fast-update buffer — как не перевучивать модель каждый день.
- Гармонизация тонов: корректируем cold start через симиляры.
Почему сейчас «настроенческие» рекомендации — не роскошь?
В 2025-м пользователь сидит в трёх экранах и меняет контекст каждые две минуты. Если рекомендация попадает в эмоциональный резонанс, CTR растёт на 18 % (по данным внутреннего теста Mediamix, май 2025). Не успели — получаете swipe-fatigue. Значит, алгоритм должен знать не только вкус, но и вайб.
Суть подхода в трёх шагах:
- Собираем мягкие поведенческие признаки (scroll speed, громкость, тайм-ауты).
- Превращаем их в «эмо-векторы» через компактную RNN-эмбеддинг-сетку.
- Сливаем с классическими фичами и подаём в LightGBM-ранжир.
# Базовый конвейер PySpark + PyTorch Lightning ≤ 30 строк
import pyspark.sql.functions as F
from pyspark.ml.feature import VectorAssembler
from lightning import LightningModule
# 1. сбор мягких сигналов
df = events.select('user', 'item', 'scroll', 'volume', 'pause')
# 2. эмбеддинги настроения
class VibeRNN(LightningModule):
def __init__(self, feat_dim=5, hid=32):
super().__init__()
self.rnn = torch.nn.GRU(feat_dim, hid, batch_first=True)
def forward(self, x):
_, h = self.rnn(x)
return h.squeeze(0)
# 3. объединяем
df = df.groupBy('user', 'item').agg(F.avg('scroll').alias('scroll_mean'), ...)
assembler = VectorAssembler(inputCols=[...], outputCol='features')
model = lgb.LGBMRanker(num_leaves=64, learning_rate=0.05)
Сделайте так — и модель начнёт «чувствовать» темп пользователя.
Мини-вывод: вайб-фактор повышает CTR без дорогостоящих эмо-сенсоров.

- ПОКАЖЕМ, КАК РАЗВЕРНУТЬ МОДЕЛЬ DEEPSEEK R1 ПРЯМО НА СВОЁМ КОМПЬЮТЕРЕ
- Где и как применять? Потестируем модель после установки на разных задачах
- Как дообучить модель под себя?
Как собирать эмо-сигналы, не нарушая GDPR?
Повествовательный абзац: В стартапе MoodCart ребята хотели камера-трекинг, но юристы вспотели. Тогда команда ушла в «цифровые крошки» — микропаузы перед play, долю пропуска, скорость скролла. Эти данные хранятся в логах, а на разрешения пользователь уже согласился.
Список действий:
- Включите client-side таймеры для пауз > 300 мс.
- Запишите громкость и skip-rate раздельно.
- Отправляйте batched events раз в 10 сек, не real-time.
— Источник ClickHouse
CREATE TABLE vibe_events AS
SELECT user_id, item_id, scroll_speed, aud_volume, pause_ms
FROM raw_front_logs
WHERE event IN ('scroll', 'pause', 'volume');
Мини-вывод: всё нужное уже в лог-потоке — просто выньте это.
Как превратить «сырые» клики в настроения?
История: Представьте диджея, который слушает скорость танцев толпы. Он не спрашивает «вам грустно?», он считывает энергетику. Алгоритм действует так же, конвертируя клики в 3-мерный вектор «спокойствие-энергичность-ностальгия».
Список действий:
- Нормируйте каждую фичу в [0,1].
- Складывайте десятисекундные окна в последовательность.
- RNN-эмбеддинг → t-SNE визуализация для sanity-чека.
- Добавляйте в фичи main-модели.
# t-SNE для дебага
from sklearn.manifold import TSNE
vibes = VibeRNN()(seq_batch).detach().numpy()
proj = TSNE(n_components=2).fit_transform(vibes)
Мини-вывод: эмбеддинг-слой учится дешево, но даёт качественный signal-boost.
Точки скучковались, будто вечеринка нашла свои зоны.
Нужно ли пересобирать модель при каждом перепаде настроения?
История: Когда Spotify ввёл Daily-Mix, они столкнулись с «дрейфом настроения»: утром пользователи жаловались на «ночные» треки. Решение — fast-update buffer: мелкая LightFM-модель поверх главной, обучаемая каждые 10 минут.
Список действий:
- Храните последние 500 событий в Redis.
- Раз в 600 сек чините веса буфера SGD-ом.
- На проде конкатенируйте скор буфера и основного ранкера.
graph TD;
MainModel —>|daily batch| Serving;
RealtimeEvents —> BufferModel;
BufferModel —>|merge score| Serving;
Мини-вывод: micro-fine-tune дешевле полного retrain и ловит mood-shift за минуты.
Гармонизация холодного старта через семантических соседей
История: Новый пользователь Олег слушает lo-fi для сна, но каталога мало. Мы строим «семейство вайба»: ищем items с близким эмбеддингом настроения и жанра.
Список действий:
- Генерируйте Annoy-индекс по emo-вектору.
- При cold start берите top-50 соседей.
- Усредняйте их жанровые one-hot и CTR-скор.
annoy-build 128 vibe_vectors.ann —metric angular —trees 50
Мини-вывод: соседские вайбы помогают сгладить пустоту каталога.
> Запустите пилот на 5 % трафика уже в следующем спринте и сравните uplift — данные удивят команду.
Чек-лист внедрения вайб-фактора
| Шаг | Действие | Готовность |
| Logs | Scroll, volume, pause в raw-поток | ☐ |
| Emo-RNN | Обучена на 2 неделях истории | ☐ |
| t-SNE | Визуально кластеры стабильны | ☐ |
| Buffer | Redis + LightFM на 10 мин cron | ☐ |
| A/B | Metric uplift ≥ +5 % CTR | ☐ |
Что важно вынести?
Алгоритмы с вайб-фактором добавляют тонкое чувство настроения без инвазивных сенсоров и дорогого GPU-обучения. Подключив мягкие логи и лёгкий RNN-слой, вы получите гибкую систему, которая адаптируется быстрее конкурентов.
- Выполним базовые задачи на российских нейросетях и посмотрим на результаты!
- PDF-инструкцию «Как сделать нейрофотосессию из своего фото бесплатно, без иностранных карт и прочих сложностей»
- Покажем 10+ способов улучшить свою жизнь с ИИ каждому — от ребенка и пенсионера до управленца и предпринимателя
- Возможность получить Доступ в Нейроклуб на целый месяц
- Как AI ускоряет работу и приносит деньги
- За 2 часа вы получите четкий план, как начать работать с AI прямо сейчас!