惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

爱范儿
爱范儿
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
G
GRAHAM CLULEY
www.infosecurity-magazine.com
www.infosecurity-magazine.com
V2EX - 技术
V2EX - 技术
The Last Watchdog
The Last Watchdog
S
Secure Thoughts
Webroot Blog
Webroot Blog
PCI Perspectives
PCI Perspectives
L
LINUX DO - 最新话题
Hacker News: Ask HN
Hacker News: Ask HN
N
News and Events Feed by Topic
H
Heimdal Security Blog
H
Help Net Security
T
The Blog of Author Tim Ferriss
P
Proofpoint News Feed
The GitHub Blog
The GitHub Blog
Jina AI
Jina AI
Recent Commits to openclaw:main
Recent Commits to openclaw:main
F
Full Disclosure
小众软件
小众软件
S
Securelist
罗磊的独立博客
NISL@THU
NISL@THU
D
Darknet – Hacking Tools, Hacker News & Cyber Security
C
Cisco Blogs
云风的 BLOG
云风的 BLOG
C
CERT Recently Published Vulnerability Notes
Cisco Talos Blog
Cisco Talos Blog
Know Your Adversary
Know Your Adversary
S
Schneier on Security
D
DataBreaches.Net
M
MIT News - Artificial intelligence
V
Vulnerabilities – Threatpost
N
News and Events Feed by Topic
有赞技术团队
有赞技术团队
F
Fortinet All Blogs
T
Tenable Blog
The Register - Security
The Register - Security
C
Check Point Blog
AWS News Blog
AWS News Blog
Cloudbric
Cloudbric
C
CXSECURITY Database RSS Feed - CXSecurity.com
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
C
Cyber Attacks, Cyber Crime and Cyber Security
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Google Online Security Blog
Google Online Security Blog
博客园 - 叶小钗
Hacker News - Newest:
Hacker News - Newest: "LLM"
博客园 - 司徒正美

Все публикации подряд на Хабре

