Estudo de gostos musicais de um usuário através da base de músicas do Spotify — Parte 1

O gosto musical, literalmente!

Estudo realizado como exercício de um curso que estou realizando e baseado no notebook de exemplo postado no repositório do curso do Mineirando Dados — [Artigo SVM].
Informações das Features da Base de dados do Spotify: Documentação da API

Esse estudo será dividido em duas partes para uma melhor visualização, entendimento e descrição de seu conteúdo.


Análise Exploratória

Importação das bibliotecas utilizadas:

Leitura do arquivo csv e criação do DataFrame Pandas:

Vamos ver como está apresentado nosso dataset observando somente as colunas numéricas que serão mais relevantes a análise:

Informações somente sobre as colunas numéricas — um resumo estatístico

Entendendo um pouco dos conceitos do dataset

Após verificar que há alguns conceitos desconhecidos como acousticness e danceability presentes no dataset, acessei o site de referência sobre a base de dados do Spotify e achei melhor acrescentar essas informações no artigo, com a finalidade de facilitar o entendimento da visualização dos dados a ser realizada futuramente:

Acousticness: Uma medida de confiança de 0.0 a 1.0 para definir se a faixa é acústica,ou seja, utiliza equipamentos sem meios eletrônicos. Faixas com o valor 1.0 possuem alta confiança que sejam acústicas.

Danceability: Classifica como uma faixa é adequada para dançar baseada em uma combinação de elementos musicais, incluindo tempo, estabilidade de ritmo, força de batida e regularidade geral. Um valor de 0.0 significa que a faixa possui uma tendência de ser menos dançante e 1.0 indica uma grande tendência de ser dançante.

Energy: A Energia é medida de 0.0 a 1.0 e representa uma medida perceptual de intensidade e atividade. Normalmente, faixas energéticas são rápidas e barulhentas. Em resumo, um valor de energia 0.0 significa que a faixa possui uma tendência de ser mais “calma”, como uma música clássica e 1.0 indica uma grande tendência de ser músicas mais agitadas como o death metal.

Instrumentalness: Prevê se uma faixa não contém vocais. Os sons “Ooh” e “aah” são tratados como instrumentais neste contexto. Faixas de rap ou palavras faladas são claramente “vocais”. Quanto mais próximo o valor de instrumentalness for de 1.0, maior a probabilidade de a faixa não conter conteúdo vocal. Valores acima de 0.5 destinam-se a representar faixas instrumentais, mas a confiança é maior à medida que o valor se aproxima de 1.0

Liveness: Detecta a presença de um público na gravação. Valores mais altos de atividade representam uma probabilidade maior de que a faixa foi executada ao vivo. Um valor acima de 0.8 fornece uma forte probabilidade de que a faixa seja ao vivo.

Loudness: O volume total de uma faixa em decibéis (dB). Os valores de sonoridade são calculados ao longo de toda a faixa e são úteis para comparar a intensidade relativa das faixas. A sonoridade é a qualidade de um som que é o principal correlato psicológico da força física (amplitude). Valores típicos variam entre -60 e 0 db.

Speechiness: Speechiness detecta a presença de palavras faladas em uma faixa. Quanto mais exclusivamente discursiva a gravação (por exemplo, talk show, audiobook, poesia), mais próximo de 1.0 o valor do atributo. Valores acima de 0.66 descrevem faixas que provavelmente são feitas inteiramente de palavras faladas. Valores entre 0.33 e 0.66 descrevem faixas que podem conter música e fala, seja em seções ou em camadas, incluindo casos como o rap. Valores abaixo de 0.33 provavelmente representam músicas e outras faixas não relacionadas à fala.

Valence: Uma medida de 0.0 a 1.0 descrevendo a positividade musical transmitida por uma faixa. Faixas com alta valência (mais próximas de 1.0) soam mais positivas (por exemplo, felizes, alegres, eufóricas), enquanto as faixas com baixa valência soam mais negativas (por exemplo, triste, deprimido, zangado).

Tempo: O tempo total estimado de uma faixa em batidas por minuto (BPM). Na terminologia musical, tempo é a velocidade ou ritmo de uma determinada peça e deriva diretamente da duração média da batida.

Após conhecer os conceitos a serem trabalhados, vamos visualizar a dispersão desses dados:

Criação do primeiro painel com os gráficos de dispersão de Acousticness, Danceability, Energy e Instrumentalness:

Dispersão de Acousticness, Danceability, Energy e Instrumentalness nas faixas de 0.0 a 1.0

