Predição de valor de venda de imóveis 🔗

Projeto para exercitar a construção de um Modelo de Regressão de Machine Learning.

Descrição do Projeto

O projeto para a construção do modelo não se preocupou no tratamento de dados, mas na metodologia para que, ao fim o modelo fosse o mais eficiente possível.

A descrição desse projeto é destinada a quem já possui um breve entendimento da área, por isso me privarei do esforço de explicar o que cada coisa é e irei me deter apenas a descrição de cada etapa (mais detalhes pode ser encontrado no código). Farei um resumo em forma de lista destacando o que foi feito e os motivos de cada decisão.

  • Exploração de Dados com:
    • describe(): exibe estatísticas descritivas básicas como média, desvio padrão e quartis
    • info(): mostra o tipo de dado de cada coluna, valores não nulos e uso de memória
    • Histograma da distribuição dos valores das casas: permite visualizar a frequência dos preços
    • Boxplot da distribuição de Outliers: identifica visualmente possíveis outliers
    • Remoção de Outliers: elimina valores extremos que podem distorcer o modelo
    • Junção de colunas que são compostas: agrupa informações que estão divididas em múltiplas colunas
  • Criando conjunto de testes
    • Verificando correlação das variáveis independentes com a dependente: ajuda a entender quais variáveis são mais relevantes para o modelo
    • Construindo a lógica de estratificação para separar o conjunto de testes: garante que a divisão preserve características importantes dos dados
    • Verificando a proporção da estratificação: assegura que a amostra de teste seja representativa
    • Uso do StratifiedShuffleSplit para a separação: ferramenta do scikit-learn para divisão estratificada
    • Remoção de Outliers: evita que valores extremos influenciem a separação dos dados
    • Junção de colunas que são compostas: melhora a representação das variáveis no conjunto de dados
  • Preparando dados para Machine Learning
    • Separação entre variáveis independentes e dependentes (conjunto de treino): organiza os dados para que o modelo possa aprender corretamente
    • Modelo de Regressão Linear do sklearn: algoritmo simples e eficiente para prever valores contínuos
    • Padronização dos dados: deixar os dados na mesma proporção
    • Ajuste e predição dos dados: treino do modelo e geração das previsões
  • Avaliando o modelo
    • Verificando diferença entre o predito e o real: avalia o erro entre as previsões e os valores reais
    • Uso das métricas MAE, MSE, RMSE, R² para avaliar o modelo
    • Teste de redução de dimensionalidade, remoção de outliers foram feitos na etapa anterior para identificar se houve melhora nas métricas do modelo (apenas a remoção de outliers resultou num melhor desempenho)
    • Verificação da distribuição dos Resíduos: permite avaliar se os erros do modelo seguem um padrão aleatório
    • Presença de Heterocedasticidade nos dados, o que resulta num modelo com falhas, principalmente para valores de casas mais altos (isso ocorre pois há poucos dados para essa faixa de preços)
    • Validação Cruzada para verificar a consistência do modelo: mede a robustez das métricas usando diferentes divisões dos dados
  • Uso do modelo no conjunto de teste
    • Uso da Regressão Linear nos dados de teste: aplica o modelo treinado em dados nunca vistos
    • Maior erro já que é executado com dados não vistos: mostra o desempenho real do modelo fora da amostra de treino

Tecnologias e Ferramentas

  • Python
  • sklearn, numpy, pandas
  • Estatística Básica
  • Mãos à Obra Aprendizado de Máquina com Scikit-Learn

Principais Insights

  • Remoção de muitas características da tabela diminui a explicabilidade e eficiência do modelo
  • Dados extremos prejudicam o modelo
  • Criação de Pipeline para executar mais rapidamente as funções em cima dos dados
  • Apenas características numéricas então não foi necessário o uso de One-Hot Encondinf para transformar variáveis categóricas em não categóricas

Aprendizados

  • Uso de estratificação para separar os dados (principalmente se for poucos dados)
  • Criação de Pipeline
  • Uso de ferramentas para Machine Learning