Ловим музу за клавиатуру: как айтишнику стать автором Что умеет Midjourney в 2026? Мой немного грустный разбор этого шикарного инструмента Никто не любит писать тесты, но ИИ может исправить это IPv8 выглядит как мечта. Поэтому почти наверняка не взлетит Производители вернули в продажу материнки с DDR3. Что происходит? Управление агентом с телефона через Telegram теперь в KodaCode От координации к лидерству: как меняется роль руководителя разработки Я сделала родителям бизнес вместо пенсии: зарабатываем 70 тысяч, мама не даёт продать В три раза быстрее приемка товара и оптимизация трудозатрат на 73%: как «РСТ-Инвент» помог Gulliver Group ИИ-шечный мир победил? О влиянии искусственного интеллекта на игропром Кремль снижает давление на Телеграмм пока Европа строит интернет по паспорту Как CEO, CTO и CIO за 8 часов собрали ИИ-директора, который умеет держать позицию под давлением Как (не) потерять домен за выходные Вместо 8 разных VPS: как я организовал практику студентам на одном сервере Почему твой Open Source проект не замечают? R&D: искусство управления неопределенностью в разработке AI-дефляция: вакансий для разработчиков больше, а рост зарплат — худший за 15 лет Мы отдали управление роботами OpenClaw. Что из этого вышло Галактический ID: система идентификации для всех форм разумной жизни Шесть основ бизнес-анализа: начинаем с вопроса «Кто в игре?» Код-ревью, в котором дело не в коде Данные переехали. Команда — нет Системной подход к сдаче OSWE в 2025 Почему комната управления реактором покрашена в цвет морской пены 4 YAML-файла вместо PySpark: как аналитикам строить пайплайны без разработчиков LLM-агент для поиска свободных доменов: автоматизируем подбор Когда, зачем и как правильно начинать новую сессию в Claude Code? Как я заставил нейросеть писать макросы для FreeCAD Анатомия ИИ‑агента для подбора персонала. От тысячи резюме к топ‑10 за минуты Опыт разработчика как экономика внимания Автономность как точка невозврата: кто будет субъектом в цифровом будущем Обучение ИИ в «диких» условиях: как рутинные действия превращаются в датасеты Как измерить LLM для задач кибербеза: обзор открытых бенчмарков Где хранить код? Сравнение GitHub, GitLab и Bitbucket Математика объясняет, почему нормальное распределение встречается повсюду Почему ваш FinOps не работает: 12 тезисов от практиков Как подписать проектную документацию УКЭП с использованием бесплатных лицензий Pilot Адаптивное администрирование Sigla Vision Я грузил уран в бочки, а потом 20 лет строил ИТ в атомной отрасли Чем позвонить с Эвереста? История и обзор спутниковой связи. Часть 2 Как языковая модель помогает контролировать качество инструктажей по охране труда в металлургии Как не передать на desktop свой IP в РКН Анатомия SAP Privileges: как устроено управление правами в macOS MoneyDev: Сказка про три главных слова Обновлённый токенизатор видео K-VAE 2.0 от Сбера Как сделать диспетчеризацию дома на 1284 квартиры почти бесплатно Как мы разогнали железную дорогу Мы дали агентам рутину. Теперь надо решить — что делать с освободившимся временем Токсичный контент, промпт-хакинг и защита ИИ — всё о Guardrails для LLM Умный город начинается с точного взгляда: как «Фалькон Тех» меняет пространство к лучшему Навайбкодил приложение для анализа графов Почему Дюну так интересно читать? Упрощаем работу с рутиной или как стать Гендальфом Белым Деконструкция Go: CPU, RAM и что там происходит. Go Assembler база. Часть 1.1 Какие профессии исчезнут из-за ИИ, а какие появятся? И что с этим делать Как мы построили IT-отдел, где хочется расти: архитектурные встречи, прозрачные метрики и книжные подарки Rufler: Делаем из Claude Code автономный рой через один YAML-конфиг Sing-box и белый список приложений Как построить надёжный обмен сообщениями в микросервисах: лучшие практики для enterprise OpenAI строит MLM-пирамиду, а McKinsey и Accenture помогают ей в этом Дом, который не построил Фишер (Часть 2) «Сверхзвуковой математик» против «Вдумчивого логиста»: битва алгоритмов 3D-упаковки Мультимодальные модели – грубый и дорогой инструмент Разговоры ничего не стоят. Код тоже Проверки физических лиц: с кого начнет ФНС Топ-10 бесплатных нейросетей для создания видео в 2026 году Первые слои кода: как наши решения сегодня определяют архитектуру ИИ на десятилетия Разработка нового статического анализатора: PVS-Studio JavaScript Поиск уязвимостей ПО: базовый минимум или роскошный максимум Почему оценка персонала не работает как инструмент управления Как мы разработали ИИ-ассистента и сократили рутину продуктовой команды на 50% Как я ушел из найма, нажарил косточек и продал на маркетплейсах на 168 млн в год Когда 1С:ERP уже внедрена, а нормального производственного плана всё ещё нет Как я сделал Claude мультимодальным, подключив к нему Qwen Omni Как приглашение на вакансию мечты превращается в атаку Infrastructure as Code: философия и лучшие практики IaC Тестируем Yandex Code Assistant на задаче, в которой нужно хранить секреты nxs-universal-chart v3.0: новое поколение универсального Helm-чарта Callback Injection: Техника, которая отправила Microsoft Defender в глухой нокаут «Все идеи на стол»: митап как способ вывести проект из тупика Сегодня я узнал нечто новое о GPU благодаря багу в своей игре Как заставить LLM ̶ ̶г̶а̶л̶л̶ю̶ ̶ эволюционировать Карта событий как фундамент аналитики: практический кейс для E-commerce Что выбрать для AI: x86, ARM или RISC-V? Дайджест железа за март Роль соматических мутаций в развитии аутоиммунных заболеваний: путь к избирательной терапии Mythos от Anthropic — тревожный сигнал для всех, а не только для банков Guardrails для LLM на Java: как приручить промпт‑инъекции и токсичные ответы Green-VLA: как мы собрали VLA-модель для реального антропоморфного робота и не потеряли обобщение Финансовая гонка вооружений: почему умные люди добровольно в ней участвуют Эра ИИ-агентов наступила: выбираем лучшего цифрового сотрудника # Практический опыт внедрения WinCC Redundancy на производственном предприятии Сделал MVP за 3 дня, а потом неделю прикручивал оплату. Оно того стоило? Физика против Маска: почему Starship V3 может оказаться ещё одной катастрофой Нефть Венесуэлы: крупнейшие запасы в мире, но не крупнейшая нефтяная держава JPA 4. Переосмысление Hibernate Почему зеркальная фотокамера Nikon D5 десятилетней давности идеально подошла для миссии «Артемида-2» Проект «Уровень-Спутник» или как мы сделали платформу для гидрологов «Замедлиться, чтобы ускориться»: почему ИИ повышает цену ошибок в требованиях и архитектуре Как с нуля поднять трафик IT-компании на 1657% при бюджете 55 тыс. и выжить Pixel-perfect Downsampling — идеальная отрисовка 50 миллионов точек без потерь
Как мы анализировали поведение пользователей Яндекс Музыки на 50 млн событий
Moxovich · 2026-05-26 · via Все публикации подряд на Хабре

