Overfitting

Overfitting significa criar um modelo que corresponda (memorize) o conjunto de treinamento de perto que o modelo não faz previsões corretas com base em novos dados. Um modelo de overfitting é análogo a uma invenção que tem um bom desempenho no laboratório, mas não vale a pena no mundo real.

Na figura 11, imagine que cada forma geométrica representa a posição de uma árvore em uma floresta quadrada. Os diamantes azuis marcam os locais de árvores saudáveis, enquanto os círculos laranja marcam os locais das árvores doentes.

Figura 11. Esse número contém cerca de 60 pontos, metade dos quais
            árvores saudáveis e as outras árvores meio doentes.
            As árvores saudáveis estão principalmente no quadrante nordeste, embora algumas
            árvores saudáveis entram nos quadrantes do noroeste. As árvores doentes
            estão principalmente no quadrante sudeste, mas algumas das árvores doentes
            vão para outros quadrantes.
Figura 11. Conjunto de treinamento: locais de árvores saudáveis e doentes em uma floresta quadrada.

 

Desenhe mentalmente formas (linhas, curvas, formas ovais...qualquer coisa) para separar árvores saudáveis de árvores doentes. Em seguida, expanda a próxima linha para examinar uma possível separação.

As formas complexas mostradas na figura 12 categorizam, exceto duas, das árvores. Se considerarmos as formas como um modelo, esta será uma experiência fantástica um modelo de machine learning.

Ou será que não? Um modelo realmente excelente categoriza novos exemplos. A figura 13 mostra o que acontece quando o mesmo modelo faz previsões em novos exemplos do conjunto de teste:

Figura 13. Um novo lote de árvores saudáveis e doentes sobrepostas à
            conforme mostrado na Figura 12. O modelo categoriza incorretamente
            árvores.
Figura 13.Conjunto de teste: um modelo complexo para distinguir árvores doentes de árvores saudáveis.

 

Então, o modelo complexo mostrado na Figura 12 fez um ótimo trabalho no conjunto de treinamento mas foi um trabalho péssimo no conjunto de teste. Esse é um caso clássico de modelo overfitting aos dados do conjunto de treinamento.

Ajuste, overfitting e underfitting

Um modelo precisa fazer boas previsões em dados novos. Ou seja, seu objetivo é criar um modelo que se encaixe novos dados.

Como você aprendeu, um modelo de overfitting faz previsões excelentes no treinamento previsões inadequadas, mas com resultados ruins. Um Modelo underfit nem faz boas previsões nos dados de treinamento. Se um modelo de overfitting for como um produto com bom desempenho no laboratório, mas ruim no mundo real, um modelo underfit é como um produto que nem se sai bem no laboratório.

Figura 14. Gráfico cartesiano. O eixo X é rotulado como "qualidade das previsões
            no conjunto de treinamento". eixo Y é rotulado como “qualidade das previsões em
            dados reais". Uma curva começa na origem e aumenta gradualmente,
            mas cai com a mesma velocidade. A parte inferior esquerda da curva
            (baixa qualidade das previsões com dados do mundo real e baixa qualidade
            previsões sobre conjuntos de treinamento) é rotulado como "modelos de underfitting". O
            parte inferior direita da curva (baixa qualidade das previsões em
            dados reais, mas de alta qualidade de previsões no conjunto de treinamento)
            é rotulado como
"modelos com overfitting". O pico da curva (alta qualidade
            de previsões com dados do mundo real e média qualidade de previsões
            no conjunto de treinamento) é rotulado como
"modelos adequados".
Figura 14. Modelos underfitting, fit e overfitting.

 

Generalização é a oposto do overfitting. Ou seja, um modelo generaliza bem faz boas previsões com base em novos dados. Seu objetivo é criar um modelo que generalize para os novos dados.

Como detectar overfitting

As curvas a seguir ajudam a detectar o overfitting:

  • curvas de perda
  • curvas de generalização

Uma curva de perda traça a perda de um modelo em relação ao número de iterações de treinamento. Um gráfico que mostra duas ou mais curvas de perda é chamado de generalização curva. O seguinte de generalização mostra duas curvas de perda:

Figura 15. A função de perda do conjunto de treinamento
            declínios. A função de perda do conjunto de validação também diminui,
            mas, depois de certo número de iterações,
ele começa a aumentar.
Figura 15. Uma curva de generalização que implica fortemente um overfitting.

 

Observe que as duas curvas de perda se comportam de forma semelhante no início e, depois, divergem. Ou seja, após um certo número de iterações, a perda diminui ou permanece estável (convergente) para o conjunto de treinamento, mas aumenta para o conjunto de validação. Isso sugere um overfitting.

Por outro lado, uma curva de generalização para um modelo bem ajustado mostra duas curvas de perda. com formas semelhantes.

O que causa o overfitting?

