É 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.
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
fonte
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:
É importante perceber quais são as diferentes funções das instâncias de Validação e Teste.
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