Objetivos de aprendizagem
- O1. Explicar generalização como a diferença entre erro no que se viu e erro no que virá.
- O2. Diagnosticar overfitting e underfitting a partir do comportamento das curvas de erro.
- O3. Decompor o erro de um modelo em viés, variância e ruído — e dizer o que fazer em cada caso.
- O4. Justificar por que o conjunto de teste precisa ser tocado o mínimo possível.
O problema: decorar não é aprender
Um estudante que decora a lista de exercícios resolvida vai bem na lista e mal na prova. Um modelo que decora os dados de treino vai bem no treino e mal em produção. É o mesmo fenômeno, e é o único problema deste livro — os outros capítulos são variações dele.
O nome técnico do fracasso é overfitting: o modelo ajustou-se não só ao padrão dos dados, mas também ao ruído deles. E ruído, por definição, não se repete.
O nome do fracasso oposto é underfitting: o modelo é simples demais para capturar o padrão, e erra igualmente no treino e no teste. Errar sempre é frustrante, mas é honesto — o modelo não engana ninguém sobre a própria qualidade. O overfitting é pior justamente porque parece sucesso enquanto está acontecendo.
O que separa os dois é a capacidade do modelo: quantas hipóteses diferentes ele consegue representar. Muita capacidade e poucos dados, ele decora. Pouca capacidade, ele não aprende. O trabalho é encontrar o ponto entre os dois — e, mais importante, saber onde você está nessa reta.
De onde isto veio
O aperto, e ele não nasceu na computação. Em 1931, S. C. Larson publicou no Journal of Educational Psychology um artigo sobre um problema prático e irritante: ao ajustar uma regressão múltipla numa amostra e aplicá-la a outra, o coeficiente de correlação encolhia. Sempre. O título é literalmente esse: "The Shrinkage of the Coefficient of Multiple Correlation". O aperto era um número que descrevia bem os dados que o produziram e mentia sobre os próximos.
O que se fazia antes. Avaliava-se o modelo nos mesmos dados em que ele foi ajustado, e o resultado era tomado como estimativa da qualidade. Não por ingenuidade: dado era caro, e separar metade dele para não usar parecia desperdício.
A virada. Guardar dados que o modelo não vê. É uma ideia quase ofensiva de simples, e a mais importante deste livro inteiro. Depois vieram as economias em cima dela: Mosteller e Tukey (1968) formulam o leave-one-out; Stone (1974) e Geisser (1975) constroem o arcabouço da validação cruzada. Note que Stone cita explicitamente Larson, Mosteller & Tukey e outros: o que ele traz de novo não é a prática, é o arcabouço que a justifica.
A ideia reaproveitável. Quem avalia não pode ser quem produziu, nem usar a mesma informação. A separação treino/teste é um caso particular de um princípio que vale muito além de modelos: o revisor precisa ser independente do autor; a prova precisa ter questões que não estavam na lista; o benchmark precisa ser secreto para medir alguma coisa. Toda vez que você vir um número bom demais, a primeira pergunta é "quem avaliou, e com qual informação?".
O nome. Cross-validation é literalmente validar cruzando: cada parte dos dados serve, por sua vez, de juiz das outras.
A curva em U — e a descoberta de que ela estava incompleta
A formulação canônica em Machine Learning do dilema viés–variância é Geman, Bienenstock & Doursat, "Neural Networks and the Bias/Variance Dilemma" (Neural Computation, 1992), que trata redes neurais como estimadores não-paramétricos e argumenta que a escolha do viés precisa casar com a estrutura do problema. Dali vem a curva em U que todo curso desenha: aumente a capacidade e o erro de teste cai, atinge um mínimo, e volta a subir.
Só que ela sobe e depois desce de novo. É a tese que Belkin, Hsu, Ma e Mandal declaram no resumo do artigo de 2019 (PNAS): a curva do double descent "subsumes the textbook U-shaped bias-variance trade-off curve by showing how increasing model capacity beyond the point of interpolation results in improved performance". Passando do ponto em que o modelo interpola perfeitamente o treino, o erro de teste volta a cair, e é isso que explica por que redes enormes funcionam onde a intuição clássica previa desastre.
A ideia reaproveitável, e é a que este capítulo mais quer que fique: uma "lei" empírica pode ser um artefato da faixa em que se mediu. A curva em U não estava errada — estava incompleta. Era verdadeira dentro do regime de capacidade que era observável nos anos 1990. Quando o regime mudou, a lei revelou-se um trecho de uma curva maior. Guarde isso para toda regra prática que você aprender: em que faixa isto foi medido?
E o crédito, de novo. Loog, Viering, Mey, Krijthe e Tax publicaram "A brief prehistory of double descent" (PNAS, 2020), uma carta de três páginas contestando que o fenômeno tivesse sido historicamente negligenciado. A frase é seca: "as opposed to what [1] reports, it has not been overlooked historically."
E a carta não se limita a reclamar: ela lista quem já tinha visto. Vallet, Cailton e Refregier demonstram o duplo descenso experimentalmente em 1989; Opper, Kinzel, Kleinz e Nehl dão o primeiro resultado teórico em 1990; e Duin, em 2000, é o primeiro a mostrar as curvas em dado real. A carta observa ainda que a razão entre tamanho de amostra e complexidade já era explícita em "various physics papers on learning", um dos quais se chama, sem rodeios, "The statistical mechanics of learning a rule" (Watkin, Rau e Biehl, Reviews of Modern Physics, 1993).
É a terceira vez que este livro encontra o mesmo padrão. Gauss perde a prioridade dos mínimos quadrados para Legendre no capítulo II.2; Linnainmaa perde o crédito do backpropagation para quem o popularizou, no capítulo III.1; e aqui, em 2019, acontece de novo — desta vez à luz do dia, com todos os artigos indexados e acessíveis. Se ocorre hoje, com essa infraestrutura toda, não era problema de correio lento no século XIX. Crédito segue comunicação, não descoberta — e este é o caso contemporâneo que torna os outros dois inegáveis.
Procedência das afirmações desta seção:
| Selo | Afirmação |
|---|---|
| ✓ | Tudo o que se atribui à carta de Loog, Viering, Mey, Krijthe e Tax — a frase "it has not been overlooked historically", a lista de quem viu antes (Vallet et al., 1989; Opper et al., 1990; Duin, 2000), e a menção a "various physics papers on learning" — de A Brief Prehistory of Double Descent, lida por inteiro, três páginas, com a lista de referências conferida |
| ✓ᵃ | A tese que Belkin, Hsu, Ma e Mandal declaram, e o trecho citado entre aspas, do resumo de Reconciling modern machine learning practice and the bias-variance trade-off — resumo lido no original; o corpo, não |
| ✓ᵐ | Metadados conferidos por DOI: Geman, Bienenstock & Doursat (Neural Computation 4(1):1–58, 1992, 10.1162/neco.1992.4.1.1); Stone (JRSS-B 36(2):111–133, 1974); Geisser (JASA 70(350):320–328, 1975); Larson, S. C., Journal of Educational Psychology 22(1):45–55, 1931, 10.1037/h0072400; Watkin, Rau & Biehl (Reviews of Modern Physics 65(2):499, 1993) |
| ⏳ | Que Larson seja a origem da divisão de amostra, e Mosteller & Tukey (1968) para o leave-one-out. A obra de Larson existe e está conferida; a primazia é atribuição corrente. O capítulo de 1968 não foi localizado em índice nenhum |
| ⏳ | Que Stone cita os antecessores e que sua contribuição é o arcabouço, não a prática — apurado, mas o texto de Stone não foi relido diretamente, e por isso nada dele aparece entre aspas neste capítulo |
| ❌ | A primeira formulação da decomposição viés–variância, anterior a 1992 — procurei e não localizei |
| 📖 | As duas ideias reaproveitáveis e a leitura do double descent como terceiro caso do padrão de crédito |
Fundamentos: a hipótese que sustenta tudo
Todo Machine Learning supervisionado repousa numa hipótese que raramente é dita em voz alta:
Os dados de treino e os dados que o modelo verá em produção vêm da mesma distribuição.
Se essa hipótese vale, minimizar o erro nos exemplos que você tem é uma aproximação razoável de minimizar o erro nos exemplos que virão. Isso tem nome, minimização do risco empírico (Empirical Risk Minimization, ERM), e é o que praticamente todo algoritmo de treino faz.
Se a hipótese não vale, tudo o que vem depois é decoração. E ela frequentemente não vale:
- Você treinou com dados de 2024 e opera em 2026 (o mundo mudou — drift, cap. V.3).
- Você treinou com clientes que a empresa já tinha e vai operar sobre clientes novos (viés de seleção, cap. I.3).
- Você treinou com fotos bem iluminadas e vai operar no escuro (mudança de domínio, cap. III.4).
Guarde isto: a métrica de teste é uma promessa condicional. Ela diz "se o futuro se parecer com este conjunto, o erro será aproximadamente este". Quando alguém reporta uma métrica sem dizer sob qual condição ela vale, está reportando meia informação.
As três divisões, e por que são três
| Conjunto | Para que serve | Quantas vezes se olha |
|---|---|---|
| Treino | ajustar os parâmetros do modelo | o tempo todo |
| Validação | escolher entre modelos, ajustar hiperparâmetros, decidir quando parar | muitas vezes — é para isso que existe |
| Teste | estimar o erro de generalização | o mínimo possível, idealmente uma vez |
A razão de o teste ser separado da validação é sutil e cara de aprender na prática. Cada vez que você olha a validação e muda algo por causa do que viu, você está usando aquele conjunto para tomar uma decisão — e, aos poucos, ajustando o modelo àquele conjunto. Com dezenas de decisões, o número da validação vira otimista: você fez overfitting na própria medição.
O teste existe para ser a testemunha que não foi coagida. Toda vez que você o consulta e reage ao que viu, ele perde um pouco dessa qualidade. Não há alarme, não há erro na tela: o número simplesmente vai ficando menos verdadeiro.
Quando os dados são poucos: validação cruzada
Separar um pedaço fixo para validação custa caro quando há pouca linha: o modelo treina com menos, e a estimativa fica ruidosa porque depende de quais exemplos calharam de ficar de fora.
A validação cruzada resolve isso por rodízio. Divide-se o treino em
Três coisas que a definição não deixa ver e custam caro:
- O teste continua fora disso, intocado. A validação cruzada substitui a divisão de validação, não a de teste.
- Todo pré-processamento entra no laço. Padronizar, imputar, codificar pelo alvo — tudo tem de ser calculado dentro de cada dobra, só com o treino daquela dobra. Calcular antes, com o dado inteiro, é o vazamento do capítulo I.3, repetido
vezes. - Se houver grupo ou tempo no problema, as dobras precisam respeitá-los. Cinco dobras embaralhadas erradas dão uma estimativa errada com intervalo estreito — pior que uma estimativa errada e obviamente incerta.
fundamentos-e1escolha umaUma equipe testa 40 configurações de modelo, medindo cada uma no conjunto de teste, e reporta a melhor: 94,2% de acurácia. Qual é o problema mais grave dessa prática?
fundamentos-e11escolha umaSegundo a tabela das três divisões, quantas vezes se olha para cada conjunto?
fundamentos-e5escolha umaO modelo A erra 2% no treino e 9% na validação. O modelo B erra 6% no treino e 7% na validação. Qual dos dois generaliza melhor?
fundamentos-e6escolha todas que valem"A métrica de teste é uma promessa condicional." Quais consequências decorrem dessa frase? (marque todas que valem)
A decomposição viés–variância
Quando um modelo erra, o erro esperado se decompõe em três parcelas — e cada uma pede uma ação diferente. Esta é provavelmente a ferramenta de diagnóstico mais útil do livro inteiro.
Viés (bias) — o erro de suposição. O modelo é sistematicamente incapaz de representar o padrão. Uma reta tentando descrever uma curva tem viés alto: não importa quantos dados você dê, ela continuará errando do mesmo jeito, na mesma direção.
Variância — o erro de instabilidade. O modelo é tão sensível aos dados específicos que recebeu que, treinado em outra amostra do mesmo fenômeno, produziria algo bem diferente. Variância alta é o sintoma matemático do overfitting.
Ruído irredutível — a parte que nenhum modelo alcança, porque o próprio fenômeno é aleatório ou porque a informação necessária não está nos dados. Perseguir essa parcela é o modo mais eficiente de desperdiçar um trimestre.
fundamentos-l1As três parcelas acima são fáceis de enunciar e continuam abstratas até alguém ver as duas curvas se separarem. Aqui não há nada a manipular: o dado é o mesmo o tempo todo, e a única coisa que se move é o grau do polinômio ajustado, de 1 a 15.
São 20 pontos de treino, sorteados de uma curva conhecida com ruído somado. A cada quadro, um grau a mais.
Assista as duas curvas. A azul, do erro de treino, só desce — sempre descerá, porque mais grau é mais liberdade para passar perto dos pontos que ela já viu. A laranja, da validação, desce junto no começo, encontra o fundo no grau 5 e depois vira para cima. Esse é o ponto exato em que ganhar liberdade deixa de ajudar e passa a atrapalhar.
Dois números do painel merecem ser lidos com calma:
- No fundo da curva, a validação marca cerca de 0,013. Não é zero, e não vai a zero: o ruído somado aos dados tem variância de aproximadamente 0,011, e esse é o piso irredutível. Nenhum grau, nenhum modelo, nenhuma quantidade de esforço atravessa esse chão.
- No grau 15, o treino cai para cerca de 0,003 — abaixo do piso. Um erro menor que o ruído não é um modelo melhor: é um modelo que decorou o ruído daqueles 20 pontos. E a validação, no mesmo grau, sobe para perto de 0,48, quase quarenta vezes o fundo.
Agora clique em "E com 3× mais dados de treino?". Vale tentar prever antes: o fundo muda de lugar?
Ele não muda. O melhor grau continua sendo o 5. O que muda é o preço de errar para cima: no grau 15, a validação sai de cerca de 0,48 para perto de 0,015, praticamente o piso. Mais dado não descobre o grau certo para você; ele torna o excesso de complexidade quase inofensivo, que é uma coisa diferente e mais útil de saber.
O diagnóstico prático
O sintoma é visível nas duas curvas de erro:
| Erro no treino | Erro na validação | Diagnóstico | O que fazer |
|---|---|---|---|
| alto | alto (parecido) | viés alto (underfitting) | modelo mais expressivo; melhores atributos; treinar mais |
| baixo | alto (bem maior) | variância alta (overfitting) | mais dados; regularização; modelo mais simples |
| baixo | baixo | bom — verifique se não há vazamento | vá ao teste, uma vez |
| alto | baixo | quase sempre um bug | investigue a divisão dos dados antes de comemorar |
A última linha merece atenção. Erro de validação melhor que o de treino costuma indicar que os conjuntos não são comparáveis — uma divisão mal feita, um vazamento invertido, ou regularização forte aplicada só no treino. É um resultado bom demais, e resultados bons demais são a pista mais confiável de que algo está errado (cap. I.3).
Uma advertência sobre a decomposição. A ideia de que mais capacidade sempre aumenta a variância é uma simplificação útil, e é falsa no regime das redes modernas. Modelos muito grandes, treinados muito além do ponto de interpolação, frequentemente voltam a generalizar bem, num fenômeno chamado double descent (Belkin et al., 2019, ✓). A intuição viés–variância continua sendo a melhor ferramenta de diagnóstico para o regime clássico, que é onde vive a maior parte do trabalho tabular deste livro, mas não é uma lei universal, e o capítulo III.2 volta ao assunto.
Cláusula de expiração. Escrevo em 2026 que a decomposição viés–variância é a ferramenta de diagnóstico dominante na prática tabular, e que o double descent é entendido como fenômeno do regime superparametrizado. Se, na próxima revisão, existir uma teoria unificada que preveja quantitativamente o comportamento de generalização nos dois regimes, esta seção precisa ser reescrita — não apenas emendada. Acompanhamento no placar de expiração.
fundamentos-e2escolha umaUm modelo atinge 0,98 de acurácia no treino e 0,71 na validação. Qual é o diagnóstico e a primeira ação razoável?
fundamentos-e7escolha umaUm modelo erra 31% no treino e 33% na validação. Qual é o diagnóstico?
fundamentos-e8escolha umaUm estagiário mostra o resultado, animado: 18% de erro no treino e 9% na validação. Qual é a leitura correta?
fundamentos-e9escolha umaUma equipe prevê se um paciente vai faltar à consulta. Nos últimos quatro meses trocou de modelo cinco vezes, quadruplicou os atributos e ajustou hiperparâmetros à exaustão. O erro de validação melhorou de 27% para 26,4% e não sai dali, sempre próximo do erro de treino. Qual parcela do erro explica melhor esse platô, e o que fazer?
fundamentos-e10responda com suas palavrasVocê herda um modelo de previsão de demanda com 4% de erro no treino e 19% na validação. Depois de dobrar a base de dados, os números passam a 7% e 15%. Depois de dobrar de novo, 9% e 14%.
Decomponha o que está acontecendo em viés, variância e ruído, e diga qual é a próxima ação — e qual você já pode descartar, com base nesses números.
fundamentos-e3complete a lacunaComplete o termo que falta na decomposição do erro esperado de um modelo:
erro esperado ≈ viés² + ______ + ruído irredutível
O vocabulário mínimo
Estes termos aparecem em todos os capítulos seguintes. Estão também no Glossário.
- Exemplo (ou instância, observação) — uma linha: um cliente, uma foto, uma transação.
- Atributo (feature) — uma coluna: idade, pixel 37, quantidade de palavras.
- Alvo (target, label) — o que se quer prever. Sua presença define o aprendizado como supervisionado.
- Modelo — a função que mapeia atributos ao alvo, mais os parâmetros que a especificam.
- Parâmetro — o que o treino ajusta (pesos). Hiperparâmetro — o que você escolhe antes do treino (taxa de aprendizado, profundidade). A confusão entre os dois causa metade dos erros de metodologia.
- Função de perda — a medida do quanto uma predição errou; é o que a otimização minimiza.
- Métrica — a medida que interessa a você. Nem sempre é a perda; quase nunca deveria ser (cap. II.1).
A distinção entre perda e métrica é a fonte de mal-entendidos mais persistente para quem está começando. A perda precisa ser diferenciável e bem-comportada para o otimizador; a métrica precisa ser interpretável e ligada à consequência no mundo. São propósitos diferentes, e otimizar a primeira esperando melhorar a segunda é uma aposta — às vezes boa, nunca automática.
Mão na massa
A etapa 00 do ml-zero monta o esqueleto: carregar um dataset, dividir em treino/validação/teste com seed fixa, e treinar a linha de base mais burra possível (prever sempre a classe majoritária).
Parece pouco. É o número mais importante do projeto: nenhum modelo que não bate a linha de base merece existir, e um número surpreendente de projetos em produção nunca calculou a sua.
Notebook pronto para executar — linha_de_base.ipynb · abrir no Colab
Monta as três divisões, treina a linha de base e mostra por que 81% de acurácia pode ser um resultado péssimo — o modelo não encontra um único positivo.
Na sua máquina:
pip install notebookejupyter notebook, ou abra a pasta no VS Code. O notebook não precisa do repositório clonado — se você estiver no Colab, ele baixa sozinho os arquivos de que precisa. Como rodar a trilha inteira:ml-zero.
Assista
A decomposição viés–variância é um daqueles conceitos que a prosa explica e o gráfico fixa. O vídeo mostra ajustes sucessivos ao mesmo conjunto de pontos, e a intuição visual de "a curva balança demais quando os dados mudam" é o que faz o termo variância deixar de ser jargão e virar algo que você reconhece de longe num gráfico de treino.
O vídeo só é pedido ao servidor de origem depois deste clique.
Síntese — o que levar
- Aprender é generalizar, não acertar no que já se viu.
- Toda métrica de teste é uma promessa condicional: vale enquanto o futuro se parecer com o teste.
- O vão entre treino e validação é seu diagnóstico primário: vão grande = variância; erro alto nos dois = viés.
- Validação para decidir, teste para testemunhar. Consultar o teste repetidamente não dá erro — só torna o número mentiroso.
- Antes de qualquer modelo, calcule a linha de base trivial. É o piso contra o qual todo o resto se mede.
fundamentos-e4responda com suas palavrasDesafio de fechamento. Explique, sem usar a palavra "overfitting" nem sinônimo dela, por que um modelo pode ir muito bem no treino e mal em produção. A proibição é o exercício: o nome está barrado justamente porque nomear parece explicar.
fundamentos-e12responda com suas palavrasDesafio de fechamento. O modelo foi medido no teste: 91%. Uma correção pequena foi feita depois disso, e a gerência pede para medir de novo no teste, "só para confirmar que a correção não piorou nada". O pedido é razoável e a pessoa que o faz não está sendo descuidada.
Escreva a resposta que você daria. Justifique por que a segunda medição custa alguma coisa, diga o que essa coisa é, e proponha o que fazer no lugar.
Verificação
- Você recebe um relatório com acurácia de 0,93 no teste. Que três perguntas você faz antes de acreditar?
- Um colega quer "usar o teste para escolher o melhor de três modelos, porque é o conjunto mais confiável". Onde está o erro do raciocínio?
Estas duas não são corrigidas, e a omissão é deliberada: valem pelo desacordo que produzem numa conversa, e a resposta que interessa é a que você sustenta diante de alguém.