Уровень сложностиСредний

Время на прочтение12 мин

Охват и читатели4.4K

Аналитика

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

В рамках курсового проекта по дисциплине «Наука о данных и аналитика больших объемов информации» мы поставили цель исследовать поведение пользователей музыкального стриминга на основе открытого датасета Yambda и сравнить органическое и рекомендательное потребление музыки.

Ключевая особенность набора данных — наличие признака is_organic. Он показывает, каким образом пользователь дошёл до трека:

  • is_organic = True — пользователь сам нашёл трек;

  • is_organic = False — трек был предложен рекомендательной системой.

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

 Общая схема исследования

Общая схема исследования

Почему выбрали Яндекс.Музыку и Yambda

Для анализа использовался открытый датасет Yambda, опубликованный Яндексом. В проекте рассматривались события взаимодействия пользователей с музыкальным сервисом: прослушивания, лайки, дизлайки и отмены реакций. По структуре данных этот набор хорошо подходит для задач анализа больших данных, так как содержит большой объём событий и позволяет исследовать как статистические показатели, так и скрытые поведенческие закономерности.

Характеристики датасета

Характеристики датасета

В работе использовались следующие основные файлы датасета:

Файл

Содержание

Ключевые поля

listens.parquet

события прослушивания

uid, item_id, timestamp, is_organic, played_ratio_pct, track_length_seconds

likes.parquet

лайки пользователей

uid, item_id, timestamp, is_organic

dislikes.parquet, unlikes.parquet, undislikes.parquet

обратная связь пользователей

uid, item_id, timestamp, is_organic

artist_item_mapping.parquet

связь треков с артистами

item_id, artist_id

album_item_mapping.parquet

связь треков с альбомами

item_id, album_id

embeddings.parquet

аудио-эмбеддинги треков

item_id, embed, normalized_embed

При этом у датасета есть важные ограничения. В нём нет имён артистов, названий треков, альбомов и жанровых меток. Все сущности представлены числовыми идентификаторами. Также временные метки не являются реальными календарными датами, а представляют собой смещение от начала наблюдений. Это сделано для анонимизации данных и защиты пользователей.

Из‑за отсутствия названий артистов и треков в проекте были введены условные обозначения:

  • A1, A2, A3,... — артисты, отсортированные по глобальной популярности;

  • T1, T2, T3,... — треки, отсортированные по глобальной популярности.

То есть A1 — самый популярный артист в датасете, но его реальное имя неизвестно.

Постановка задач анализа

