Alura > Cursos de Data Science > Cursos de Machine Learning > Conteúdos de Machine Learning > Primeiras aulas do curso Machine Learning com Oracle ADS: produtividade na criação de modelos

Machine Learning com Oracle ADS: produtividade na criação de modelos

Criando modelo no Oracle Cloud - Apresentação

Olá, eu sou o Igor do Nascimento Alves e vou ser o seu instrutor no nosso curso de Machine Learning com Oracle ADS da Alura. É importante que você tenha tido contato com modelos de Machine Learning, tenha desenvolvido alguns modelos de Machine Learning, tenha estudado como melhorar esses modelos fazendo otimização de hiperparâmetros, seleção de features para que você consiga entender todas as vantagens que nós vamos conseguir utilizando a ferramenta.

O nosso time recebeu a proposta de trazer uma solução no formato de um modelo de Machine Learning para um problema que é a classificação de pacientes se terão ou não uma doença cardíaca. Parte do nosso time ficou responsável com receber a base de dados com diversos pacientes que tiveram ou não a doença, fazer todos os tratamentos necessários e agora chegou a nossa vez de pegar essa base tratada e explorar as diversas possibilidades de algoritmos de Machine Learning, diversas possibilidades de hiperparâmetros e tudo isso em um tempo curto.

Para resolver esse problema em relação ao tempo e o quão abrangente tem que ser a nossa busca, nós vamos utilizar diversas soluções que a ferramenta do Oracle ADS tem. Por exemplo, o Oracle Automl, com ele é possível que testemos diversos algoritmos seguindo boas práticas, teste diversos hiperparâmetros e chegue no melhor modelo para o nosso problema. Essa ferramenta também vai nos ajudar em diversas outras etapas do pipeline, por exemplo, a validação de modelos, então comparar se o modelo está performando melhor que o outro utilizando diversas métricas.

Outro ponto muito importante que a ferramenta vai nos ajudar é a explicar o nosso modelo, como nosso modelo está tomando as decisões que está tomando, passar a informação de quais features são as mais importantes. Depois que ficarmos seguros de que estamos com o melhor modelo e que conseguimos explicar essas decisões, chegou o momento de colocarmos o nosso modelo em produção. Isso mesmo, nós vamos disponibilizar a nossa solução para o restante da empresa através de uma API.

No nosso trabalho vamos criar uma solução que seja capaz de receber uma lista de diversos pacientes e a partir de um endpoint, de uma requisição para essa API, retornar se o paciente vai desenvolver a doença cardíaca ou não. Muito interessante. Eu estou muito animado de desenvolver esse projeto com você, então vamos lá?

Criando modelo no Oracle Cloud - Criando o Jupyter Notebook

Nosso time recebeu a tarefa de criar um modelo de Machine Learning que fosse capaz de, a partir dos dados do paciente, fazer uma classificação, uma previsão se o paciente vai desenvolver a doença arterial coronariana, que podemos chamar de DAC aqui, a sigla, na próxima década. Para fazer isso, vamos receber uma base de dados que já foi explorada, já foi tratada.

Nosso foco vai ser apenas desenvolver modelos de Machine Learning, encontrar o melhor que resolva o nosso problema e colocar em produção. Para fazer isso, vamos utilizar o dente Oracle Cloud e vamos utilizar a ferramenta Oracle ADS, de Accelerated Data Science. Já podemos reaproveitar a pasta de projetos que já tínhamos criado junto com o time, onde eles fizeram toda a parte de exploração e tratamento dos dados, mas vamos precisar criar uma nova seção.

Isso porque vamos precisar de uma máquina diferente da utilizada para o tratamento e exploração. Eu estou aqui já na tela do projeto, na Oracle Cloud, e o nome do nosso projeto é "OracleADS". Vou descer um pouco, onde temos um botão chamado "Create notebook session", podemos clicar nesse botão, ele vai abrir uma nova tela para nós, referente a "Create notebook session", a criar o nosso notebook, ele já vem com um compartimento que estamos utilizando por padrão e o primeiro campo que precisamos dar atenção é um "Name" e é um campo opcional, podemos dar o nome de "OracleADS_ML", de Machine Learning.

