Cinco Algoritmos, um Único Dataset: Por que o "Melhor" Modelo Depende do que Você Não Está Medindo
Em ciência de dados aplicada, a pergunta "qual é o melhor algoritmo?" costuma ser respondida com uma tabela de RMSE e uma escolha — quase sempre o modelo com a menor taxa de erro no conjunto de teste.
Mas essa resposta, por si só, esconde uma camada mais profunda de perguntas. O que acontece quando comparamos cinco algoritmos — Regressão Linear, Árvore de Decisão, Random Forest, Gradient Boosting e XGBoost — sobre o mesmo dataset, com as mesmas variáveis, a mesma divisão de treino e teste, e a mesma métrica? A resposta não é uma tabela de rankings. É um conjunto de contradições que revela como cada modelo enxerga o dado de forma fundamentalmente diferente.
E mais: revela que a escolha "vencedora" depende não apenas do dado, mas do que você precisa que o modelo faça.
O Dataset e as Regras do Jogo
Utilizei o dataset Ames Housing, amplamente conhecido na literatura de precificação imobiliária, com 2.930 observações e 82 variáveis originais. Optei por trabalhar com um subconjunto curado de 15 variáveis — escolhidas não por conveniência, mas porque cada uma representava um tipo específico de desafio matemático: variáveis numéricas contínuas, ordinais, categóricas com alta cardinalidade e variáveis com distribuição assimétrica.
A divisão foi fixa: 80% para treino e 20% para teste. Nenhum algoritmo viu o teste antes da avaliação final. A métrica de referência foi o RMSE (Root Mean Square Error), calculado em dólares.
Até aqui, nada de excepcional. É o protocolo padrão de qualquer competição.
Mas os resultados — e especialmente as explicações para eles — foram tudo menos padronizados.
Regressão Linear: O Menor Gap, Mas Não o Menor Erro
A Regressão Linear, estimada por Mínimos Quadrados Ordinários, apresentou RMSE de 33.067 no teste e gap de apenas 6,5% entre treino e teste (31.035 no treino). Esse é o menor gap entre os cinco algoritmos testados.
Por que a regressão linear, um modelo linear com poucos graus de liberdade, generaliza tão bem? Porque sua rigidez é também uma forma de regularização implícita. O modelo não tem flexibilidade para decorar particularidades do treino, então seu erro não explode fora da amostra.
Mas essa mesma rigidez tem um custo. Quando adicionamos regularização L2 (Ridge), o RMSE caiu marginalmente, para 33.046. Testando Elastic Net, o resultado foi ainda mais próximo, 33.032. A multicolinearidade severa entre "Ano de construção" e "Idade do imóvel na venda" não afetou a previsão pontual — mas tornou os coeficientes individuais instáveis, com sinais e magnitudes que não faziam sentido econômico. Esse é o ponto cego da métrica agregada: o RMSE não denuncia quando a interpretação individual de uma variável está comprometida.
Árvore de Decisão: O Símbolo do Overfitting
A árvore de regressão, treinada sem limite de profundidade, produziu o menor RMSE de treino de todo o experimento: 567 dólares. O erro de teste, porém, foi de 41.279 — um gap de mais de 7.000%.
O mecanismo é trivial de explicar matematicamente: a árvore minimiza a variância local em cada divisão, seguindo o critério de redução da soma de quadrados. Sem mecanismo de contenção, ela continua dividindo até isolar observações individuais (ou quase), transformando o treino em uma tabela de consulta e perdendo toda capacidade de generalização.
Podar a árvore por complexidade-custo (Cost-Complexity Pruning) reduziu o erro de teste para 39.003 — uma melhora real, mas ainda distante dos algoritmos de ensemble. A lição não é que árvores são inúteis; é que, como componente único, elas são frágeis. E é exatamente essa fragilidade que Bagging e Boosting vieram corrigir.
Random Forest: A Recomendação Clássica que Falhou Aqui
Random Forest, com 200 árvores e amostragem bootstrap, reduziu o erro de teste de 41.279 para 26.421 — uma melhora substancial, atribuível à redução de variância via agregação.
A fórmula que explica isso é:

A correlação média entre árvores () foi de 0,862. Essa correlação alta é o que limita o ganho adicional de adicionar mais árvores. Ela também explica por que a recomendação clássica de Breiman — sortear variáveis a cada divisão — piorou o desempenho neste dataset específico, elevando o RMSE para 29.813.
O mecanismo funcionou exatamente como prometido: o sorteio reduziu a correlação entre árvores (caindo para 0,805). Mas o custo foi maior: com apenas 15 variáveis, e o sinal concentrado em duas delas ("Qualidade geral" e "Área útil"), forçar as árvores a escolher entre um subconjunto reduzido de variáveis em cada divisão degradou a qualidade individual de cada árvore. O ganho em descorrelação não compensou a perda em qualidade preditiva.
Gradient Boosting: A Força do Aprendiz Fraco
Gradient Boosting segue a lógica oposta. Em vez de muitas árvores fortes combinadas em paralelo, ele usa árvores deliberadamente fracas (profundidade 3) e as combina em sequência, corrigindo o resíduo do modelo acumulado a cada passo:

