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