Primeiras aulas do curso Machine Learning: Introdução a algoritmos não supervisionados

Machine Learning: Introdução a algoritmos não supervisionados

Conhecendo os dados - Introdução

Oi pessoal, tudo bem? Sejam bem vindos a esse curso de Introdução ao Aprendizado Não-Supervisionado aqui na Alura. Aqui, saberemos como utilizar o aprendizado supervisionado para fazer um sistema de recomendação de filmes.

Geralmente, costumamos assistir filmes do mesmo gênero (por exemplo, romances, comédias, dramas ou animações). Assim, utilizaremos o aprendizado não-supervisionado para agrupar esses filmes e sugerir os filmes adequados para cada perfil de usuário.

Para isso, precisamos agrupar esses filmes por gênero. Porém, romance e comédia, por exemplo, são gêneros que podem estar próximos - existem, inclusive, comédias românticas. Nesses casos, como devemos tratar esses casos?

No curso, utilizaremos o Pandas, uma ferramente que simplificará alguns procedimentos, e aprendemos a fazer diversas operações, como ler os dados de um arquivo CSV e transformá-los em um dataframe, como utilizar os dummies, como escalar nossos dados utilizando a biblioteca SKLearn, como criar algoritmos de aprendizado não-supervisionado - no caso, o k means da biblioteca SKLearn, que será explicada ao longo do curso.

Ao final do curso, abordaremos o agrupamento hierárquico, um tipo de agrupamento/clusterização no qual criaremos uma estrutura de árvore com a qual tentaremos encontrar relações entre os grupos que o k means criou para nós. Assim, será possível enxergar que o grupo dos filmes de romance está próximo do grupo dos filmes de drama, e também próximo do grupo dos filmes de comédia.

Espero que gostem do curso e até os próximos vídeos!

Conhecendo os dados - Conhecendo o dataset

Nós fomos chamados para criar um sistema de recomendação para uma empresa de streaming de filmes. Geralmente, gostamos de assistir coisas parecidas - se assistimos muitos filmes de comédia, é natural que nos sejam recomendados outros filmes de comédia, ou de gêneros próximos a esse (comédia romântica, por exemplo).

Construiremos nosso sistema trabalhando com o Python. Para evitarmos problemas de instalação, utilizaremos o serviço Google Colaboratory. Teremos uma atividade extra explicando como criar uma conta na plataforma e o seu primeiro notebook Python.

No Colaboratory, clicaremos em "File > New Python 3 Notebook", e será aberta uma nova aba na qual poderemos trabalhar. Nomearemos o título para "filmes.ipynb".

Nas células do notebook, podemos escrever códigos Python - por exemplo, print olá mundo. Para executar, basta pressionar Ctrl + Enter ou clicar no botão play à esquerda. Após a execução, o "Olá mundo" será exibido.

Já sabemos a infraestrutura que iremos utilizar, agora faltam os dados propriamente ditos. Separamos um dataset com mais de 9.743 filmes organizados com movieId, title e genres (os gêneros, por exemplo aventura, ação, comédia, entre outros).

Para abrirmos esse dataset no notebook Python, utilizaremos o Pandas, uma ferramenta muito utilizada no mundo da análise de dados e de Machine Learning. Inclusive, existem cursos aqui na Alura sobre essa ferramenta. Primeiramente, teremos que importá-la. Quando trabalhamos com o pandas, é uma convenção dar um apelido para ele - nesse caso, usaremos import pandas as pd.

Se executarmos essa célula com Shift + Enter, o notebook automaticamente criará uma nova célula para trabalharmos. Agora queremos ler o nosso dataset, o que faremos com pd.read_csv(), já que nosso conjunto de dados é um arquivo CSV. Passaremos, então, o caminho para o arquivo.

Caso não tenha acessado o dataset na atividade anterior você pode acessar diretamente por este link.

Porém, temos que tomar cuidado com um detalhe: o Github converte automaticamente o CSV para uma tabela, e queremos acessar o arquivo puro ("cru"). Para isso, clicaremos no botão "raw" e copiaremos a URI que aparece na barra de endereços.

Colaremos essa URI no corpo da função e executaremos a célula com Ctrl + Enter. O Pandas nos devolverá um dataframe, que é a estrutura de dados na qual o Pandas trabalha.

Faremos agora algumas otimizações. Passar uma URI diretamente como parâmetro pode gerar alguns problemas no futuro, afinal, essa URI pode mudar e podem existir diversos pontos de alteração no código utilizando essa mesma URI. Portanto, uma boa prática é, ao invés de passarmos a string diretamente, extraí-la para uma variável - no caso, uri_filmes.

Passaremos essa variável para a função e executaremos novamente o código, que continuará funcionando. O ponto positivo é que se essa URI for alterada, só será necessário corrigir um trecho do nosso código.

Também temos que nos atentar a outro ponto: não estamos guardando o dataframe do pandas em nenhum lugar, o que pode atrapalhar nosso trabalho com ele no futuro. Portanto, faremos com que o retorno da função read_csv(uri_filmes) seja uma variável filmes.

O Pandas tenta exibir na tela o começo e o fim do dataframe. Para facilitarmos essa visualização, utilizaremos filmes.head() para que ele mostre apenas os 5 primeiros filmes desse dataframe, e executaremos com Ctrl + Enter.