Аналитические задачи

Аналитические задачи

Курсовой проект предполагает не только обработку данных, но и формулирование набора аналитических задач, построение программной архитектуры, хранение данных, обработку и визуализацию результатов [3]. В нашем случае проект был разделён на семь задач:

  1. анализ динамики органического и рекомендательного потребления по месяцам;

  2. анализ сессионной активности пользователей;

  3. выявление музыкальных сообществ на основе совместных лайков;

  4. оценка влияния рекомендаций на разнообразие музыкального кругозора;

  5. анализ временных паттернов потребления;

  6. построение сообществ артистов по совместному прослушиванию;

  7. прогнозирование оттока пользователей на основе поведенческих признаков.

Такой набор задач позволяет посмотреть на рекомендательную систему с разных сторон: через объём потребления, качество прослушивания, разнообразие, графовые связи между артистами и вероятность ухода пользователя.

Архитектура и стек технологий

Проект реализован на Python. Основной акцент был сделан на обработку больших объёмов данных без полной загрузки датасета в оперативную память. Для этого использовались инструменты, подходящие для аналитических нагрузок и пакетной обработки.

Архитектура

Архитектура

Основной стек:

  • Polars — быстрая обработка табличных данных и ленивые вычисления;

  • DuckDB — аналитические SQL‑запросы, агрегаты и self‑join без полной загрузки данных в RAM;

  • NetworkX и python‑louvain — построение графов и поиск сообществ;

  • scikit‑learn — модели машинного обучения для прогноза оттока;

  • UMAP — снижение размерности аудио‑эмбеддингов;

  • Matplotlib / Seaborn — визуализация результатов.

В качестве аналитической базы использовалась DuckDB. В отличие от классических транзакционных СУБД, таких как PostgreSQL или MySQL, DuckDB хорошо подходит для локальной аналитики, тяжёлых агрегаций и колоночной обработки. В рамках проекта это оказалось полезно, потому что данные не помещались в память целиком, а часть задач требовала выполнять группировки, соединения и расчёты по десяткам миллионов событий.

Структура базы данных

Структура базы данных

Особенности реализации:

  • данные обрабатываются потоково;

  • тяжёлые задачи разбиваются на чанки по пользователям;

  • для графовых задач применяются предварительные фильтры, чтобы избежать взрывного роста числа рёбер;

  • во всех стохастических операциях, где это возможно, фиксируется random_state;

  • результаты сохраняются в data/results/ в виде PNG-графиков.

Структура проекта:

src/
  config.py              — параметры пайплайна
  rank_labels.py         — построение справочника A_k / T_k
  tasks/                 — 7 аналитических задач

scripts/
  download_data.py       — скачивание данных
  prepare_db.py          — подготовка локальных parquet
  run_all.py             — запуск всех задач

data/
  raw/                   — исходные данные
  processed/             — промежуточные агрегаты
  results/               — итоговые графики

Задача 1. Динамика органического и рекомендательного потребления

Первая задача была статистической. Мы анализировали, как меняется количество прослушиваний по месяцам, как распределяются органические и рекомендательные события, а также как отличаются скипы и полные прослушивания.

 Динамика органического и рекомендательного потребления по месяцам

Динамика органического и рекомендательного потребления по месяцам

Основной результат оказался довольно интересным: за 24 месяца количество событий выросло примерно с 6,4 млн до 9,1 млн, то есть примерно на 41%. При этом рекомендации в финальном месяце формировали около половины всего трафика.

Но ещё важнее другое: рекомендательные прослушивания скипались реже, чем органические. В финальном месяце скип‑рейт у рекомендаций составил около 27,6%, а у органики — около 37,6%. Это контринтуитивный результат: можно было ожидать, что самостоятельно найденные треки будут дослушиваться лучше, но данные показывают обратное.

Это может означать, что рекомендательная система достаточно точно подбирает музыку под пользователя. Алгоритм не просто увеличивает количество прослушиваний, а даёт треки, которые пользователь чаще дослушивает.