O campo realmente importante que precisamos dar atenção é o terceiro, chamado "Compute shape", que por padrão ele vem com uma VM.Standard2.1, que poderíamos trabalhar com ela, mas vamos ter uma performance melhor, nossos modelos vão ser treinados de maneira mais rápida se optarmos por outra, a ideal nessa etapa de exploração, onde queremos encontrar diversos modelos, treinar diversas vezes, queremos fazer isso com agilidade.

Para mudar esse "Compute shape" podemos clicar no botão "Select", que tem nesse terceiro campo aqui, ele vai abrir uma nova tela, fornecer diversos shapes, ele informa se queremos trocar de AMD para Intel, não há necessidade, podemos deixar o default de Intel, e descendo um pouco a tela vamos encontrar uma tabela com diversos shapes da nossas VMs, das nossas Virtuais Machine. Como eu comentei, por padrão ele vem com a 2.1, mas podemos selecionar a terceira, que é a VM.Standard2.4.

Essa VM é referente a uma VM que vai ter quatro cors disponíveis e 60 gigas de memória. É mais que o suficiente para o nosso projeto. Depois de selecionada essa combo box da VM.Standard2.4, podemos descer novamente a tela e clicarmos no botão "Select". Voltamos para a tela de criação do notebook. Podemos descer um pouco e o outro campo obrigatório que precisamos preencher é o "Bloco storage size", o disco disponível que vamos ter.

Podemos deixar o mínimo, que é de 50 gigas, que também vai ser mais do que suficiente para o nosso projeto. Depois disso, podemos deixar o campo de "Networking resources" um valor padrão e a nossa atenção vai ser no final da página, no canto esquerdo, o botão "Create". Ele vai recarregar, vai aparecer a tela da "Notebook Session" e vai demorar um tempo essa parte porque ele está criando, então ele vai alocar, vai pedir para o Oracle Cloud alocar uma máquina, alocar todos esses recursos que sinalizamos que vamos precisar na nossa seção de notebook.

Aguarda um pouco, que assim que terminar, voltamos. Bom, demorou um tempo, mas a nossa máquina já está disponível e já podemos acessar a nossa seção de notebook. Para isso, eu vou clicar no botão "Open" que tem no centro da tela. Ele vai abrir uma nova guia para nós, que vai pedir autenticação novamente. Está tudo bem, fazemos a autenticação normal, como fizemos para acessar o Oracle Cloud, e pronto. Agora abriu a janela que parece muito, na verdade, é, um Jupyter Notebook.

Toda a interface de quem já trabalhou com Jupyter Notebook vai reconhecer a familiaridade, exceto por uma barra indicando que temos no ambiente Oracle Cloud, que fica no canto superior. Nosso primeiro passo agora que temos o Jupyter Notebook é fazer a instalação de um kernel. Essa etapa é muito importante porque ela vai, novamente, agilizar muito o nosso processo, porque um kernel vai carregar todas as bibliotecas que vamos utilizar.

Ao contrário do time que fez o tratamento e a exploração de dados, vamos precisar de kernel específico para a tarefa que vamos realizar. Aqui na tela inicial do Jupyter Notebook, ele já abriu uma guia para nós chamada de "Launcher" e se descermos um pouco nessa guia vamos encontrar uma parte chamada "Extensions" e podemos clicar no botão "Environment Explorer". Vou clicar, ele vai abrir uma nova guia para nós, que também podemos explora-la descendo um pouco.

E aqui vamos ter disponíveis diversos kernels para diversos tipos de problemas que possamos querer resolver. No nosso caso, queremos trabalhar com modelo de Machine Learning, então o kernel que vamos buscar é o "General Machine Learning for CPUs on Python 3.7". No meu caso aqui, foi a terceira opção que apareceu. Eu vou descer um pouco, no canto direito dessa linha onde está escrito o kernel, temos uma seta, vou clicar nela, que ela vai expandir essa linha e aqui ele vai trazer diversas informações, como as bibliotecas que estão contidas nesse kernel.

Se descermos mais um pouco, lá no final da seção que abriu, ele vai informar o propósito para uso geral de Machine Learning, utilizando uma CPU. Ele informa que além das bibliotecas, esse kernel vai trazer alguns notebooks de exemplo, de como utilizar a ferramenta. Esse vai ser o kernel que vamos precisar para o curso. Vou subir um pouco, onde temos uma parte chamada "Install", onde ele vai informar qual é o código que precisamos rodar no terminal para instalar esse kernel.

