Alura > Cursos de Data Science > Cursos de Machine Learning > Conteúdos de Machine Learning > Primeiras aulas do curso Clustering aplicado: recomendando músicas com K-Means

Clustering aplicado: recomendando músicas com K-Means

Jornada musical - Apresentação

Você provavelmente já se deparou com uma situação como essa, ou se não se deparou, agora vai se identificar em algum ponto. Quando toca uma música e pensa: muito boa essa música que tocou, nunca tinha ouvido, e é bem parecida com aquela outra. Parece que ela até tem umas baterias bem parecidas. Que legal. Será que elas são relacionadas, alguma coisa assim? Vamos ver. Acho que são. Nossa, mas ela é bem boa mesmo, é um artista que eu não conhecia. Será que se eu procurar alguma coisa com piano, ela vai aparecer também? Ou vai aparecer alguma coisa relacionada?

Vou pesquisar “piano”. Nossa, ela é bem mais calma, tem um piano bem forte. Vou deixar tocando e continuar programando. Acho que vai ser bem mais útil para programar.

Vou passar para o final, que agora estou curiosa para ver se o Spotify vai me recomendar alguma música parecida com ela, não consigo programar o resto do meu código até saber isso. Vou ver qual vai ser a próxima música. Incrivelmente, tem bastante piano. Como será que eles fazem essas coisas? Queria saber. Será que é alguma coisa que dá para fazer com código? Seria legal se tivesse, que eu gostei bastante de saber isso. Porque são dois estilos bem diferentes, eles recomendaram bastante coisa, na verdade. Acho que vou dar uma olhada nisso, se tiver como fazer, eu vou querer fazer.

Você está a fim de aprender comigo também? Podemos tentar descobrir como o Spotify recomenda as músicas deles com estilos diferentes, porque estávamos escutando uma música cheia de bateria, cheia de baixo, e o pessoal estava recomendando músicas bem semelhantes. E mudamos, e ouvimos duas músicas direto com piano.

Então, com métodos de Machine Learning, poderemos construir nosso próprio recomendador, para analisar os dados do Spotify. Com ele, podemos pegar os critérios e as características das nossas músicas e entender como elas estão divididas. Nós não vamos entender totalmente, mas vamos partir desse ponto e começar a explorar. Vamos aprender comigo?

Jornada musical - Entendendo o problema

Quem nunca pensou em como aquelas músicas que escutamos no aleatório em algum aplicativo de música, parecem que não estão tão aleatórias assim? Eu já pensei várias vezes como aquele aplicativo me conhece tão bem, a ponto de me recomendar uma música que parece que está tocando no fundo da minha alma. E às vezes, não é nem só com aplicativos de música, aplicativos de streaming, ou qualquer outro aplicativo de vídeo.

Você está assistindo algum vídeo, você está assistindo algum filme, por exemplo, e aparece para você “Se você gostou desse filme, talvez você goste de outros”, ou até mesmo quando você está no YouTube, “Você gostou desse vídeo? Temos vídeos relacionados ao lado”.

Quando colocamos na parte visual das coisas, fica muito explícito para nós, o que está acontecendo. E com as músicas é um pouco diferente, por isso fica aquela pulga atrás da orelha: Como será que ele me conhece tão bem? Porque, às vezes, ele até mostra quais músicas ele está recomendando, quais ele pode recomendar, mas, outras vezes, ele só coloca no aleatório que você não entende o que está acontecendo. Às vezes, eu coloco até nas minhas músicas curtidas, coloco no aleatório, e ele vai me recomendando músicas que são muito parecidas.

Parece que ele está realmente entendendo o padrão de música que eu quero ouvir. E isso é muito estranho, e me leva a pensar: Como isso funciona? Como esse padrão é definido? Como ele é feito? Como esse recomendador funciona? Dentro desse curso, vamos mostrar como fazer esse recomendador de uma forma realmente visual.