Задача 2. Сессионная активность пользователей

Во второй задаче мы перешли от отдельных событий к сессиям. Сессия определялась как последовательность действий пользователя, где пауза между событиями не превышает 30 минут.

Для каждой сессии анализировались:

  • длительность;

  • количество событий;

  • медианный процент дослушивания;

  • различия между органическими и рекомендательными сессиями.

анализ сессионной активности пользователей

Анализ сессионной активности пользователей

Результаты показали, что рекомендательные сессии заметно длиннее. Медианная длительность рекомендательной сессии составила около 2250 секунд, а органической — около 1175 секунд. Также в рекомендательных сессиях выше доля полных прослушиваний: примерно 72% против 62% у органики.

Это говорит о том, что рекомендации чаще используются в сценарии длительного фонового прослушивания. Пользователь может включить рекомендательный поток и слушать его дольше, чем набор треков, найденных вручную.

Задача 3. Сообщества на основе совместных лайков

Третья задача была исследовательской. Мы построили граф, где узлы — это артисты или треки, а ребро между ними возникает, если одни и те же пользователи лайкали оба объекта.

Такой подход позволяет выявить скрытые музыкальные сообщества. Если много пользователей лайкают двух артистов одновременно, значит, между ними существует поведенческая связь. Она не обязательно жанровая, потому что жанров в датасете нет, но она отражает реальные предпочтения слушателей.

Граф и матрица сообществ по совместным лайкам

Граф и матрица сообществ по совместным лайкам

Для поиска сообществ использовался алгоритм Louvain. Дополнительно граф очищался от нестабильных связей: если лайк был отменён, такая связь учитывалась осторожнее. В результате было обнаружено несколько плотных сообществ артистов и треков. Например, для артистов были выделены сообщества размером 51, 50 и 19 узлов, а для треков - 70, 68 и 62 узла.

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

Задача 4. Разнообразие музыкального кругозора

Один из главных вопросов проекта: расширяют ли рекомендации музыкальный кругозор пользователя?

Для этого была рассчитана энтропия Шеннона по распределению прослушиваний пользователя. Чем выше энтропия, тем разнообразнее история прослушиваний. Если пользователь слушает одни и те же треки, энтропия низкая. Если слушает много разных треков и артистов, энтропия выше.

Формально показатель можно описать так:

H(p) = −Σ pᵢ · log₂(pᵢ)

где pᵢ - доля i-го трека или артиста в истории пользователя.

Сравнение энтропии органического и рекомендательного потребления

Сравнение энтропии органического и рекомендательного потребления

Результат оказался в пользу рекомендаций. В среднем рекомендательные прослушивания повышают энтропию примерно на 1,4 бита. Для треков показатель вырос с 8,04 до 9,43 бит, а для артистов — с 6,44 до 7,75 бит.

Это означает, что рекомендации не просто закрепляют пользователя в привычном наборе артистов, а действительно расширяют его музыкальное потребление.

Интересно и то, что эффект сохраняется на разных уровнях активности. Пользователи с высокой активностью ожидаемо имеют более разнообразную историю, но внутри каждого квартиля активности рекомендательная энтропия всё равно выше органической.

Задача 5. Временные паттерны потребления

Пятая задача была посвящена временным закономерностям. Мы построили тепловые карты по часам и дням, чтобы понять, как меняется активность и качество прослушивания во времени.

Тепловые карты временных паттернов

Тепловые карты временных паттернов

Однако здесь важно учитывать ограничение датасета: временные метки в Yambda не являются реальными календарными датами. Поэтому обычные суточные циклы интерпретировать напрямую нельзя. Глобальная тепловая карта получилась почти равномерной, и это скорее особенность анонимизации, чем реальный вывод о поведении пользователей.

Зато полезным оказался анализ жизненного цикла пользователя. В первый день активности пользователь слушает музыку значительно интенсивнее, а затем активность снижается и стабилизируется. Также было видно, что рекомендательные прослушивания в среднем дослушиваются лучше: примерно на 10 процентных пунктов выше по played_ratio.

