Alura > Cursos de Data Science > Cursos de Data Science > Conteúdos de Data Science > Primeiras aulas do curso Data Science: modelos de regressão por baixo dos panos

Data Science: modelos de regressão por baixo dos panos

Entendendo a Regressão Linear - Introdução

Olá, tudo bem com você? Seja bem-vindo ou bem-vinda ao nosso curso sobre regressão, nesse curso vamos ver regressão linear, regressão logística e podemos também aplicar esses conceitos para diversas outras áreas do Machine Learning.

Para a aplicação aí, o nosso curso, vamos ver como é que eu posso dizer o valor de um imóvel, dada a sua área, esse vai ser o nosso primeiro problema, bem simples até, uma única variável, depois vamos expandir esse conceito, para várias variáveis.

Vamos ver aqui, como que eu posso usar além da área do meu imóvel, a distância dele até a praia, a distância dele até uma farmácia ou outras várias coisas que a gente pode acrescentar depois, sem problema nenhum e justamente para isso, temos basicamente dois métodos, já mais consagrados para otimizar a nossa regressão, o nosso modelo.

Como a gente vai fazer isso tudo debaixo dos panos, a gente vai entender como é que... o nosso modelo é otimizado, passo a passo, um dos métodos aqui é os mínimos quadrados, a gente vai usar ele primeiro, que é um método um pouco mais antigo, mas muito eficiente, porque ele é um método analítico.

Depois disso, vamos usar os métodos mais atuais, como gradiente descendente, ele é um método extremamente útil hoje, é o método mais usado para otimizar vários modelos desde modelos de regressão até redes neurais, hoje em dia.

E justamente por isso, vale a pena conferir como é que é o passo a passo de otimização com o gradiente descendente. Depois de tudo isso, vamos também ir para regressão logística, onde usamos os mesmos dados, vamos acrescentar uma única coluna ali, se vale ou não a pena comprar o nosso imóvel.

Um imóvel qualquer, dado seu valor, área, distância dele até a praia, distância até a farmácia, vamos tentar dizer se vale ou não vale a pena, para isso vamos mudar um pouquinho a nossa regressão, invés de usar uma linha, vamos tentar uma curva logística e ela é um pouco mais adequada para esse tipo de problema.

E, também aqui, vamos usar novamente um gradiente descendente, responder algumas perguntas práticas aqui, tentar simular um imóvel e muito mais, comparando aqui também com a biblioteca do Sklearn, que já é uma biblioteca consagrada e bem robusta.

O Machine learning já tem todos esses métodos implementados, mas vocês vão ver que é muito interessante a gente conferir como é que cada modelo desse, cada método de otimização funciona debaixo dos panos. E aí, vamos conferir o curso?

Entendendo a Regressão Linear - Entendendo a regressão linear

No link a seguir, você pode baixar o projeto final do curso Regressão Linear: Técnicas Avançadas de Modelagem, no qual você encontra a pasta com o conjunto de dados que serão utilizados.


Então, hoje vamos fazer uma regressão linear aqui, usando um conjunto de dados sobre imóveis, imóveis do Rio de Janeiro, são cinco mil imóveis e cada um deles tem um valor e uma área e a partir da área desses imóveis, eu quero determinar qual que é o preço dele, qual é o valor desse imóvel?

O valor dos nossos dados estão todos em reais e a área em metros quadrados, como a ideia desse curso é fazer uma regressão linear literalmente por debaixo dos panos, vamos usar apenas bibliotecas básicas, então vamos importar algumas dessas bibliotecas.

Vamos dar um “import numpy as np”, ele o numpy é uma biblioteca de álgebra linear e vamos dar um “import pandas as pd” que ele vai fazer a abertura do nosso arquivo aqui, que a gente vai usar do conjunto de dados. Rodou aqui com “Shift + Enter”. Agora, vamos importar os nossos dados.

Vamos chamar os nossos dados de “df” aqui, que é o data freme do Pandas, então vamos importar aqui, “pd.read_csv” e aqui vamos colocar a string de onde estavam os nosso dados, é: “dados/”, é o nosso data set, chama “dataset_reg_linear_simples”, vamos dar uma olhadinha de como é que os nossos dados estão com comando hed: “df.head”, colocar ali os parênteses abrindo e fechando.

