Trilha machine learning: Algoritmo de regressão linear




Hoje vamos falar sobre a regressão linear que é um algoritmo de aprendizado de máquina supervisionado usado para modelar a relação entre uma variável dependente (alvo) e uma variável independente (característica ou atributo), o objetivo é encontrar a melhor linha reta que descreva a relação entre essas variáveis. A regressão é uma técnica estatística, e em machine learning podemos usá-la com intuito de prever dados de acordo com essas variáveis que temos. O método mais comum de regressão linear é a regressão linear simples (temos também a regressão linear múltipla, vamos falar dela na próxima semana), a equação da linha de regressão é essa aqui: 

Y=aX+b
onde: 
Y é a variável dependente (ou resposta);
X é a variável independente (ou preditora);
a é o coeficiente angular, que representa a inclinação da linha de regressão;
b é o intercepto, que indica onde a linha de regressão cruza o eixo vertical (Y) quando X é zero.

Essa equação descreve a relação linear entre X e Y, quando você tem um conjunto de dados, a ideia é ajustar uma linha que melhor se ajuste aos pontos, minimizando a diferença entre os valores previstos pela equação da linha e os valores reais observados. Por exemplo, se estivermos usando essa equação para prever o preço de uma casa (Y) com base na área da casa (X), a seria a variação média no preço para cada unidade de variação na área, e b seria o preço inicial quando a área é zero (que pode não ter um significado prático neste contexto, mas é assim que funciona rs). Em termos mais simples, a e b são os parâmetros que ajustamos para criar uma linha que represente da melhor forma possível a relação linear entre as variáveis X e Y.

E por quê usar (ou não) a regressão linear? 
Vantagens: 
Simplicidade: Fácil de entender e interpretar. 
Eficiência: Pode ser computacionalmente eficiente e rápido para treinar. 
Interpretabilidade: Fornece interpretações diretas dos coeficientes. 

Desvantagens:
Linearidade: 
Assume uma relação linear entre variáveis, o que pode não ser verdadeiro em todos os casos. 
Sensível a Outliers: Sensível a dados atípicos que podem distorcer a linha de melhor ajuste. 

Exemplos de Uso: 
Previsão de Vendas: Pode ser usado para prever as vendas com base em variáveis como publicidade, preço do produto, etc. 
Previsão de Preços Imobiliários: Para prever o preço de uma propriedade com base em características como área, número de quartos, etc. 
Análise de Desempenho Acadêmico: Pode ser usado para prever o desempenho acadêmico de um aluno com base em variáveis como horas de estudo, participação em aulas, etc. 

Vamos praticar!

Começamos importando as bibliotecas do pyhton e carregando a nossa base, o conjunto de dados que estamos usando é o California Housing, nativo da biblioteca sklearn do python que contém cerca de 20.640 amostras com dados sobre habitações na Califórnia, como preço médio, número de quartos, renda média no bairro, etc...














Agora vamos analisar nossa base, primeiro vamos ver um pouco dos nossos dados, a função head() vai nos ajudar com isso:
 










Mas ainda antes de construirmos nosso modelo, vamos realizar algumas análises para entender um pouco sobre os nossos dados:

Calcular estatísticas descritivas para todas as variáveis, essa etapa ajuda a entender melhor nossos dados. Para isso, calculamos algumas estatísticas descritivas, como média, desvio padrão, valor mínimo, valor máximo e quartis para cada variável no conjunto de dados, isso nos dá uma ideia geral sobre a distribuição dos dados.

Calcular a matriz de correlação entre as variáveis, ela mostra como as diferentes variáveis no conjunto de dados estão relacionadas entre si. Se uma variável aumenta quando a outra aumenta, dizemos que elas têm uma correlação positiva. Se uma variável aumenta quando a outra diminui, a correlação é negativa. A matriz de correlação nos ajuda a identificar essas relações.

Visualiza a matriz de correlação usando um mapa de calor, ela ajuda a tornar mais fácil entender as relações entre as variáveis, usamos um mapa de calor, onde cada quadrado colorido no mapa de calor representa o quão fortemente duas variáveis estão relacionadas, quanto mais escura a cor, maior a relação entre elas, o mesmo vale para os números, quanto mais próximo do 1 melhor. 

Finalmente, podemos identificar as melhores variáveis, ou seja, aquelas com maior correlação absoluta com o alvo, as melhores variáveis serão aquelas que têm uma correlação absoluta mais alta com o preço médio das habitações, essas variáveis indicam uma relação mais forte com o alvo, no entanto, a interpretação exata pode depender de critérios específicos e do contexto do problema, então, lembre-se de que a escolha das melhores variáveis não deve se basear apenas na correlação, e fatores estatísticos, ter conhecimento sobre o domínio dos dados e do comportamento das influências externas sobre as amostras, também são pontos a se observar e entender antes de construir o nosso modelo.

Em python, fica assim:




Com essa análise podemos observar que o Target (preço médio das casas) tem uma forte relação com a variável MedInc (mediana da renda familiar na região), com essas variáveis podemos usar a renda familiar para prever o valor de uma casa na região, por exemplo, se em uma determinada região a renda média das pessoas é R$12.000,00, qual será o preço de uma casa? Poderíamos incluir outras variáveis mas aí já estaríamos indo para uma regressão múltipla, com várias variáveis, mas poderíamos sim usar por exemplo, a quantidade de quartos e a idade do imóvel para prever o seu valor, uma casa mais nova com mais quartos teria um valor mais alto, e assim por diante...

Agora que já entendemos a relação entre as nossas variáveis, vamos para o nosso modelo:










E essa foi a nossa regressão linear baseada nos dados habitacionais da Califórnia, e pensando no exemplo anterior que dei de uma renda mediana de R$12.000,00, podemos prever que o preço da habitação seria aproximadamente R$6.000,00. 
Uma coisa legal pra se observar é a existência de uma previsão totalmente discrepante das demais, nela uma família com renda média de R$4.000,00 habita em uma casa com valor médio de R$9.000,00, o que é totalmente inviável visto que a casa custaria mais que o dobro da renda familiar, isso nos leva a crer que a nossa base precisaria ser tratada de uma forma melhor, analisando o nosso gráfico, a base e conhecendo bem o domínio dos dados podemos melhorar bem a precisão do nosso modelo, o que chama atenção é que pra todas as medianas de renda, existem casas de aproximadamente R$5.000,00 formando uma reta por todo nosso gráfico, isso pode significar uma região de casas "padrão", ou até um erro no preenchimento da base. 
Por isso, lembre sempre de analisar e conhecer o máximo possível dos seus dados, isso vai ajudar muito na performance do modelo e nos seus resultados!

Espero ter contribuído de alguma forma, dúvidas e sugestões pode comentar!
Até a próxima! 😉









Comentários

Postagens mais visitadas deste blog

Resenha: Storytelling com dados - Cole Nussbaumer Knaflic

Trilha estatística: Variância e desvio padrão