Vou achar esse código que está embaixo de "install" e ele está dizendo que o código é "odsc conda install -s generalml_p37_cpu_v1". No final desse código, temos um botão que é o formato de dois arquivos, que podemos clicar que vai copiar para o nosso clipboard esse código. Cliquei, ele já fez a cópia e agora a nossa atenção vai ser em abrir o terminal. Para abrir um terminal vamos ao canto superior esquerdo, na opção "File > New > Terminal". Ele vai abrir uma terceira guia para nós referente ao terminal, onde vamos interagir com a nossa máquina e podemos fazer a instalação.

Para fazer a instalação vou apertar o "Ctrl + V", ele vai colar todo aquele código que eu descrevi para vocês, já podemos apertar o "Enter", ele vai fazer mais uma pergunta, perguntando qual a versão que queremos utilizar esse kernel, não precisamos digitar nada, podemos usar a versão atual, então digitar outro "Enter" e ele vai começar a fazer o download. Esse processo, novamente, pode demorar um tempo já que ele vai fazer o download de diversas bibliotecas, fazendo a instalação na nossa máquina, o kernel vai trazer todo esse contexto de diversos notebooks, então é uma tarefa que demora um tempo e eu já volto assim que ela encerrar.

Ele já terminou a instalação e aparentemente não teve nenhum erro, já que ele não informou nenhum erro ou warning nesse log, mas para termos certeza só utilizando mesmo o nosso notebook. Eu vou clicar no botão no canto superior esquerdo novamente, o botão "File > New > Notebook" ele vai gerar o nosso notebook, onde vamos fazer todo o nosso desenvolvimento.

Assim que ele abre a nova guia onde está o nosso notebook, ele pergunta qual kernel que queremos utilizar. Ele tem o kernel do Python 3 simples, sem nenhuma biblioteca pré-instalada, mas queremos utilizar o que instalamos, então vou clicar nesse campo de seleção aqui e buscar pelo nosso kernel, que é o "Python conda generalml_p37". Vou selecionar esse kernel, vou clicar no botão "Select" e agora podemos verificar no canto superior direito o nome do nosso kernel informando que estamos no kernel correto.

Esse notebook já vem com uma célula criada e essa célula é muito interessante, ela traz informações, como, por exemplo, o link para documentação, dicas de como checar a conexão do notebook, variáveis de ambiente. Eu recomendo que vocês explorem essa célula que traz muita informação legal. Mas o nosso foco é checar se está tudo correto com o nosso notebook e com nosso kernel.

Vou clicar na primeira célula e vou digitar "import ads", vou apertar o "Shift + Enter", que é um atalho para rodar uma célula. A primeira vez que rodamos uma célula vai demorar um pouco, porque ele vai iniciar todo esse kernel, vai fazer a conexão com o kernel, mas isso é o caso só da primeira célula. Podemos checar esse status no final da página, onde ele informa que está conectando com o kernel e ele já vai trazer o retorno para nós.

Demorou um pouco, mais do que eu esperava, mas apareceu. A célula está identificada que rodou já que podemos ver aqui do lado da célula temos o número 1 indicando que a célula rodou, então já temos o ADS, o Accelerate Data Science, importado para o nosso notebook. Vamos checar se está tudo certo com ele verificando a versão, então nessa próxima eu vou digitar "ads.version", vou apertar o "Ctrl + Enter", um outro atalho agora para rodar essa célula sem criar um abaixo, e ele exibiu que estamos na versão 2.5.4, que é a versão utilizada do ADS nesse kernel.

Parece que está tudo com kernel e estamos prontos para os nossos primeiros passos nesse projeto.

Criando modelo no Oracle Cloud - Lendo a base de dados

O time de tratamento e exploração dos dados já nos forneceu um CSV com todos os nossos dados já devidamente modificados. Vamos carregar esse CSV, que já vai estar disponível na aula para vocês fazerem o download dentro da nossa seção de notebook. Para trazer esse arquivo externo, vamos ao canto superior esquerdo, um ícone que tem o formato apontando uma seta para cima e ele é chamado de “Upload Files”.

