Conjuntos de dados de teste e treinamento

Concluído

Os dados que usamos para treinar um modelo costumam ser chamados de um conjunto de dados de treinamento. Já vimos isso em ação. Para nossa decepção, quando usamos o modelo no mundo real, após o treinamento, não sabemos ao certo se esse modelo vai funcionar corretamente. Essa incerteza ocorre porque é possível que o nosso conjunto de dados de treinamento seja diferente dos dados no mundo real.

O que é sobreajuste?

Um modelo está sobreajustado se ele funciona melhor nos dados de treinamento do que em outros dados. O nome refere-se ao fato de que o modelo foi tão ajustado que ele chegou a memorizar os detalhes do conjunto de treinamento, em vez de encontrar regras amplas que se aplicam a outros dados. O sobreajuste é comum, mas indesejável. No fim das contas, nossa única preocupação é se o nosso modelo funciona bem com dados reais.

Como podemos evitar o sobreajuste?

Podemos evitar o sobreajuste de várias maneiras. A maneira mais simples é ter um modelo mais simples ou usar um conjunto de dados que seja uma representação melhor daquilo que é observado no mundo real. Para entender esses métodos, considere um cenário no qual os dados do mundo real tenham a seguinte aparência:

Diagram showing a plot graph of dog height and rescues.

Vamos supor que coletamos informações sobre apenas cinco cachorros, no entanto, e as usamos como nosso conjunto de dados de treinamento para ajustá-lo a uma linha complexa. Se pudermos fazer isso, poderemos ajustá-lo muito bem:

Diagram showing a complex line graph using only five dogs height and rescue information.

No entanto, quando usada no mundo real, descobrimos que ela faz previsões que se mostraram incorretas:

Diagram showing real-world vs training data in a graph of dog height and rescues.

Se temos um conjunto de informações mais representativo e um modelo mais simples, a linha que encontramos acaba fazendo previsões melhores, ainda que não sejam perfeitas:

Diagram showing a representative dog height and rescue graph using real world and training data.

Uma maneira complementar de evitar o sobreajuste é parar o treinamento depois que o modelo tiver aprendido regras gerais, mas antes que seja sobreajustado. Para isso, no entanto, precisamos detectar quando estamos começando a sobreajustar nosso modelo. Podemos fazer isso usando um conjunto de dados de teste.

O que é um conjunto de dados de teste?

Um conjunto de dados de teste, também chamado de conjunto de dado de validação, é um conjunto de dados semelhante ao conjunto de dados de treinamento. De fato, os conjuntos de dados de teste costumam ser criados tomando um grande conjunto de dados e dividindo-o. Uma parte desses dados é chamada de conjunto de dados de treinamento, e a outra é chamada de conjunto de dados de teste.

O trabalho do conjunto de dados de treinamento é treinar o modelo – já vimos isso antes. O trabalho do conjunto de dados de teste é verificar se o modelo funciona corretamente; ele não contribui diretamente com o treinamento.

OK, mas qual é a ideia por trás disso?

A ideia por trás de um conjunto de dados de teste é dupla.

Primeiro, se o desempenho do teste parar de melhorar durante o treinamento, podemos parar; não há nenhum motivo para continuar. Se continuarmos, podemos acabar incentivando o modelo a aprender detalhes sobre o conjunto de dados de treinamento que não estão no conjunto de dados de teste, o que configura sobreajuste.

Segundo, podemos usar um conjunto de dados de teste após o treinamento. Isso nos dá uma indicação de como o modelo final funcionará ao se deparar com dados "reais" que ainda não viu.

O que isso implica para as funções de custo?

Quando usamos tanto os conjuntos de dados de treinamento quanto os conjuntos de dados de teste, acabamos calculando duas funções de custo.

A primeira função de custo usa o conjunto de dados de treinamento, como já vimos antes. Essa função de custo é alimentada pelo otimizador e usada para treinar o modelo.

A segunda função de custo é calculada usando o conjunto de dados de teste. Usamos isso para verificar como o modelo pode funcionar no mundo real. O resultado da função de custo não é usado para treinar o modelo. Para fazer esse cálculo, vamos dar uma pausa no treinamento, ver como está o desempenho do modelo com um conjunto de dados de teste e, em seguida, retomar o treinamento.