Задача 6. Сообщества артистов по совместному прослушиванию

Шестая задача похожа на анализ совместных лайков, но вместо лайков использовались прослушивания. Связь между артистами появлялась, если один пользователь слушал их в один день.

Это позволяет выявить не только то, что пользователи явно лайкают, но и то, что они реально слушают рядом друг с другом. Такие связи могут быть даже более показательными, потому что лайк — это отдельное осознанное действие, а прослушивание отражает повседневное поведение.

Для проверки найденных сообществ использовались аудио‑эмбеддинги треков. Сначала эмбеддинги треков усреднялись до уровня артиста, затем снижалась размерность с помощью UMAP. После этого точки раскрашивались по сообществам Louvain.

Граф ко-прослушиваний и UMAP-валидация сообществ

Граф ко-прослушиваний и UMAP-валидация сообществ

Результат получился неоднозначным и поэтому интересным. Одно небольшое сообщество оказалось акустически отделённым: точки одного цвета держались компактно. Это похоже на реальный жанровый или стилистический кластер. Но два крупных сообщества перемешались в эмбеддинг-пространстве. Это значит, что они являются скорее поведенческими, а не акустическими: люди слушают этих артистов вместе, хотя по звучанию они могут быть разными.

Задача 7. Прогнозирование оттока пользователей

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

Метка оттока была задана искусственно: пользователь считался ушедшим, если у него не было активности в последние 30 дней датасета. Для модели были сформированы признаки трёх групп:

  1. объёмные признаки: число событий, уникальных треков, артистов и альбомов;

  2. поведенческие признаки: доля повторов, средний played_ratio, доля органики, средняя длина трека;

  3. временные признаки: дни с последнего события, интервалы между событиями, активность за последние 7 и 30 дней.

Качество модели оттока и важность признаков

Качество модели оттока и важность признаков

Сравнивались логистическая регрессия и Random Forest. Лучший результат показал Random Forest: ROC-AUC около 0,86. При этом наиболее важным признаком оказались дни с последнего события. Это ожидаемо: если пользователь давно не проявлял активности, вероятность оттока растёт.

Churn rate составил около 15,6%. Модель показала, что для прогнозирования оттока важнее не только общий объём активности, но и свежесть взаимодействий пользователя с сервисом.

Производительность аналитических задач

Отдельно оценивалось время выполнения задач. Это важно, потому что проект относится к курсу по анализу больших объёмов информации, а значит, важны не только сами выводы, но и то, насколько эффективно система обрабатывает данные.

Задача

Время выполнения

Примечание

1

Динамика прослушиваний по месяцам

15,3 сек

базовые агрегаты

2

Сессионная активность

9,5 сек

обработано около 5 млн сессий

3

Граф ко-лайков

18,2 сек

5,4 тыс. треков, 2,7 тыс. артистов

4

Разнообразие, энтропия Шеннона

52,8 сек

20 чанков, около 90 тыс. пользователей

5

Тепловые карты

3,1 сек

часы × дни

6

Граф ко-прослушиваний + UMAP

737,3 сек

около 1,3 млн рёбер

7

Прогноз оттока

110 сек

около 90,9 тыс. пользователей

Самой тяжёлой задачей оказался граф ко-прослушиваний с UMAP-валидацией. Это ожидаемо, потому что здесь совмещаются графовые операции, работа с эмбеддингами и снижение размерности.

Основные выводы

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

Во‑первых, рекомендации формируют значительную часть потребления. В финальном месяце их доля составила около половины всех прослушиваний. Это подтверждает, что рекомендательная система является одним из центральных механизмов взаимодействия пользователя со стриминговым сервисом.

Во‑вторых, рекомендательные прослушивания оказались качественными по метрикам дослушивания. Их скипают реже, а сессии с ними длятся дольше.