Podemos clicar nesse botão, ele vai abrir uma tela e podemos selecionar o nosso arquivo. Eu coloquei o arquivo na pasta do curso, então vou clicar, o nome do nosso arquivo é "doença_cardiaca_final.csv", vou clicar em abrir. No nosso canto esquerdo, temos essa seção de pasta onde exibe os arquivos disponíveis, temos a pasta do “conda”, temos o nosso kernel e as instalações, o segundo é o CSV que acabamos de carregar e o terceiro é o nosso notebook.

Podemos clicar nesse botão "doença_cardiaca_final.csv", clicar com o botão direito do mouse, vai aparecer diversas opções, a opção que queremos é o "Copy Path", e agora temos o nome do nosso arquivo no nosso clipboard. Voltando nossa atenção para o notebook, precisamos encontrar uma maneira de fazer a leitura desse CSV e trazer aqui para no nosso notebook.

Vamos utilizar uma ferramenta do próprio ADS para carregar esses nossos dados. Para fazer isso, vou fazer o import dessa ferramenta. Vou criar uma nova célula depois da nossa versão e colar esse import. O import é: from ads.datasete.factory import DatasetFactory. Vamos utilizar esse recurso da ADS, que é uma fábrica de dataset, para fazer a leitura. Vou rodar essa célula com "Shift + Enter", ele vai importar.

Já temos acesso à ferramenta. Agora precisamos criar uma variável para guardar esses dados. Eu vou chamar essa variável de ds_tratado, que é o nosso dataset já tratado. ds_tratado = DatasetFactory. Uma dica aqui é que eu uso a tecla "Tab" do teclado para fazer o autocomplete, o notebook vai entender o contexto que queremos digitar e vai preencher para nós, ds_tratado = DatasetFactory.open(), abrir os parênteses e passar o nome do nosso arquivo.

Novamente, podemos clicar com o botão direito no nosso arquivo e clicar em "Copy Path". Agora voltando para o notebook, dentro dos parênteses colocamos aspas simples para indicar que é uma string e podemos colar o nome do nosso arquivo, ds_tratado = DatasetFactory.open('doenca_cardiaca_final.csv'). Podemos rodar essa célula com "Shift + Enter", ele vai aparecer uma tela de carregamento e já carregou rapidamente a nossa base de dados.

Para darmos uma analisada como ela está, podemos digitar ds_tratado, apertar o "Shift + Enter" e ele vai exibir um data frame. O data frame é composto de o nome das colunas na primeira linha, então coluna, por exemplo, a idade, cigarros por dia, essas são todas as features que descrevem o nosso paciente e vão ser através delas que o nosso modelo vai poder fazer a classificação se a pessoa vai desenvolver o DAC na próxima década ou não.

Esse dataset também é composto de diversas linhas que informam os valores, então o primeiro paciente tem idade de 39 anos, o segundo tem idade de 46 anos. Cada linha vai representar. No final desse dataset que exibe as primeiras cinco linhas, temos o número de linhas total do nosso dataset, que são 6.954 linhas por 15 colunas. Um ponto importante é analisarmos o tipo que o nosso “DatasetFactory” retornou.

Para vermos isso, digitamos o comando type(ds_tratado), "Shift + Enter" e ele vai exibir que temos um tipo "ads.dataset.dataset.ADSDataset". Estou dizendo que isso é muito importante porque a ferramenta ADS vai facilitar muito a nossa vida em diversos processos do pipeline Machine Learning, mas para ela conseguir fazer isso com qualidade precisamos começar a trazer informações para ela entender melhor o problema que estamos trabalhando.

A primeira coisa que podemos informar para ela é como nosso target ou a nossa coluna que estamos tentando classificar. Para fazer isso, podemos digitar ds_tratado.set_target(), dentro dos parênteses do método podemos passar o nome da coluna, que é o nosso target. O nosso time de tratamento e exploração passou que o nome da coluna é frisco_DAC_decada, então o risco da pessoa desenvolver o DAC na década, ds_tratado.set_target('risco_DAC_decada').

Quando fazemos o set_target ele vai fazer isso e vai retornar um Data set novo com esse target, então podemos utilizar o recurso de sobrescrever. Eu vou digitar ds_tratado = ds_tratado.set_target('risco_DAC_decada'), vou apertar o "Shift + Enter" e pronto. Para verificarmos se deu tudo certo, vamos digitar o comando type(ds_tratado), "Shift + Enter", e dessa vez ele retornou algo diferente para nós, que é o "ads.dataset.classification_dataset.BinaryClassificationDataset".

