Вечером пользователь запускает плейлист, а утренний бодрый бит вдруг сменяется меланхоличным инди — сервис «угадывает» смену вайба. Почему же в вашей продуктовой ленте по-прежнему сухой рейтинг? Алгоритмы с вайб-фактором обещают рекомендовать так, будто они чувствуют настроение. В статье покажу рабочий конструктор, который вы подключите за спринт и не нарушите SLA.

  • Эмоция как фича: где взять implicit-сигналы без камеры.
  • Три слоя модели: контекст, настроение, бизнес-метрика.
  • Fast-update buffer — как не перевучивать модель каждый день.
  • Гармонизация тонов: корректируем cold start через симиляры.

Почему сейчас «настроенческие» рекомендации — не роскошь?

В 2025-м пользователь сидит в трёх экранах и меняет контекст каждые две минуты. Если рекомендация попадает в эмоциональный резонанс, CTR растёт на 18 % (по данным внутреннего теста Mediamix, май 2025). Не успели — получаете swipe-fatigue. Значит, алгоритм должен знать не только вкус, но и вайб.

Суть подхода в трёх шагах:

  1. Собираем мягкие поведенческие признаки (scroll speed, громкость, тайм-ауты).
  2. Превращаем их в «эмо-векторы» через компактную RNN-эмбеддинг-сетку.
  3. Сливаем с классическими фичами и подаём в LightGBM-ранжир.

# Базовый конвейер PySpark + PyTorch Lightning ≤ 30 строк

python
import pyspark.sql.functions as F
from pyspark.ml.feature import VectorAssembler
from lightning import LightningModule


# 1. сбор мягких сигналов

python
df = events.select('user', 'item', 'scroll', 'volume', 'pause')


# 2. эмбеддинги настроения

python
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. объединяем

python
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 ЛОКАЛЬНО НА СВОЕМ КОМПЬЮТЕРЕ
ЧТО БУДЕТ НА ОБУЧЕНИИ?
  • ПОКАЖЕМ, КАК РАЗВЕРНУТЬ МОДЕЛЬ DEEPSEEK R1 ПРЯМО НА СВОЁМ КОМПЬЮТЕРЕ
  • Где и как применять? Потестируем модель после установки на разных задачах
  • Как дообучить модель под себя?

Как собирать эмо-сигналы, не нарушая GDPR?

Повествовательный абзац: В стартапе MoodCart ребята хотели камера-трекинг, но юристы вспотели. Тогда команда ушла в «цифровые крошки» — микропаузы перед play, долю пропуска, скорость скролла. Эти данные хранятся в логах, а на разрешения пользователь уже согласился.

Список действий:

  1. Включите client-side таймеры для пауз > 300 мс.
  2. Запишите громкость и skip-rate раздельно.
  3. Отправляйте batched events раз в 10 сек, не real-time.

— Источник ClickHouse

sql
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-мерный вектор «спокойствие-энергичность-ностальгия».

Список действий:

  1. Нормируйте каждую фичу в [0,1].
  2. Складывайте десятисекундные окна в последовательность.
  3. RNN-эмбеддинг → t-SNE визуализация для sanity-чека.
  4. Добавляйте в фичи main-модели.

# t-SNE для дебага

python
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 минут.

Список действий:

  1. Храните последние 500 событий в Redis.
  2. Раз в 600 сек чините веса буфера SGD-ом.
  3. На проде конкатенируйте скор буфера и основного ранкера.

graph TD;
MainModel —>|daily batch| Serving;
RealtimeEvents —> BufferModel;
BufferModel —>|merge score| Serving;

Мини-вывод: micro-fine-tune дешевле полного retrain и ловит mood-shift за минуты.

Гармонизация холодного старта через семантических соседей

История: Новый пользователь Олег слушает lo-fi для сна, но каталога мало. Мы строим «семейство вайба»: ищем items с близким эмбеддингом настроения и жанра.

Список действий:

  1. Генерируйте Annoy-индекс по emo-вектору.
  2. При cold start берите top-50 соседей.
  3. Усредняйте их жанровые 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-слой, вы получите гибкую систему, которая адаптируется быстрее конкурентов.

РОССИЙСКИЕ НЕЙРОСЕТИ ДЛЯ ЖИЗНИ И КАРЬЕРЫ В 2025
Присоединяйся к онлайн-вебинару.
В прямом эфире разберем и потестируем лучшие на сегодняшний день отечественные ИИ!
Вы узнаете о том:
  • Выполним базовые задачи на российских нейросетях и посмотрим на результаты!
  • PDF-инструкцию «Как сделать нейрофотосессию из своего фото бесплатно, без иностранных карт и прочих сложностей»
  • Покажем 10+ способов улучшить свою жизнь с ИИ каждому — от ребенка и пенсионера до управленца и предпринимателя
Участвовать бесплатно
ОБЗОРНЫЙ ПРАКТИКУМ ПО НАШУМЕВШИМ НЕЙРОСЕТЯМ
DEEPSEEK И QWEN
За 2 часа сделаем полный обзор новых мощных AI-моделей, которые бросают вызов ChatGPT
Вы узнаете:
  • Возможность получить Доступ в Нейроклуб на целый месяц
  • Как AI ускоряет работу и приносит деньги
  • За 2 часа вы получите четкий план, как начать работать с AI прямо сейчас!
Участвовать бесплатно