Nesse dataframe, temos três colunas com nomes em inglês: movieId, title e genres. Se você gosta de trabalhar e escrever códigos em inglês, não tem problema. No entanto, eu gosto de trabalhar com os nomes em português, e por isso traduzirei as colunas desse dataframe.

Para isso, faremos filmes.columns e utilizaremos os colchetes para atribuir novos valores a essas colunas - respectivamente, filmeId, titulo e generos. Quando executarmos esse código com Ctrl + Enter, as colunas serão atualizadas com os novos nomes.

Esse primeiro vídeo foi somente para começarmos a trabalhar com esse dataset de filmes e darmos uma olhada na sua estrutura. No próximo vídeo, faremos algumas modificações que nos ajudarão a treinar um modelo de recomendação. Até lá!

Conhecendo os dados - Extraindo os dummies

Já importamos nosso dataframe por meio da URI e renomeamos as suas colunas. Agora, vamos continuar explorando esses dados. Perceba que temos uma coluna muito especial, chamada generos, que será utilizada para agruparmos filmes parecidos.

Observe, por exemplo, os dois primeiros filmes da lista, que são Toy Story e Jumanji. Será que Toy Story é um filme de terror? Analisando os gêneros na coluna específica, temos Adventure, Animation, Children, Comedy e Fantasy. Toy Story não é um filme de terror, mas e Jumanji? Vamos repetir o processo: temos Aventura, Children e Fantasy. Ou seja, também não é um filme de terror.

Porém, existe um problema em trabalharmos dessa forma. Primeiro, fica um pouco difícil de identificarmos as características de determinado filme. Além disso, todo filme tem uma característica mais marcante do que as outras. Por exemplo, Toy Story é um filme infantil, da mesma forma que Jumanji, mas é uma animação, enquanto Jumanji não é.

Como conseguimos saber quais desses gêneros influencia mais cada filme? Vamos analisar nossos dois filmes:

Estamos trabalhando com duas colunas: o nome do filme e o gênero dele. Com isso, estamos fazendo uma pergunta binária: existe terror na coluna "generos" de Toy Story?

Dessa forma, podemos criar colunas para cada um desses gêneros no dataframe, e populá-las com um dado binário: 0 ou 1, não ou sim. Por exemplo, como Toy Story é um filme de Aventura, pode ser marcado com 1 na coluna Adventure. Da mesma forma, todos os outros gêneros aos quais Toy Story pertence seriam marcados com 1.

No caso de Jumanji, as colunas Aventure, Children e Fantasy seriam marcadas com 1, mas Animation e Comedy seriam marcadas com 0. Assim, conseguiremos ter uma resposta mais direta quando perguntamos se um filme pertence ou não a um gênero. Esse processo é muito comum em análise de dados, principalmente quando estamos trabalhando com variáveis categóricas - aquelas que categorizam de alguma forma o nosso dado.

Se é um processo comum, podemos estimar que existe alguma implementação na biblioteca do Pandas, certo? De volta ao nosso notebook, pegaremos a coluna generos do nosso dataframe com filmes.generos. Se apertarmos Ctrl + Enter, veremos o retorno desse comando, que é uma series contendo somente a coluna generos do dataframe.

Com filmes.generos.str.get_dummies(), o pandas pegará os dummies dessa series a partir de suas strings e retornará um novo dataframe. Nele, teremos diversas colunas representando cada gênero. Como podemos ver, o primeiro filme da lista está marcado com 1 nos gêneros Adventure, Animation, Children e Fantasy, e com 0 em todo o resto.

Guardaremos esse dataframe em uma variável generos. Para facilitarmos nosso trabalho, juntaremos (concatenaremos) os dois dataframes em um só. Para isso, usaremos pd.concat(), passando como parâmetro uma lista com os dois dataframes (filmes e generos) e uma instrução para agrupá-los um embaixo do outro ou um do lado do outro. Nesse caso, queremos os dataframes lado a lado, por isso passaremos o parâmetro nomeado axis=1. O retorno será armazenado na variável dados_dos_filmes.

Chamando dados_dos_filmes.head(), os cinco primeiros elementos desse novo dataframe, concatenando os dois anteriores, serão impressos na tela. Com isso, conseguimos facilitar a análise do conjunto de dados.

Mas ainda falta algo, certo? Nós vimos que Toy Story tem uma característica que o diferencia bem de Jumanji, que é o fato dele ser uma animação. Portanto, parece que alguns desses gêneros pesam um pouco mais na sua categorização. Isso é um fator importante para nosso sistema de recomendação, afinal, uma pessoa pode gostar muito de filmes infantis, mas não de animação, ou gostar muito de animações, mas não de filmes infantis. Como conseguiremos analisar esses pesos se no nosso dataframe temos apenas 0 e 1?

Descobriremos isso no próximo vídeo!

Sobre o curso Machine Learning: Introdução a algoritmos não supervisionados

O curso Machine Learning: Introdução a algoritmos não supervisionados possui 131 minutos de vídeos, em um total de 40 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!

  • 1241 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

Premium

  • 1241 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

12X
R$75
à vista R$900
Matricule-se

Premium Plus

  • 1241 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

12X
R$100
à vista R$1.200
Matricule-se

Max

  • 1241 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

12X
R$120
à vista R$1.440
Matricule-se
Procurando planos para empresas?

Acesso por 1 ano

Estude 24h/dia onde e quando quiser

Novos cursos todas as semanas