Então aqui, a gente consegue ver alguns... os primeiro cinco imóveis, cada uma deles tem uma área e cada um deles tem um valor, vamos olhar aqui, por exemplo, esse imóvel de número 01, ele custa R$ 900.000,00 (novecentos mil reais) e tem uma área de 208m² (duzentos e oito metros quadrados).

Esse conjunto de dados, ele também já foi usado em outro curso aqui da Alura, no caso, é esse curso aqui, Regressão Linear: Técnicas Avançadas de Modelagem. Neste curso, também é um curso sobre regressão linear, nós vemos que ele fez uma transformação de dados.

Ele fez uma transformação de dados, para que os nossos dados fossem um pouco mais linearmente visíveis, fica um pouco mais fácil de a gente tratar eles como uma reta, então vamos repetir essa transformação de dados, que o professor já fez.

Então, vou pegar aqui “df”, colocar aqui dentro de colchetes “Valor” e receber a transformação que ele fez, que é uma transformação logarítmica, então vamos pegar aqui a função .log aqui, “np.log” da nossa própria coluna, “Valor”. Então, a coluna valor está recebendo o logaritmo da própria coluna valor.

E vamos fazer isso exatamente igual também para a coluna de área, então eu dei “Ctrl + C”, “Ctrl + V” aqui, vamos substituir o valor pela área. Agora, a nossa transformação de dados está realizada. Agora que os nossos dados já estão um pouco mais em formato de linha, de uma reta mesmo, vamos tentar visualizar isso.

Vamos importar algumas bibliotecas de visualização com o “matplotlib.pyplot as plt” e também o seaborn, que é uma extensão ai do matplotlib, “import seaborn as sns” e também o “matplotlib” aqui, “inline” para facilitar as nossas funções dentro do Jupiter.

Aqui, como a gente vai desenhar um gráfico, é sempre bom a gente colocar um título nele, colocar as legendas dos eixos X e Y, então, como esse não é um curso focado em visualização de dados, eu já deixei isso aqui pronto para vocês.

Então vamos simplesmente fazer a função aqui no nosso gráfico, “ax”, que eu chamei do gráfico, o gráfico vai chamar “ax” e vamos colocar aqui “sns”, como estamos usando o seaborn, “.scatterplot”, que é um gráfico que vai distribuir, mostrar a distribuição de cada imóvel em formato de pontinhos.

A gente vai ver como aqui os pontinhos são, se comportam em torno do valor e da área. No eixo X, vamos ter a área, é o “df” a coluna de área aqui “df”, dentro da coluna aqui, área e no eixo Y, vamos ter a coluna de valor. Estão aqui, o gráfico já é rapidinho, aqui já podemos ver.

A gente consegue ver que cada pontinho desse representa um imóvel em é fácil a gente imaginar uma reta passando aqui no meio de todos esses pontos. Agora, a questão é, como é que eu vou fazer essa reta? Uma reta, a gente sabe que ela uma inclinação, ela tem um ponto que ela corta aqui o eixo de valor, o eixo do... o eixo Y aqui, mas e agora, como a gente vai calcular isso?

Entendendo a Regressão Linear - Passos inciais

Então, queremos representar os nossos dados aqui com uma reta. Então, vocês lembram aqui, equação da reta, equação da reta é o que? Um valor, um primeiro valor aqui, é um dos parâmetros, é a inclinação da nossa reta, esse parâmetro é importante para dizer se a nossa reta está subindo ou se ela está assim ou se está descendo, ela está mais para baixo, como que é o comportamento dela?

O segundo parâmetro, esse theta zero, ele nos diz onde é que a nossa reta corta o eixo Y, no caso aqui, o valor. Esse último parâmetro aqui que eu coloquei, é o erro, ele simplesmente vai dar a distância entre o valor que eu quero, o valor real e o valor previsto que eu estou classificando com a minha reta.

Então, vamos tentar escrever aqui uma função que retorna o valor que eu estou querendo, previsto aqui, com a minha reta, o meu modelo. Então, eu vou colocar “def” para iniciar uma função, prever e isso vai receber o que? Um valor, que da minha área, eu vou chamar de “xi” aqui e meus parâmetros, theta1 e theta0, a partir disso aqui, eu vou retornar exatamente o valor dessa função aqui.

