Overfitting (sobreajuste) acontece quando um modelo se ajusta demais aos detalhes dos exemplos de treinamento, incluindo coincidências e erros. Vai bem no que já viu e pior com dados novos. O caso extremo é decorar, como quem decora as respostas de uma prova antiga e se perde quando mudam as perguntas.
📚Milhares de exemplos→⚙️Ajusta seus números→🆕Testa com dados novos
Teste o que aprendeu
Uma pergunta do app. Escolha uma resposta.
Um modelo acerta o que estudou e erra em casos novos parecidos. O que houve?
É sobreajuste (overfitting): aprendeu detalhes dos seus exemplos que não servem em casos novos. Decorar as respostas é o caso extremo.
Costuma piorar: mais voltas nos mesmos exemplos o ajustam ainda mais a eles. Ajudam dados mais variados e testar com dados à parte.
Um modelo não se cansa: ao terminar, seus números ficam fixos. Erra porque ficou com detalhes dos seus exemplos que não se repetem no novo.
Antes de treinar, separam-se dados com que o modelo não aprende: os de validação, para decidir durante o treino, e o conjunto de teste, guardado para a avaliação final. Se nos seus exemplos ele acerta 99% e nos dados separados 70%, essa distância é o sinal.
Um exemplo: um filtro de spam treinado com poucos e-mails. Por acaso, vários spams chegaram numa terça, e o modelo aprende que "terça" significa spam. Nos e-mails de treinamento funciona perfeito; nos da semana seguinte, manda mensagens normais para o spam.
Como evitar
Mais dados e mais variados: se há spam de todos os dias, "terça" deixa de parecer uma pista. Um modelo mais simples: com menos capacidade de decorar, precisa ficar com o geral. Parar na hora certa: mede-se com os dados de validação enquanto treina e para quando ali deixa de melhorar, mesmo que nos de treinamento continue subindo. O conjunto de teste fica intocado até o final.
O oposto: underfitting
Underfitting (subajuste) é ficar aquém: o modelo é simples demais ou treinou pouco e erra tanto no que viu quanto no novo. Como quem leu só a contracapa e não sabe nem as respostas da prova antiga. O bom machine learning busca o meio-termo entre os dois.
Erros comuns
"Se acerta quase tudo no treino, é um bom modelo." O que importa é como vai com dados que não viu. "Treinar mais voltas resolve." Com os mesmos exemplos, costuma decorá-los mais. "Minhas evals vão bem, então generaliza." Só se os casos de teste não estavam no que o modelo usou para aprender.