1
resposta

[Projeto] Avaliação de Modelos de Machine Learning

Ao avaliar um modelo de Machine Learning, utilizamos métricas para medir seu desempenho e entender sua capacidade de generalização. Para modelos de regressão, três métricas são especialmente importantes.

O R², também chamado de Coeficiente de Determinação, mede o quão bem os dados se ajustam ao modelo. Um valor próximo de 1 indica um bom ajuste, enquanto valores baixos sugerem que o modelo não está explicando bem os dados. O MAE, ou Erro Médio Absoluto, representa a média dos erros absolutos entre as previsões e os valores reais. Quanto menor o MAE, melhor o modelo. Já o RMSE, a Raiz do Erro Quadrático Médio, é semelhante ao MAE, mas dá mais peso a erros maiores, tornando-o mais sensível a outliers.

Além das métricas, precisamos garantir que o modelo generalize bem para novos dados, evitando dois problemas comuns.

O primeiro problema é o overfitting, ou superajuste, que ocorre quando o modelo aprende excessivamente os padrões dos dados de treino, mas tem um desempenho ruim nos dados de teste. Isso acontece quando o modelo é muito complexo e memoriza os exemplos em vez de aprender padrões gerais. Podemos identificar overfitting quando o R² no treino é alto, mas no teste é baixo.

O segundo problema é o underfitting, ou subajuste, que acontece quando o modelo não consegue capturar os padrões dos dados, tanto no treino quanto no teste. Isso indica que o modelo é muito simples para a tarefa. Se o R² for baixo em ambos os conjuntos, é um sinal claro de underfitting.

Para avaliar o desempenho do modelo sem depender de uma única divisão entre treino e teste, podemos utilizar a validação cruzada, também conhecida como cross validation. No código implementado no vídeo anterior, usamos cross_val_score(model, features, labels, cv=5, scoring='r2'). Esse comando divide os dados em 5 partes, treinando o modelo em 4 partes e testando na parte restante. O processo é repetido até que todas as partes sejam usadas como teste, e a média dos resultados indica a capacidade do modelo de generalizar para novos dados.

Para entender melhor essa técnica, podemos pensar na analogia com um professor aplicando várias provas para avaliar um aluno. Em vez de confiar em uma única nota de um teste isolado, ele aplica cinco provas diferentes e calcula a média. Isso garante uma avaliação mais justa e representativa do conhecimento do aluno.

1 resposta

Olá, Marcus. Como vai?

Excelente resumo sobre os fundamentos da avaliação de modelos em Machine Learning! Sua explicação cobriu com muita clareza a diferença entre as métricas de regressão e os desafios clássicos de generalização que todo cientista de dados enfrenta no dia a dia.

A sua analogia do professor aplicando várias provas para explicar o funcionamento da validação cruzada ($K\text{-fold Cross Validation}$) ficou fantástica e torna o conceito extremamente didático para quem está estudando o tema.

Para agregar ainda mais valor ao seu tópico e complementar a sua excelente explicação, vale a pena detalhar o comportamento matemático e prático das métricas que você mencionou, especialmente para ajudar na escolha de qual usar em cada cenário de negócio:

  • MAE vs. RMSE (O impacto dos Outliers): Como você bem pontuou, o RMSE penaliza erros maiores de forma mais severa. Matematicamente, isso acontece porque os erros são elevados ao quadrado antes de tirarmos a média e a raiz quadrada. Na prática, se você está criando um modelo de previsão de preços de imóveis e errar por muito o valor de uma mansão (um outlier), o seu RMSE vai subir drasticamente, enquanto o MAE subirá de forma linear. Portanto, use o RMSE quando erros grandes forem inaceitáveis para o negócio.
  • O limite do R²: O Coeficiente de Determinação é excelente para entender a porcentagem da variância que seu modelo explica, mas ele tem uma armadilha: se você adicionar variáveis irrelevantes ou "ruído" ao seu modelo, o R² nunca diminui, ele tende a se manter igual ou subir artificialmente. Por isso, em modelos de regressão múltipla, uma boa prática é observar também o R² Ajustado, que penaliza a inclusão de colunas que não ajudam na previsão.

Para visualizar o comportamento do overfitting e do underfitting em relação à complexidade do modelo, podemos observar o seguinte gráfico conceitual:

Complementando o seu exemplo de código da validação cruzada:

from sklearn.model_selection import cross_val_score

# O seu exemplo executa com cv=5
scores = cross_val_score(model, features, labels, cv=5, scoring='r2')

# Uma boa prática após rodar o cross_val_score é calcular a média e o desvio padrão
print(f"R² Médio: {scores.mean():.2f}")
print(f"Desvio Padrão (Variância): {scores.std():.2f}")

Calcular o desvio padrão (scores.std()) dos resultados das 5 dobras é crucial. Se a média do R² for alta (ex: 0.85), mas o desvio padrão também for alto (ex: 0.20), isso significa que o modelo é instável e seu desempenho varia muito dependendo dos dados que recebe, o que acende um alerta para overfitting em dobras específicas.

Parabéns pelo post com nível de clareza digno de um artigo técnico! Com certeza vai ajudar muitos estudantes que estão desbravando o mundo do aprendizado de máquina.

Espero que possa ter lhe ajudado!