Então, vamos ter, por exemplo, esse nosso recomendador. Ele está com a recomendação para o Ed Sheeran – Shape of You, então, Ed Sheeran é um dos meus artistas favoritos, e eu coloquei “Shape of You”, que é uma das músicas que eu gosto bastante de escutar. E ele já está me dizendo que tem outras músicas que eu posso escutar, que elas estão possivelmente relacionadas com essas músicas que eu pedi.

Então, eu coloquei que eu quero uma música, e ele está me dando outras músicas relacionadas. E você pode ver que ele está me dando um Ed Sheeran embaixo também, alguma outra música dele, mas ela não está na primeira colocação, ela não está diretamente colocada como recomendação direta. Então, tem alguma coisa diferente acontecendo, e eu quero saber o que está acontecendo, como ele funciona.

Então, nessas aulas, nesse curso, vamos aprender como ensinar a nossa máquina a pensar, como ela vai separar cada grupo de músicas por detalhes, o que vamos ter dela. Então, quais os detalhes que vamos considerar da música, para conseguirmos separar dela. Então, depois que fizermos todas essas separações, depois que tivermos todas essas músicas separadas, vamos fazer essa seleção de busca, e ver onde essa música está. Então, por exemplo, eu busquei, onde será que está o meu Ed Sheeran – Shape of You, para descobrir quais são as músicas que, ao redor dela, se relacionam com ela.

Então, que fazem mais sentido de escutar, de eu recomendar para alguém que também queira ouvir aquilo. Porque esse recomendador pode não ser só meu, pode ser seu, ou de qualquer outra pessoa, se você quiser colocar em uma aplicação, por exemplo. Então, faz muito sentido entendermos todo esse processo, entender como ele vai ser feito, quais são as análises que vamos fazer, como ele funciona, para chegar nessa parte da recomendação visual, como temos nos streamings, por exemplo.

A partir desse ponto, eu vou esperar você nas próximas aulas. Vamos lá?

Jornada musical - Dicionário dos dados

Para realmente conseguirmos avaliar as nossas músicas, e entender como elas podem ser recomendadas a partir das outras, já vimos que não é utilizando apenas o nome delas e o nome do artista, porque na primeira função que eu já mostrei, já dei um spoiler, ela não utilizou o nome do artista, então, tínhamos o Ed Sheeran, mas ele não era o próximo da recomendação, ele até estava dentro da minha recomendação, mas não era o próximo, então, sabemos que a proximidade de nomes não é o que procuramos nesse caso.

Então, já sabemos dessa parte, porém, quais são as características que estamos buscando avaliar dentro dessa música, quais são as características que precisamos realmente avaliar?

Então, dentro do Spotify temos a API que conseguimos acessar os dados do Spotify de uma forma mais rápida e mais fácil. E dentro da API temos essa referência, a nossa documentação. É como se fosse uma documentação do Pandas, por exemplo, que utilizamos para consultar. Então, damos uma olhada lá, para saber qual parâmetro colocar para procurar o que está acontecendo dentro da aplicação, por exemplo, para fazer alguma coisa diferente.

Então, dentro desse “Spotify for Developers”, conseguimos ver as features do nosso áudio. Então, são as características que vamos ter do nosso áudio disponível. Então, vamos ter várias e várias características disponíveis, vamos ter tipos, tempo, liveness, loudness, ID, duration, e vários tipos de valores diferentes, que ele vai nos retornar. Porém, está tudo em inglês, e eu já trouxe traduzido esse nosso dicionário de dados dentro do nosso Colab.

Então, dentro do Colab ele já está em uma tradução que eu fiz. Eu fiz uma tradução livre, então, nem todas as palavras podem existir em uma tradução formal do inglês, então, são traduções livres. E a primeira feature que temos na música é acústica, então, é uma variável numérica que tem essa medida de confiança entre 0 e 1, que ela fala o quão acústica a música é, então, se ela tender mais para um lado, ela vai ser mais acústica, se ela tender mais para o outro, ela vai ser menos acústica.

