Por que existe uma assimetria entre a etapa de treinamento e a etapa de avaliação?

27

É sabido, especialmente no processamento de linguagem natural, que o aprendizado de máquina deve prosseguir em duas etapas, uma etapa de treinamento e uma etapa de avaliação, e eles devem usar dados diferentes. Por que é isso? Intuitivamente, esse processo ajuda a evitar o ajuste excessivo dos dados, mas não vejo uma razão (teórica da informação) que seja esse o caso.

De maneira semelhante, vi alguns números sobre o quanto de um conjunto de dados deve ser usado para treinamento e quanto para avaliação, como 2/3 e 1/3, respectivamente. Existe alguma base teórica para escolher uma distribuição específica?

Tamzin Blake
fonte

Respostas:

15

É engraçado que a resposta mais votada realmente não responda à pergunta :) então eu pensei que seria bom apoiar isso com um pouco mais de teoria - principalmente tirada de "Mineração de Dados: Ferramentas e Técnicas Práticas de Aprendizado de Máquina" e Tom Mitchell's "Aprendizado de máquina" .


Introdução.

Portanto, temos um classificador e um conjunto de dados limitado, e uma certa quantidade de dados deve ser inserida no conjunto de treinamento e o restante é usado para teste (se necessário, um terceiro subconjunto usado para validação).

O dilema que enfrentamos é o seguinte: para encontrar um bom classificador, o "subconjunto de treinamento" deve ser o maior possível, mas, para obter uma boa estimativa de erro, o "subconjunto de teste" deve ser o maior possível - mas ambos os subconjuntos são retirados do mesma piscina.

É óbvio que o conjunto de treinamento deve ser maior que o conjunto de testes - ou seja, a divisão não deve ser 1: 1 (o objetivo principal é treinar , não testar ) - mas não está claro onde a divisão deve estar.

Procedimento de espera.

O procedimento de dividir o "superconjunto" em subconjuntos é chamado de método de validação . Observe que você pode facilmente ter azar e exemplos de uma determinada classe podem estar ausentes (ou super-representados) em um dos subconjuntos, que podem ser abordados através de

  • amostragem aleatória, que garante que cada classe seja representada adequadamente em todos os subconjuntos de dados - o procedimento é chamado de validação estratificada
  • amostragem aleatória com repetido processo de treinamento-teste-validação em cima - o que é chamado de repetição estratificada

Em um único procedimento de repetição (não repetido), considere trocar as funções dos dados de teste e treinamento e calcular a média dos dois resultados, mas isso só é plausível com uma divisão de 1: 1 entre os conjuntos de treinamento e teste que não é aceitável (consulte Introdução ) Mas isso dá uma idéia e um método aprimorado (chamado validação cruzada é usado) - veja abaixo!

Validação cruzada.

Na validação cruzada, você decide um número fixo de dobras (partições dos dados). Se usarmos três dobras, os dados serão divididos em três partições iguais e

  • usamos 2/3 para treinamento e 1/3 para teste
  • e repita o procedimento três vezes para que, no final, todas as instâncias tenham sido usadas exatamente uma vez para o teste.

Isso é chamado de validação cruzada tríplice e, se a estratificação também for adotada (o que geralmente é verdade), é chamada validação cruzada tríplice estratificada .

Mas eis que a maneira padrão não é a divisão 2/3: 1/3. Citando "Mineração de Dados: Ferramentas e Técnicas Práticas de Aprendizado de Máquina" ,

A maneira padrão é [...] usar a validação cruzada 10 vezes estratificada. Os dados são divididos aleatoriamente em 10 partes, nas quais a classe é representada aproximadamente nas mesmas proporções que no conjunto de dados completo. Cada parte é realizada por sua vez e o esquema de aprendizado é treinado nos nove décimos restantes; sua taxa de erro é calculada no conjunto de holdout. Assim, o procedimento de aprendizado é executado um total de 10 vezes em diferentes conjuntos de treinamento (cada um com muito em comum). Finalmente, as 10 estimativas de erro são calculadas como médias para produzir uma estimativa de erro geral.

