Eleve sua Experiência Musical com Dados

Recomendação
Sistemas de Recomendação
Experiências
Músicas
autor

Pedro Garcia

Data de Publicação

14/02/2025


O Poder da Estatística recomendando boas Experiências Musicais


Um Resumo da Ópera


Recentemente, fizemos um post bem explicativo sobre o poder da estatística de nos recomendar boas experiências. A premissa é a seguinte: e se você pudesse contar com a ajuda de centenas de amigos que têm gostos musicais semelhantes aos seus e, assim, receber deles indicações das músicas que provavelmente você gostaria de ouvir?

Imagine poder reviver aquela sensação incrível de escutar uma música tão boa que você quer repetir várias vezes. Além disso, imagine a emoção de descobrir uma excelente música pela primeira vez! Se quiser se aprofundar nesse tema, recomendo fortemente que veja este post. Lá, você encontrará exemplos de como criar um modelo de recomendação usando estatística, além de aplicações práticas em diversas áreas, inclusive no seu negócio!

Neste post, vamos nos concentrar em mostrar um produto final: um sistema de recomendação criado a partir das músicas mais escutadas no Spotify. Falaremos sobre como obtivemos a base de dados, a metodologia usada para criar o modelo de recomendação, bem como a criação de características para comparar as músicas e, finalmente, mostrar as mais semelhantes entre si.

Se você estiver muito ansioso para ver o produto final, permitimos que você “fure a fila” e vá direto para o final do post, onde poderá buscar novas músicas com base nas suas preferidas. Mas, acredite, vale a pena dar uma olhada no conteúdo antes, tá?


Imagem Criada com IA - Meta AI Llama 3.2


Como Criar Um Sistema de Recomendação?


Dados


Para criar um sistema de recomendação, precisamos da matéria-prima mais importante da atualidade: dados! No nosso caso, usamos uma base de dados extraída do Kaggle, que contém as 100 músicas mais escutadas diariamente em 74 países diferentes.

Essa base de dados traz informações bem interessantes, que ajudam a definir as características das músicas. É com esses dados que calculamos a semelhança entre as músicas e, no final, conseguimos recomendar as mais parecidas com aquela que você já gosta. Assim, você pode descobrir novas músicas e ter experiências incríveis!

Novamente, se quiser se aprofundar nos detalhes dos cálculos e códigos para criar um sistema como esse, ou até mesmo aplicar essa ideia em alguma área da sua vida, acesse o post. Lá, explicamos tudo direitinho!


Variáveis


Dentre as variáveis que utilizamos para calcular a semelhança entre as músicas, estão:

  • Speechiness: que mede o quanto uma música é falada.
  • Energy: que avalia a intensidade e a atividade da música, como batidas rápidas e sons enérgicos.
  • Danceability: que representa a facilidade de dançar uma música, considerando fatores como ritmo e regularidade do compasso.
  • Valence: que expressa o quão positiva ou negativa é a música emocionalmente.
  • Acousticness: que indica o quanto uma música é acústica, em contraste com sons eletrônicos.
  • Instrumentalness: que define o grau em que uma faixa é instrumental ou contém vocais.

Esses parâmetros ajudam a comparar e classificar músicas de forma mais precisa, levando em consideração características sonoras que afetam diretamente a experiência auditiva.


Imagem Criada com IA - Meta AI Llama 3.2


Além dessas variáveis, que já vieram prontas nos dados, criamos outras que podem ser interessantes para comparar as músicas. Uma delas foi um score de sentimento da música. Mas, como assim? Tem como calcular isso? Sim! De maneira simples, aplicamos técnicas de NLP (Processamento de Linguagem Natural) nos títulos das músicas para extrair os tipos de sentimentos associados a cada palavra. Isso só é possível graças ao NRC Emotion Lexicon, um léxico que associa palavras a emoções e sentimentos, amplamente utilizado em análises de sentimentos e outras tarefas de NLP. Ele mapeia as palavras para oito emoções básicas (alegria, tristeza, raiva, medo, confiança, surpresa, antecipação e desgosto) e polaridades (positivo/negativo).

