Conjuntos de dados de teste e treinamento
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:
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:
No entanto, quando usada no mundo real, descobrimos que ela faz previsões que se mostraram incorretas:
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:
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.