В‑третьих, рекомендации повышают разнообразие музыкального потребления. Энтропия по трекам и артистам в рекомендательном режиме выше, чем в органическом. Это позволяет сделать вывод, что рекомендации не только усиливают повторяемость, но и расширяют музыкальный кругозор пользователя.

В‑четвёртых, графовый анализ показал наличие устойчивых музыкальных сообществ. Некоторые из них подтверждаются аудио‑эмбеддингами, а некоторые являются скорее поведенческими: пользователи слушают этих артистов вместе, даже если они не обязательно похожи по звучанию.

В‑пятых, пользовательский отток можно прогнозировать по поведенческим признакам. Наиболее важным сигналом оказалась давность последней активности.

Что можно улучшить в дальнейшем

У проекта есть несколько направлений развития.

Первое — расширить интерпретацию сообществ. Сейчас в датасете нет жанров и названий артистов, поэтому найденные кластеры можно описывать только через структуру графа и акустическую близость. Если добавить внешние метаданные, можно было бы понять, какие реальные жанры или сцены стоят за найденными группами.

Второе — улучшить модель оттока. В текущей версии использовались классические модели машинного обучения. В дальнейшем можно попробовать последовательные модели, которые учитывают порядок действий пользователя.

Третье — добавить интерактивную визуализацию. Сейчас результаты сохраняются в виде статичных PNG‑графиков. Для исследовательской работы было бы удобно сделать веб‑интерфейс или дашборд, где можно фильтровать пользователей, сообщества, периоды и типы прослушиваний.

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

Заключение

Исследование показало, что открытые данные музыкального стриминга можно использовать не только для построения рекомендательных систем, но и для анализа их влияния на поведение пользователей.

Главный вывод исследования: в рассматриваемом датасете рекомендации не выглядят как механизм, который просто замыкает пользователя в привычном наборе треков. Напротив, они увеличивают разнообразие прослушивания, формируют более длинные сессии и чаще приводят к полному дослушиванию треков.

С инженерной точки зрения проект также показал важность правильной архитектуры обработки данных. Для работы с десятками миллионов событий потребовались потоковая обработка, чанкинг, аналитическая СУБД, графовые алгоритмы и контроль потребления памяти. Это делает проект не только исследовательским, но и практически полезным примером построения системы анализа больших данных.

Источники

1. Никифоров И. В., Юсупова О. А., Воинов Н. В., Ковалев А. Д. Методы, алгоритмы и архитектуры распределенной обработки больших данных. - Санкт-Петербург: Санкт-Петербургский политехнический университет Петра Великого, 2023. - 194 с. - ISBN 978-5-7422-8461-1. - EDN DFTKEX.

2. Никифоров И. В., Юсупова О. А., Воинов Н. В. [и др.] Программные инструменты обработки и визуализации данных. Elasticsearch, Logstash, Kibana, Grafana, Prometheus. - Санкт-Петербург: СПбПУ Петра Великого, 2023. - 140 с. - ISBN 978-5-7422-8075-0. - DOI 10.18720/SPBPU/2/id23-74. - EDN KPGDVS.

3. Никифоров И. В. Курсовое проектирование по учебной дисциплине “Наука о данных и аналитика больших объемов информации”: учебное пособие. - Санкт-Петербург: СПбПУ Петра Великого, 2017. - 62 с. - ISBN 978-5-7422-5638-0. - EDN XPRQXB.

4. https://huggingface.co/datasets/yandex/yambda - Yandex. Yambda Dataset. HuggingFace Datasets.

5. https://arxiv.org/pdf/2408.16430 - Do Recommender Systems Promote Local Music? A Reproducibility Study Using Music Streaming Data.

6. https://www.nature.com/articles/s41598-025-28357-z - Advanced customer churn prediction for a music streaming digital marketing service using attention graph-based deep learning approach.

7. https://arxiv.org/pdf/2604.26119 - Two-Dimensional Structural Characterization of Music Genre Communities in Playlist Co-occurrence Networks.