Por que 10? Porque "testes ..Extensive em numerosos conjuntos de dados, com diferentes técnicas de aprendizagem, têm mostrado que 10 é sobre o número certo de dobras para obter a melhor estimativa de erro, e há também alguma evidência teórica que faz isso .." I haven não encontrou quais testes extensivos e evidências teóricas eles queriam dizer, mas este parece ser um bom começo para cavar mais - se desejar.

Eles basicamente dizem

Embora esses argumentos não sejam de forma alguma conclusivos, e o debate continue sendo travado nos círculos de aprendizado de máquina e de mineração de dados sobre qual é o melhor esquema para avaliação, a validação cruzada de 10 vezes se tornou o método padrão em termos práticos. [...] Além disso, não há nada mágico no número exato de 10: 5 ou 20 vezes que a validação cruzada provavelmente seja quase tão boa.

Bootstrap, e - finalmente! - a resposta para a pergunta original.

Mas ainda não chegamos à resposta sobre por que o 2/3: 1/3 é frequentemente recomendado. Minha opinião é que ele é herdado do método bootstrap .

É baseado em amostragem com substituição. Anteriormente, colocamos uma amostra do "conjunto principal" em exatamente um dos subconjuntos. O bootstrap é diferente e uma amostra pode aparecer facilmente nos conjuntos de treinamento e teste.

Vamos analisar um cenário específico em que pegamos um conjunto de dados D1 de n instâncias e o amostramos n vezes com substituição, para obter outro conjunto de dados D2 de n instâncias.

Agora observe atentamente.

Como alguns elementos no D2 serão (quase certamente) repetidos, deve haver algumas instâncias no conjunto de dados original que não foram selecionadas: nós as usaremos como instâncias de teste.

Qual é a chance de uma instância específica não ter sido capturada para o D2 ? A probabilidade de ser apanhada em cada tomada é 1 / n, portanto o oposto é (1 - 1 / n) .

Quando multiplicamos essas probabilidades, é (1 - 1 / n) ^ n que é e ^ -1 que é cerca de 0,3. Isso significa que nosso conjunto de testes será de cerca de 1/3 e o conjunto de treinamento será de cerca de 2/3.

Eu acho que essa é a razão pela qual é recomendável usar a divisão 1/3: 2/3: essa proporção é obtida a partir do método de estimativa de inicialização.

Embrulhando-o.

Quero terminar com uma citação do livro de mineração de dados (que não posso provar, mas assumo correto), onde eles geralmente recomendam preferir a validação cruzada 10 vezes:

O procedimento de autoinicialização pode ser a melhor maneira de estimar erros para conjuntos de dados muito pequenos. No entanto, como a validação cruzada [...] de exclusão única, ela tem desvantagens que podem ser ilustradas considerando uma situação especial e artificial [...] como um conjunto de dados completamente aleatório com duas classes. A taxa de erro real é de 50% para qualquer regra de previsão. Mas um esquema que memorize o conjunto de treinamento daria uma pontuação de re-substituição perfeita de 100%, para que as instâncias de classificação = 0, e o bootstrap 0.632 o misture com um peso de 0,368 a forneça uma taxa de erro geral de apenas 31,6% (0,632 ¥ 50% + 0,368 ¥ 0%), o que é enganosamente otimista.

andreister
fonte
13

Considere um conjunto finito de m registros. Se você usar todos os registros como um conjunto de treinamento, poderá ajustar perfeitamente todos os pontos com o seguinte polinômio:

y = a0 + a1 * X + a2 * X ^ 2 + ... + um * X ^ m

Agora, se você tiver algum novo registro, não usado no conjunto de treinamento e os valores de um vetor de entrada X forem diferentes de qualquer vetor X, usado no conjunto de treinamento, o que você pode dizer sobre a precisão da previsão y?