Olha que legal. Ele identificou que estamos tentando resolver um problema de classificação, ele identificou isso sozinho só de apontarmos o target para ele. E mais que isso, ele também identificou que é um tipo de classificação binária, onde só temos apenas o valor 0 e o valor 1, o 0 indicando que a pessoa não vai desenvolver o DAC e o 1 indicando que a pessoa vai desenvolver o DAC. Muito legal. Isso vai trazer diversos recursos através da ferramenta.

Já que estamos falando de target, vamos dar uma olhada se a nossa base está balanceada. Para fazer isso, digitamos novamente ds_tratado.target, agora ele já sabe o que quer dizer target, porque contamos para ele, ds_tratado.target.show_in_notebook. Quem participou da exploração e tratamento de dados conhece esse comando, ele é muito familiar no ADS porque ele normalmente exibe diversas informações que o ADS escolheu para nós, então vamos utilizá-lo.

Temos o ds_tratado.target.show_in_notebook(), "Shift + Enter". Eu vou descer um pouco a tela e ele criou um gráfico para nós. É um gráfico de barras informando a contagem que temos de pacientes que não desenvolveram a doença na primeira coluna, indicando pelo 0, e na segunda barra temos o valor 1, indicando elas desenvolveram a doença. A leitura que podemos fazer desse gráfico é que ambas as classes estão com a contagem de 3.500, então temos 3.500 pacientes que não desenvolveram a doença e 3.500 que desenvolveram, isso indica que a nossa classe está balanceada.

Isso é um ponto importante que temos que validar antes de começarmos a desenvolver modelos, porque um dataset com base desbalanceada, com targets desbalanceados, vai gerar normalmente modelos que vão ter tendência, então eles vão ter tendência a fazer classificações da classe mais presente. Para conseguir, por exemplo, uma precisão maior, eles vão fazer essas classificações através da classe que está mais presente, então para não cairmos nesse tipo de situação, sempre temos que validar essa informação.

Parece que o nosso dataset está pronto, foi bem tratado e agora já podemos começar a criar os nossos primeiros modelos.

Sobre o curso Machine Learning com Oracle ADS: produtividade na criação de modelos

O curso Machine Learning com Oracle ADS: produtividade na criação de modelos possui 173 minutos de vídeos, em um total de 58 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!

Plus

De
R$ 1.800
12X
R$109
à vista R$1.308
  • Acesso a TODOS os cursos da Alura

    Mais de 1500 cursos completamente atualizados, com novos lançamentos todas as semanas, emProgramação, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.

  • Alura Challenges

    Desafios temáticos para você turbinar seu portfólio. Você aprende na prática, com exercícios e projetos que simulam o dia a dia profissional.

  • Alura Cases

    Webséries exclusivas com discussões avançadas sobre arquitetura de sistemas com profissionais de grandes corporações e startups.

  • Certificado

    Emitimos certificados para atestar que você finalizou nossos cursos e formações.

Matricule-se

Pro

De
R$ 2.400
12X
R$149
à vista R$1.788
  • Acesso a TODOS os cursos da Alura

    Mais de 1500 cursos completamente atualizados, com novos lançamentos todas as semanas, emProgramação, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.

  • Alura Challenges

    Desafios temáticos para você turbinar seu portfólio. Você aprende na prática, com exercícios e projetos que simulam o dia a dia profissional.

  • Alura Cases

    Webséries exclusivas com discussões avançadas sobre arquitetura de sistemas com profissionais de grandes corporações e startups.

  • Certificado

    Emitimos certificados para atestar que você finalizou nossos cursos e formações.

  • Luri powered by ChatGPT

    Luri é nossa inteligência artificial que tira dúvidas, dá exemplos práticos e ajuda a mergulhar ainda mais durante as aulas. Você pode conversar com Luri até 100 mensagens por semana.

  • Alura Língua (incluindo curso Inglês para Devs)

    Estude a língua inglesa com um curso 100% focado em tecnologia e expanda seus horizontes profissionais.

Matricule-se
Conheça os Planos para Empresas

Acesso completo
durante 1 ano

Estude 24h/dia
onde e quando quiser

Novos cursos
todas as semanas