Em linhas gerais, o overfitting é causado por um dos itens a seguir problemas:

  • O conjunto de treinamento não representa adequadamente dados da vida real (ou a conjunto de validação ou de teste).
  • O modelo é muito complexo.

Condições de generalização

Um modelo é treinado em um conjunto de treinamento, mas o verdadeiro teste do valor de um modelo é quão faz previsões sobre novos exemplos, especialmente em dados do mundo real. Ao desenvolver um modelo, o conjunto de teste serve como um proxy para dados do mundo real. Treinar um modelo que generaliza bem implica nas seguintes condições do conjunto de dados:

  • Os exemplos devem ser distribuídos de forma independente e idêntica, que é uma maneira sofisticada de dizer exemplos não podem influenciar uns aos outros.
  • O conjunto de dados é stationary, que significa o não muda significativamente ao longo do tempo.
  • As partições do conjunto de dados têm a mesma distribuição. Ou seja, os exemplos no conjunto de treinamento são estatisticamente semelhantes à no conjunto de validação, no conjunto de teste e em dados do mundo real.

Faça os exercícios a seguir para conhecer as condições anteriores.

Exercícios: testar seu conhecimento

Considere as seguintes partições de conjunto de dados.
Uma barra horizontal dividida em três partes: 70% da barra
                     é o conjunto de treinamento, 15% o conjunto de validação
                     o conjunto de teste
O que fazer para garantir que os exemplos no conjunto de treinamento têm uma distribuição estatística semelhante aos exemplos o conjunto de validação e o conjunto de teste?
Embaralhe os exemplos no conjunto de dados extensivamente antes particionando-os.
Sim. Um bom embaralhamento de exemplos deixa as partições muito mais provavelmente serão estatisticamente semelhantes.
Classifique os exemplos do mais antigo ao mais recente.
Se os exemplos no conjunto de dados não forem estacionários, a classificação torna as partições menos semelhantes.
Não fazer nada. Com exemplos suficientes, a lei das médias garante naturalmente que as distribuições sejam estatisticamente semelhantes.
Infelizmente, esse não é o caso. Os exemplos em certas seções do conjunto de dados pode diferir daquelas em outras em outras seções.
Um serviço de streaming está desenvolvendo um modelo para prever a popularidade de novos programas de TV em potencial nos próximos três anos. O planos de serviço de streaming para treinar o modelo em um conjunto de dados que contêm centenas de milhões de exemplos, dez anos. Este modelo terá algum problema?
Provavelmente. Espectadores os gostos mudam de maneira que o comportamento passado não prever.
Sim. As preferências do espectador não são estacionárias. Eles mudam constantemente.
Definitivamente não. O conjunto de dados é grande o suficiente previsões.
Infelizmente, os espectadores gostos não são estacionários.
Provavelmente não. Espectadores os gostos mudam de maneira previsivelmente cíclica. Dez anos de dados permitirão que o modelo faça boas previsões sobre tendências futuras.
Embora certos aspectos do entretenimento sejam um pouco cíclicos, uma treinado com base no histórico do entretenimento anterior quase certamente terá problemas para fazer previsões sobre os próximos anos.
Um modelo visa prever o tempo que leva para as pessoas caminharem 1,6 km com base em dados meteorológicos (temperatura, ponto de condensação e precipitação) coletadas ao longo de um ano em uma cidade cujo clima varia significativamente por estação. É possível criar e testar um modelo com conjunto de dados, embora as leituras meteorológicas mudem drasticamente em estação
Sim
Sim, é possível criar e testar um modelo com base nesse conjunto de dados. Você só precisa garantir que os dados sejam particionados igualmente, assim que os dados de todas as quatro estações do ano sejam distribuídos igualmente partições diferentes.
Não
Supondo que o conjunto de dados contenha exemplos suficientes de temperatura, orvalho ponto e precipitação, é possível criar e testar um modelo neste conjunto de dados. Você só precisa garantir que os dados estejam particionados igualmente, para que os dados de todas as quatro estações sejam distribuídos igualmente nas partições.

Exercício de desafio

Você está criando um modelo que prevê a data ideal para os passageiros comprarem um de trem para um trajeto específico. Por exemplo, o modelo pode recomendar que os usuários comprem a passagem no dia 8 de julho para um trem que parte no dia 23. A empresa de trens atualiza os preços por hora, com base em uma variedade de alguns fatores, mas principalmente no número atual de licenças disponíveis. Ou seja:

  • Quando há muitos assentos disponíveis, os preços dos ingressos normalmente são baixos.
  • Se houver poucos assentos disponíveis, os preços dos ingressos normalmente são altos.
Seu modelo tem exposições baixas nos conjuntos de validação e teste, mas às vezes terríveis previsões com dados do mundo real. Por quê?
Clique aqui para ver a resposta