Com taxa de aprendizado e 300 árvores, o RMSE de teste foi de 24.856 — o melhor entre os cinco algoritmos, com folga.
A surpresa é que a árvore base, sozinha, tem RMSE de 42.785, pior do que a árvore profunda (41.279). A estratégia de usar um modelo "ruim" de propósito, e corrigi-lo repetidamente com passos pequenos, produz um resultado superior ao de qualquer modelo forte isolado. A correção gradual impede o sobreajuste, mesmo com muitas árvores, porque cada nova árvore tem pouco poder individual para decorar o treino.
XGBoost: A Vantagem Teórica que Não se Confirmou
XGBoost, com sua aproximação de segunda ordem da função de perda, regularização sobre pesos de folha e poda automática, é o algoritmo dominante em competições. Aqui, porém, seu RMSE de teste foi de 28.158 — atrás não apenas do Gradient Boosting (24.856), mas também do Random Forest (26.421).
A explicação está na estrutura do problema. Para erro quadrático, a segunda derivada é constante, então a vantagem da aproximação de segunda ordem desaparece. E a regularização, que é um diferencial em datasets grandes e ruidosos, penalizou demais este problema pequeno, onde não havia overfitting severo o suficiente para justificá-la.
Quando testamos XGBoost sobre o dataset completo, com 79 variáveis, a história se inverteu: ele superou Gradient Boosting. A vantagem existe — mas depende de escala e complexidade do dado.
Feature Engineering: O Teste que Separa o Essencial do Redundante
Testamos dois tipos de combinação de variáveis. A primeira, uma combinação linear — "Idade do imóvel na venda" = "Ano de venda" − "Ano de construção" — não melhorou a Regressão Linear em nada (RMSE idêntico, 33.067), porque modelos lineares já representam combinações lineares através dos coeficientes.
Já uma interação multiplicativa — "Qualidade geral" × "Área útil" — melhorou todos os cinco algoritmos, com ganhos que variaram de 1,9% (Random Forest) a 14,7% (Árvore de Decisão). A razão é matemática: um modelo linear não pode representar o produto de duas variáveis usando apenas soma ponderada. A interação captura a dependência mútua — um metro quadrado extra vale mais numa casa premium do que numa casa básica.
A busca exaustiva por interações revelou algo mais sutil: a melhor interação para Regressão Linear ("Qualidade × Vagas de garagem") não era a melhor para Gradient Boosting ("Área da garagem × Área do porão"). A "melhor" feature depende do algoritmo — e essa tensão entre otimização específica e comparabilidade neutra atravessa todo o experimento.
O Problema da Codificação Categórica (e o que ela esconde)
"Bairro" é uma variável categórica com 28 categorias. Sob codificação one-hot, fragmentamos o sinal em 28 colunas binárias. Em uma árvore isolada, "Bairro" apareceu com apenas 1,5% de importância total — mesmo sendo, sabidamente, uma variável forte para preço.
Aplicamos Target Encoding (substituindo cada bairro pelo preço médio de venda daquele bairro, calculado apenas sobre o treino). A importância de "Bairro" saltou para 12,3%, tornando-se a terceira variável mais relevante do modelo.
Isso confirma um ponto central: a codificação não é neutra. O que parece "pouco importante" pode ser um artefato da representação escolhida. Modelos nativos para variáveis categóricas, CatBoost, LightGBM, e, desde a versão 1.5, também XGBoost, evitam essa fragmentação, mas o custo de usá-los é a perda de comparabilidade com outros algoritmos que exigem codificação numérica.
Dados Não Estacionários: O Teste de Mudança de Regime
Treinamos com dado pré-crise (até 2007), e testamos de duas formas, contra dado ainda dentro do período pré-crise, nunca visto, e contra dado pós-crise (2008 a 2010). A diferença entre os dois testes, não o erro isolado, é o que mede mudança de regime genuína, separando esse efeito do sobreajuste comum. O objetivo era medir qual algoritmo generaliza melhor quando o regime econômico muda.
Os resultados foram dramáticos. Random Forest, o algoritmo de melhor desempenho absoluto no período estável, teve o maior gap de erro fora do período de treino: +15,8%. Regressão Linear teve o menor gap, de apenas -0,9%.
A explicação está na própria estrutura dos algoritmos. Modelos flexíveis (árvores) se ajustam a padrões locais do período de treino. Quando esses padrões mudam, eles perdem precisão. Modelos rígidos (Regressão Linear) não se ajustam a padrões locais — mas também não são penalizados quando esses padrões mudam, porque sua representação é global e linear.
Esse teste reforça que "melhor algoritmo" não pode ser definido sem considerar o ambiente em que o modelo será usado. Se o ambiente é estável, flexibilidade é vantagem. Se o ambiente é instável, rigidez é proteção.
O Padrão Subjacente
Em quatro momentos distintos deste experimento, a versão mais sofisticada ou recomendada perdeu para uma alternativa mais simples:
Random Forest completo (com sorteio de variáveis) perdeu para Bagging puro.
A recomendação de Breiman perdeu para ambas.
XGBoost regularizado perdeu para Gradient Boosting comum.
Random Forest perdeu precisão no teste de mudança de regime.
O padrão não é coincidência. É a assinatura de um dataset com sinal concentrado em poucas variáveis e volume pequeno — condições em que a complexidade extra carrega custo sem benefício proporcional.
A Pergunta que Deve Preceder Qualquer Escolha
Este experimento não entrega uma resposta definitiva — entrega um método.
A pergunta não é "qual algoritmo é o melhor?". É:
Quantas variáveis você tem, e quão concentrado está o sinal entre elas?
Qual é o volume real de dado disponível?
Você precisa apenas prever, ou também interpretar o efeito de cada variável?
O ambiente em que o modelo será usado é estável ou sujeito a mudança de regime?
A resposta a essas perguntas, e não a reputação de nenhum algoritmo específico, é o que deve guiar a escolha. E essa escolha deve ser testada — com o mesmo rigor que este experimento aplicou, capítulo após capítulo, a um único dataset, do início ao fim.
Não carregue o algoritmo vencedor. Carregue as perguntas.



Comentários