Então, eu vou dar o “return” o “xi” multiplicado pelo theta1 + o theta0 e nisso aqui, eu tenho exatamente a mesma função daqui de cima, que é a equação da reta. Depois disso, nós podemos... temos que saber, avaliar aqui essa funçãozinha de prever que é basicamente o nosso modelo.

Para avaliar isso, a gente pode usar a ideia aqui desse erro aqui. Esse erro, ele é a distância entre o valor previsto e o valor real, o valor real do meu imóvel, essa distância ela pode ser uma distância positiva ou negativa, se eu prever um valor acima do real, é uma coisa positiva, se eu prever um valor abaixo do real, é negativo.

Então, eu vou somar o erro para cada um dos meus cinco mil imóveis, mas notem que se eu tiver um erro positivo e um erro negativo, na hora que eu for somar tudo, eu posso cancelar um erro com o outro, não é isso que eu quero.

Então, eu vou elevar todos os erros ao quadrado, para eliminar aí o problema do sinal, depois vou tirar a média de todos os erros, simplesmente para a gente ter uma noção de como é que está o erro para cada um dos imóveis, então agora vamos implementar a função do erro quadrático médio.

implementando ela, a gente pode chamar ela de, literalmente, erro quadrático médio, esse erro quadrático médio é definido por esta função que está aqui em cima, só para dar uma olhadinha nela. Está aqui a ideia do erro, que vai subtrair o valor previsto e o valor que eu calculei, o real.

Vai elevar ao quadrado, vai somar tudo e dividir pela quantidade, no nosso caso, cinco mil, ele vai... essa função vai receber como parâmetro então, o valor previsto e o valor real, vou chamar o valor real aqui de Y, notar, aqui que cada valor aqui é uma posição de um vetor e esse vetor tem todos os valores previstos e todos os valores reais.

Então, essa função vai retornar à media. Vamos fazer, implementar isso aqui de dentro para fora, vamos primeiro fazer essa subtração aqui, que vai ser “yi” na posição “i” aqui, menos o y previsto e isso aqui, eu vou colocar entre parênteses aqui para elevar isso aqui ao quadrado.

Elevei ao quadrado. Agora, eu quero fazer isso aqui para cada posição do meu vetor, então eu vou colocar anotação de vetor e isso aqui vai acontecer para cada posição do meu vetor, então vai ser para cada “yi” e “y” previsto, dentro do meu vetor. O meu vetor aqui, eu vou representar ele como uma função zip, que vai ser simplesmente para agrupar os valores previstos e os valores reais.

Então, vai ser “y”, vírgula o previsto, aqui então vai ter um vetor contendo todos os erros quadráticos, falta só somar tudo e tirar a média, para isso vamos usar uma função mais simples aqui do numpy array, vou colocar tudo isso aqui dentro de uma função numpy array, que vai transformar isso aqui num array do numpy.

O array do numpy é muito mais fácil de se mexer, porque aqui eu vou e coloco uma função, aplico direto a função mean que é a função de média e nisso aqui, eu já tenho a função do erro quadrático médio. Usando essa função aqui, eu sei avaliar se o meu modelo, a minha reta, ela representa bem os meus dados ou não.

Eu sei... eu posso dizer se a minha reta realmente está no meio dos meus dados aqui ou se ela está bem distante, lá para cá, para cá ou sei lá onde. Agora, como é que eu vou escolher os meus valores de theta0 e theta1?

Sobre o curso Data Science: modelos de regressão por baixo dos panos

O curso Data Science: modelos de regressão por baixo dos panos possui 111 minutos de vídeos, em um total de 43 atividades. Gostou? Conheça nossos outros cursos de Data Science 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 Data Science acessando integralmente esse e outros cursos, comece hoje!

Plus

  • Acesso a TODOS os cursos da plataforma

    Mais de 1200 cursos completamente atualizados, com novos lançamentos todas as semanas, em Programaçã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.

  • 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.

12X
R$85
à vista R$1.020
Matricule-se

Pro

  • Acesso a TODOS os cursos da plataforma

    Mais de 1200 cursos completamente atualizados, com novos lançamentos todas as semanas, em Programaçã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.

  • 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.

12X
R$120
à vista R$1.440
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