Tem também a “dançabilidade”. Essa é uma palavra que acho que no inglês formal, talvez não exista. Mas é uma variável numérica também, a “dançabilidade” descreve a quão adequada seria aquela faixa para dançarmos, o quão adequado seria aquela faixa para colocarmos em uma festa, por exemplo. Então, será que seria legal colocar uma música triste para dançar em uma festa? Tem umas contradições, então, o Spotify, por exemplo, consegue avaliar isso também. Então, ele varia também entre 0 e 1, e conseguimos ver que o 0 é o menos dançável e o 1 é o mais dançável possível.

Então, tem também a duração em milissegundo, tem a duração em minutos também, às vezes, pode ser que venha a duração em minutos, mas o mais comum, pelo jeito, é o milissegundo, até porque passando o olho pela documentação da API, eu já vi um milissegundo, não vi o minuto.

Então, também temos a energia, que seria a variável numérica, ela é uma variável também que vamos medir entre 0 e 1, então ela vai ver o quão enérgica é aquela música, então, basicamente, se estamos ouvindo death metal, se estamos ouvindo uma música eletrônica, ela provavelmente vai ter muito mais energia que uma música lo-fi, que é uma música mais calma, para estudarmos, mantermos nossa concentração.

Então, ela vai ser muito mais enérgica do que as outras músicas calmas. Então, o valor 0 é uma música muito menos enérgica, e a música 1 vai representar uma música super enérgica, por exemplo, um show de eletrônica ao extremo.

E também temos se a música é explícita ou não, vai ser uma variável categórica, então ela vai falar se é verdadeiro ou falso, então 0 ou 1. Também temos o ID do Spotify, que seria aquele ID que conseguimos acessar a música depois. Se eu ainda quiser acessar mais informações dessa música dentro da API do Spotify, eu pego esse ID e coloco. Esse ID também é importante, porque conseguimos acessar a música dentro do Spotify para ouvir. Então, é bem interessante essa parte.

Essa instrumentabilidade é uma variável numérica, ela prevê uma faixa que não contém os vocais, por exemplo, ela não tem aquela parte falada. Então, aqueles sons de “Ohh”, “Ahh”, ele conta, ele trata como instrumento nessa parte. Mas é todo som de guitarra, de bateria, coisas assim. Então, ele também vai variar de 0 a 1, então, o valor acima de 0.5, por exemplo, ele destina a representar as faixas instrumentais, mas a confiança é maior, a medida que o valor se aproxima de 1. Então, ele conta que o valor é mais instrumental assim que se aproxima de 1. Por exemplo, se pegarmos uma música de ópera, vai ser super instrumental.

Ele tem também as chaves, que seriam valores numéricos. Então, ela é a chave geral estimada da faixa, são aquelas chaves musicais mesmo. Então, para quem entende um pouco melhor de música do que eu, vai saber que são aquelas chaves musicais, então Dó = C, por exemplo, são essas chaves que se você entende de música, está sabendo.

Essas chaves são tratadas como inteiros, então, se nenhuma chave for detectada, como essa última chave, ela vai ser considerada -1. Então, já começamos a analisar alguns pontos.

Também temos o Liveness, que seria “Ao vivo”. Então, se aquela música foi gravada ao vivo, foi gravada em um show, ela vai ter algum fundo de pessoas gritando, pessoas cantando junto, então, não que isso atrapalhe o áudio, mas ele também vai ter algum ponto no áudio. Então, ele vai falar que aquilo é ao vivo, então, um valor em cima de 0.8 fornece essa forte probabilidade de ser gravado ao vivo. Então, temos essa confiança.

Tem esse loudness, que seria um volume em decibéis, que seria uma variável numérica também. E esse volume é um volume geral de uma faixa em decibéis, então, os valores são calculados conforme a faixa, então, ele tem uma variação um pouco diferente das outras variáveis que já vimos, ele vai de -60 e 0 decibéis, e a sonoridade é a qualidade de um som que o principal correlato psicológico da força física, por exemplo, na nossa amplitude.