Eu sugiro que você revise um exemplo em que você tenha o vetor de entrada 1 ou 2-X X (para visualizar o polinômio de sobreajuste) e verifique quão grande é o erro de previsão para algum par (X, y) cujos valores X são apenas um um pouco diferente dos valores do conjunto de treinamento.

Não sei se essa explicação é teórica o suficiente, mas espero que ajude. Tentei explicar o problema no modelo de regressão, pois o considero mais intuitivamente compreensível que outros (SVM, Neural Networks ...).

Ao criar um modelo, você deve dividir os dados em pelo menos conjunto de treinamento e conjunto de testes (alguns dividem os dados em conjunto de treinamento, avaliação e validação cruzada). Geralmente, 70% dos dados são usados ​​para o conjunto de treinamento e 30% para avaliação e, em seguida, quando você cria o modelo, é necessário verificar o erro de treinamento e o erro de teste. Se os dois erros forem grandes, isso significa que seu modelo é muito simples (o modelo possui um viés alto). Por outro lado, se o seu erro de treinamento for muito pequeno, mas houver uma grande diferença entre o erro de treinamento e o teste, isso significa que seu modelo é muito complexo (o modelo tem alta variação).

A melhor maneira de escolher o compromisso certo é plotar erros de treinamento e teste para modelos de complexidade variada e escolher aquele em que o erro de teste é mínimo (veja a figura abaixo). insira a descrição da imagem aqui

niko
fonte
5
Esta é realmente uma ótima resposta para como - não tanto para o porquê. Mas talvez essa seja apenas uma pergunta errada - o que realmente nos importa é o que funciona empiricamente, não a teoria.
Tamzin Blake
@ Thom: Então, na verdade, sua pergunta é o segundo parágrafo e não o final do primeiro ("não percebe o porquê"), porque o que funciona empiricamente é que você se encaixa demais: seu modelo faz um excelente trabalho ao lidar com pequenas peculiaridades em sua dados de treinamento que não estão presentes no caso geral.
Win7:
1
@winwaed As perguntas são "Por que existe ...?", "Por que existe isso?" e ​​"Existe alguma ...?", todas claramente indicadas por pontos de interrogação. Estou familiarizado com o fenômeno, acho-o intuitivo e com exemplos empíricos, mas não sei por que é esse o caso, e parece que a teoria da informação deve ter uma resposta para mim. O comentário acima foi apenas uma reflexão de que talvez as perguntas "por que" não sejam particularmente relevantes depois que você tiver verificado empiricamente as regularidades que pode explorar.
Tamzin Blake
7

Esse é o problema da generalização - isto é, quão bem nossa hipótese classificará corretamente exemplos futuros que não fazem parte do conjunto de treinamento. Por favor, veja este exemplo fantástico, o que aconteceu caso seu modelo se encaixe apenas nos dados que você possui e não em um novo: Lei Titius-Bode

Dov
fonte
Um bom exemplo - é muito parecido com as hipóteses científicas. Ainda estamos falando de modelos, sejam eles modelos estatísticos de ML ou modelos do universo.
Winwaed
1

Até agora, o @andreiser deu uma resposta brilhante à segunda parte da pergunta do OP em relação à divisão de dados de treinamento / teste, e o @niko explicou como evitar o sobreajuste, mas ninguém chegou ao mérito da pergunta: Por que usar dados diferentes para treinamento e avaliação nos ajuda a evitar ajustes excessivos.


Nossos dados são divididos em:

  1. Instâncias de treinamento
  2. Instâncias de validação
  3. Instâncias de teste (avaliação)

M

M1,...,Mn

É importante perceber quais são as diferentes funções das instâncias de Validação e Teste.

  1. Instâncias de treinamento - usadas para ajustar os modelos.
  2. Instâncias de validação - usadas para escolher um modelo
  3. Instâncias de teste (avaliação) - usadas para medir a precisão de um modelo em novos dados

Consulte a página 222 de Os elementos do aprendizado estatístico: mineração de dados, inferência e previsão para obter mais detalhes.


fonte