Assim, para cada música, temos variáveis que capturam, de maneira simplificada, a intensidade de cada uma dessas emoções. Claro que, em um mundo ideal, seria interessante aplicar essa técnica não apenas aos títulos das músicas, mas também às letras completas. Mas isso fica para um próximo episódio! Inclusive, futuramente, pretendo fazer um post com mais detalhes (e códigos) sobre um trabalho que fiz sobre Análise de Sentimentos em Letras de Músicas.


Qualidade do Sistema


É muito importante destacar que a qualidade das recomendações depende diretamente da qualidade das variáveis usadas. Por exemplo, não adianta querer criar um sistema de recomendação para indicar novos atacantes para o meu time do coração se eu usar variáveis como CPF, número de filhos ou DDD do celular. Nesse caso, o modelo me indicaria, quase que aleatoriamente, os jogadores mais próximos com base nessas informações irrelevantes.

O mais adequado seria incluir variáveis relacionadas ao desempenho em campo, como conversão de gols, taxa de chutes por toque na bola e dribles bem-sucedidos. Até mesmo variáveis do futebol, como desarmes, podem não ser interessantes de incluir, dependendo do objetivo da recomendação. Afinal, você vai procurar um atacante que marca lateral? Rs.

Outro ponto importante é que cada modelo de recomendação pode ser diferente, dependendo das variáveis usadas, da medida escolhida para calcular a semelhança, do método utilizado para indicar as experiências e da quantidade de dados disponíveis, entre outros fatores.


Nuances do Modelo Utilizado


Na base de dados, filtramos apenas as músicas que apareceram em algum dia no Top 100 das mais escutadas no Spotify após 2025. As variáveis utilizadas para calcular a semelhança entre as músicas foram destacadas em um tópico anterior. Elas capturam características das músicas, como ritmo, energia e outros detalhes, além do sentimento transmitido por meio dos títulos.

Como medida de similaridade, utilizamos a Distância de Manhattan. Posteriormente, para cada música, criamos um overall (parecido com aquele que vemos no FIFA) que indica o nível de semelhança entre as músicas, variando de 0 a 100. Esse valor também pode ser interpretado como uma porcentagem de semelhança. Afinal, mostrar apenas a Distância de Manhattan entre as músicas pode ficar subjetivo na hora de interpretar os resultados.


Produto Final , um Sistema de Músicas!


Conforme mencionado no post principal, várias melhorias poderiam ser feitas para tornar o modelo ainda mais adequado, como ampliar o repertório de músicas, usar outras medidas de similaridade, adicionar mais variáveis importantes, entre outras. Mas, como é um produto rápido, está excelente!

A seguir, será disponibilizada uma tabela com todas as músicas utilizadas, incluindo as semelhantes a elas, além do “overall” calculado como medida de semelhança. A tabela também traz outros detalhes, como título do álbum, data de lançamento, artistas e muito mais.

Você pode utilizar os filtros e as opções de ordenação para interagir com a tabela. Divirta-se!


Músicas Semelhantes - Top 100 do Spotify no Brasil em 2025


Mostre o Código
library(DT)
require(data.table)
dados = fread(paste0("POST_MUSICAS_BR",".csv"),header = T,encoding = 'Latin-1',dec = ',',sep = ';',na.strings = c('null','NA'))
dados$nivel_de_similaridade = round(dados$nivel_de_similaridade,0)

criar_tabela(dados)


Músicas Semelhantes - Top 100 do Spotify nos EUA em 2025


Mostre o Código
library(DT)
require(data.table)

dados = fread(paste0("POST_MUSICAS_US",".csv"),header = T,encoding = 'Latin-1',dec = ',',sep = ';',na.strings = c('null','NA'))
dados$nivel_de_similaridade = round(dados$nivel_de_similaridade,0)


criar_tabela(dados)