Então, ele está falando o quão forte essa música é, o quão forte ela consegue tocar. Então, provavelmente, algumas músicas vão tocar bem mais forte do que outras.

Também temos esse modo, que seria uma variável numérica, ele indica modalidade, se ela é maior ou menor de uma faixa. Então, seria um tipo de escala que um conteúdo melódico é conferido, derivado. Então, o maior é representado por 1, e o menor é representado por 0. Ele também vai ter esse 0 e 1, ele está dentro dessa nossa faixa.

Tem a popularidade também, que é uma variável numérica, é uma faixa de 0 a 100, então, quanto maior a popularidade do artista, a popularidade da música, ela vai se aproximar de 100, ou vai ser até 100. E quanto menor, ela vai chegar mais próxima do 0, até mesmo o 0. Então, isso vai fazer com que a nossa faixa de popularidade esteja nos guiando dizendo que uma música é muito mais popular, ela está sendo muito mais ouvida pelas outras pessoas.

Então, também temos a quantidade de fala. Já vimos anteriormente, que tínhamos a quantidade de instrumentos, vimos que conseguíamos tirar aquela quantidade de instrumentos, mas também temos a quantidade de fala. Então, por exemplo, se pegarmos um podcast, alguma coisa que não tem essa parte instrumental, ele vai dar muito alto nessa parte da fala. Então, ele consegue descrever o quanto de fala temos dentro dessa nossa faixa, seja ela uma música, um podcast, um audiobook.

O tempo, que também é uma variável numérica, e é um tempo estimado geral da faixa. E é batida por minuto, então, para quem entende um pouco melhor de música, sabe que na terminologia musical, por exemplo, o tempo é a velocidade ou o ritmo que temos de uma determinada peça, e ela vai derivar diretamente da duração da batida. Então, vamos ter a variável que está junto com a duração da batida.

E também tem essa valence, ou a valência, na minha tradução livre, que é uma variável numérica, que ela é medida de 0 até 1, e ela descreve a positividade musical, ou seja, o quanto aquela música vai me deixar muito alegre, ou o quanto aquela música vai me deixar muito triste e deprimida. Isso é um pouco louco de se pensar, que conseguimos medir, mas é uma medida que eles usam também, então temos essa parte.

E por último, mas não menos importante, temos essa parte do ano, que conseguimos ver que ano que a música foi lançada. Então, como estamos recebendo esses dados, esses dados já foram retirados da API, foi retirado por uma outra pessoa, e estamos recebendo esses dados prontos para nós, pode ser que algumas partes do nosso dicionário não funcionem. Como assim? Pode ser que o nosso dicionário não precise ser usado inteiramente, porque pode ser que a pessoa usou, tirou os dados anteriormente, já fez um pré-tratamento dos nossos dados, e já está falando que algum dado pode estar repetido, e nem vai passar.

Então, ele já pode ter vindo com pré-tratamento, mas é interessante já termos esse conhecimento do que está acontecendo, que tipo de variável que vamos encontrar dentro do nosso dataset, porque vamos que as características da música influenciam muito mais do que apenas o nome ou o artista também, que está sendo utilizado, que estamos pesquisando, por exemplo.

Então, a partir dessa parte do dicionário de dados, vamos partir para a parte prática realmente, que é analisar os dados que vamos receber, que já foram retirados da API para nós. Vamos lá comigo?

Sobre o curso Clustering aplicado: recomendando músicas com K-Means

O curso Clustering aplicado: recomendando músicas com K-Means possui 167 minutos de vídeos, em um total de 48 atividades. Gostou? Conheça nossos outros cursos de Machine Learning em Data Science, ou leia nossos artigos de Data Science.

Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:

Aprenda Machine Learning acessando integralmente esse e outros cursos, comece hoje!

Conheça os Planos para Empresas