Criação do segundo painel com os gráficos de dispersão de Liveness, Loudness, Speechiness, Valence e Tempo:

Dispersão de Liveness, Loudness, Speechiness, Valence e Tempo

Correlação dos Dados

Primeiro vamos entender o que significa o termo correlação: A correlação entre duas variáveis ou features ocorre por exemplo quando ao alterar o valor de uma, o valor da outra também é alterado. Essa relação pode ocorrer de forma mais forte (grandes alterações) ou mais leve (alterações quase imperceptíveis) e de formas positivas ou negativas.

Correlação positiva: Indica que as duas variáveis se movem juntas, e a relação é mais forte quanto mais a correlação se aproxima de um.

Correlação negativa: Indica que as duas variáveis movem-se em direções opostas, e que a relação também fica mais forte quanto mais próxima de menos 1 a correlação ficar.

Agora que revisamos sobre a correlação, podemos nos orientar por essa tabela para avaliar as correlações desse dataset, tanto para valores positivos quanto para negativos:

Vamos então observar inicialmente qual a correlação entre as colunas desse dataset:

Correlação em formato numérico

Para ter uma visualização mais interessante desses dados, vamos visualizar essa correlação através de um heatmap (mapa de calor):

Heatmap das features do dataset

De acordo com a tabela de graus de correlações acima, podemos fazer as seguintes considerações considerando as relações mais expressivas:

  • A feature acousticness possui uma correlação moderada e negativa em relação as features energy e loudness,
  • A feature energy possui uma correlação muito forte e positiva em relação a loudness,
  • A feature valence possui uma baixa correlação em relação a danceability

Gráficos de Dispersão

Vamos visualizar a dispersão dos dados mais interessantes (que possuem correlações mais relevantes) de acordo com o heatmap acima:

  1. Gráfico de dispersão de Acousticness em relação a Energy, Loudness e Danceability
Gráfico de dispersões com regressão para estimar o valor de aumento/redução através da correlação

Pode-se perceber que há relações negativas relevantes: As faixas com maior possibilidade de serem acústicas tem a tendência de possuir menor energia, uma menor sonoridade e menor tendência de serem dançantes.

2. Gráfico de dispersão de Energy em relação a Loudness e Valence

Gráfico de dispersões com regressão para estimar o valor de aumento/redução através da correlação

Observa-se que há relações positivas relevantes quanto a Loudness e, uma pouco influente, porém positiva em relação a Valence: As faixas com maior energia tem a tendência de possuir maior volume em decibéis, o que faz todo o sentido! Quanto a valência, há uma leve inclinação positiva, porém considerável quando a música possui mais energia.

3. Gráfico de dispersão de Valence em relação a Danceability e Instrumentalness

Gráfico de dispersões com regressão para estimar o valor de aumento/redução através da correlação

Percebe-se que há relações positivas relevantes quanto a Valence e Danceability, o que faz sentido, geralmente músicas mais positivas tem a tendência de serem mais dançantes. Quanto a Instrumentalness, há uma inclinação negativa, porém há várias faixas fora desse padrão.

4. Gráfico de dispersão de Tempo em relação a Speachiness e Valency

Gráfico de dispersões com regressão para estimar o valor de aumento/redução através da correlação

O tempo em relação a Speechiness possui uma leve relação positiva, indicando que há uma leve tendência de aumento dos 75 até os 175 RPM. Quanto a valência, percebe-se que está bem distribuída, impedindo a verificação de tendência de aumento ou não.

5. Gráficos em relação ao gosto musical do usuário

Discretização dos dados para identificar as preferências musicais do usuário (0 — Não gosta da música, 1 — Gosta da música ):

Separação das features a serem usadas para a criação do painel pairplot:

features selecionadas para melhor visualização dos dados

Criação do pairplot para visualizar as correlações com as preferências do usuário:

Correlação e preferências do usuário usando Pairplot

Na cor salmão podemos visualizar as preferências do usuário e sua respectiva linha de regressão, na cor azul temos as músicas que não são as preferidas do usuário e sua linha de regressão. Através dos gráficos e das análises realizadas, podemos concluir que as músicas aprovadas pelo usuário e as não aprovadas possuem em geral uma correlação parecida, variando em alguns aspectos como na correlação entre acousticness e speechiness e acoustic e valence.

No próximo artigo, será realizada a análise dos dados e reconhecimentos dos padrões, para a classificação e análise de regressão linear com o intuito de estimar através de algumas das características do dataset a preferência musical do usuário.