Como posso ajudar a garantir que os dados de teste não vazem para os dados de treinamento?

60

Suponha que tenhamos alguém construindo um modelo preditivo, mas que alguém não seja necessariamente versado em princípios estatísticos ou de aprendizado de máquina adequados. Talvez estejamos ajudando essa pessoa enquanto ela está aprendendo, ou talvez essa pessoa esteja usando algum tipo de pacote de software que requer conhecimento mínimo para usar.

Agora, essa pessoa pode muito bem reconhecer que o teste real vem da precisão (ou de qualquer outra métrica) dos dados fora da amostra . No entanto, minha preocupação é que existem muitas sutilezas para se preocupar. No caso simples, eles constroem seu modelo e o avaliam nos dados de treinamento e nos dados de teste retidos. Infelizmente, às vezes pode ser muito fácil nesse ponto voltar e ajustar alguns parâmetros de modelagem e verificar os resultados nos mesmos dados de "teste". Nesse ponto, os dados não são mais verdadeiros fora da amostra e o ajuste excessivo pode se tornar um problema.

Uma maneira potencial de resolver esse problema seria sugerir a criação de muitos conjuntos de dados fora da amostra, de modo que cada conjunto de dados de teste possa ser descartado após o uso e nem reutilizado. Isso requer muito gerenciamento de dados, especialmente que a divisão deve ser feita antes da análise (para que você precise saber quantas divisões anteriormente).

Talvez uma abordagem mais convencional seja a validação cruzada k-fold. No entanto, em certo sentido, isso perde a distinção entre um conjunto de dados de "treinamento" e "teste" que eu acho que pode ser útil, especialmente para aqueles que ainda estão aprendendo. Também não estou convencido de que isso faça sentido para todos os tipos de modelos preditivos.

Existe alguma maneira que eu negligenciei para ajudar a superar o problema de sobreajuste e teste de vazamento, mantendo-me um pouco claro para um usuário inexperiente?

Michael McGowan
fonte
Michael, fechei um tópico duplicado no site da ML e mesclei as respostas aqui. Sinta-se à vontade para editar esta pergunta para refletir as alterações que você deseja fazer - não quero fazer isso por medo de alterar inadvertidamente seu significado.
whuber
Esta pergunta é antiga e tem uma resposta aceita, mas não consigo tirar da cabeça que a premissa inicial parece estar em conflito. Se se trata de exercícios de aprendizado, a melhor maneira de abordá-lo é deixá-los falhar e criar um modelo de super-ajuste que posteriormente não prevê bem. (Talvez mantenha um conjunto de dados secreto que mostre o erro de seus caminhos.) Mas também parece que você tem pessoas não qualificadas criando modelos que alguém vai levar a sério e agir de acordo e você está tentando minimizar os danos. no comprimento dos braços. Existem muitas sutilezas, como você diz.
7117 Wayne

Respostas:

50

Você está certo, este é um problema significativo no aprendizado de máquina / modelagem estatística. Essencialmente, a única maneira de realmente resolver esse problema é manter um conjunto de testes independente e mantê-lo em espera até o término do estudo e usá-lo para validação final.

No entanto, inevitavelmente as pessoas analisam os resultados no conjunto de testes e depois mudam seu modelo de acordo; no entanto, isso não resultará necessariamente em uma melhoria no desempenho da generalização, pois a diferença no desempenho de diferentes modelos pode ser em grande parte devido à amostra específica de dados de teste que temos. Nesse caso, ao fazer uma escolha, estamos substituindo efetivamente o erro de teste.

A maneira de limitar isso é fazer com que a variação do erro de teste seja a menor possível (ou seja, a variabilidade no erro de teste que veríamos se usássemos amostras diferentes de dados como o conjunto de testes, extraídas da mesma distribuição subjacente). Isso é mais facilmente alcançado usando um grande conjunto de testes, se possível, ou por exemplo, inicialização ou validação cruzada se não houver muitos dados disponíveis.

Descobri que esse tipo de ajuste excessivo na seleção de modelos é muito mais problemático do que geralmente é apreciado, especialmente no que diz respeito à estimativa de desempenho, consulte

GC Cawley e NLC Talbot, excesso de ajuste na seleção de modelos e viés de seleção subsequente na avaliação de desempenho, Journal of Machine Learning Research, 2010. Research, vol. 11, pp. 2079-2107, julho de 2010 (www)

Esse tipo de problema afeta especialmente o uso de conjuntos de dados de referência, que foram usados ​​em muitos estudos, e cada novo estudo é implicitamente afetado pelos resultados de estudos anteriores, portanto, o desempenho observado provavelmente será uma estimativa super otimista da verdadeira desempenho do método. A maneira como tento contornar isso é olhar para muitos conjuntos de dados (para que o método não seja ajustado para um conjunto de dados específico) e também usar várias divisões aleatórias de teste / treinamento para estimativa de desempenho (para reduzir a variação da estimativa). No entanto, os resultados ainda precisam da ressalva de que esses parâmetros de referência foram excessivos.

Outro exemplo em que isso ocorre é nas competições de aprendizado de máquina com um quadro de líderes baseado em um conjunto de validação. Inevitavelmente, alguns concorrentes continuam mexendo com seu modelo para subir ainda mais no quadro de líderes, mas acabam chegando ao fundo do ranking final. A razão para isso é que suas múltiplas opções superaram o conjunto de validação (aprendendo efetivamente as variações aleatórias no pequeno conjunto de validação).

Se você não pode manter um conjunto de testes estatisticamente puro, receio que as duas melhores opções sejam (i) coletar novos dados para criar um novo conjunto estatisticamente puro ou (ii) fazer a ressalva de que o novo modelo foi baseado em uma escolha feita após observar o erro do conjunto de testes, portanto, a estimativa de desempenho provavelmente apresentará um viés otimista.

Dikran Marsupial
fonte
11
+1 Estou impressionado com o quão bem essa resposta é informada pela experiência e com que eficácia ela aborda a questão.
whuber
3
Saúde, este é o meu principal tópico de pesquisa há alguns anos e eu descobri que muitos procedimentos de seleção de modelos amplamente utilizados no aprendizado de máquina são muito frágeis e, quanto mais detalhadamente são avaliados, menos bem parecem funcionar. Não me surpreenderia que muitos métodos usados ​​no aprendizado de máquina não funcionem melhor que os métodos mais simples e antigos, simplesmente por causa dos procedimentos de seleção de modelos tendenciosos usados ​​durante a avaliação de desempenho. A pergunta é realmente boa, é importante não fazer parte do processo de seleção de modelos por meio de ajustes!
Dikran Marsupial
Muito interessante. (Também votei na questão em si porque sua resposta me fez apreciá-la melhor.)
whuber
2
(+1) Boa resposta. O uso de vários classificadores no mesmo conjunto de dados que gera uma medida super otimista da precisão do teste foi discutido na Seleção ideal de classificadores e viés negativo na estimativa da taxa de erro: um estudo empírico sobre previsão de alta dimensão , BMC MRM 2009, 9:85 (com alguns slides em PDF aqui ), com outra discussão em Viés de múltiplas regras na comparação de regras de classificação (Yousefi et al., Bioinformatics 2011, 27 (12): 1675).
chl
Obrigado pelos links para os jornais, eles parecem interessantes.
Dikran Marsupial
15

Uma maneira de garantir isso é certificar-se de que você codificou todas as coisas que faz para se ajustar ao modelo, até mesmo "mexer". Dessa forma, quando você executa o processo repetidamente, digamos, através da validação cruzada, mantém as coisas consistentes entre as execuções. Isso garante que todas as fontes potenciais de variação sejam capturadas pelo processo de validação cruzada.

A outra coisa de vital importância é garantir que você tenha uma amostra representativa nos dois conjuntos de dados. Se o seu conjunto de dados não é representativo do tipo de dados que você espera usar para prever, não há muito o que fazer. Toda modelagem se baseia na suposição de que "indução" funciona - as coisas que não observamos se comportam como as que observamos.

Como regra geral, fique longe de procedimentos complexos de ajuste de modelo, a menos que (i) você saiba o que está fazendo e (ii) tenha tentado os métodos mais simples e constatado que eles não funcionam, e como o método complexo corrige o problema. problemas com o método simples. "Simples" e "complexo" são significados no sentido de "simples" ou "complexo" para a pessoa que faz o ajuste. A razão pela qual isso é tão importante é que permite aplicar o que eu gosto de chamar de "teste de detecção" nos resultados. O resultado parece certo? Você não pode "cheirar" os resultados de um procedimento que não entende.

NOTA: a próxima parte bastante longa da minha resposta é baseada na minha experiência, que está na área , com possivelmente grande. Estou quase certo de que o que segue abaixo não seria aplicável ao ou casosN>>p p Np N<p

Quando você tem uma amostra grande, a diferença entre usar e não usar uma determinada observação é muito pequena, desde que sua modelagem não seja muito "local". Isso ocorre porque a influência de um determinado ponto de dados geralmente é da ordem de . Portanto, em grandes conjuntos de dados, os resíduos obtidos ao "reter" o conjunto de dados de teste são basicamente os mesmos que você obtém ao usá-los no conjunto de dados de treinamento. Você pode mostrar isso usando mínimos quadrados comuns. O resíduo obtido com a exclusão da ésima observação (ou seja, qual seria o erro do conjunto de testes se colocarmos a observação no conjunto de testes) é , onde é o resíduo do treinamento e1Nieitest=(1hii)1eitraineitrainhiié a alavanca do th ponto de dados. Agora temos que , onde é o número de variáveis ​​na regressão. Agora, se , é extremamente difícil para qualquer ser grande o suficiente para fazer uma diferença apreciável entre os erros do conjunto de testes e do conjunto de treinamento. Podemos tomar um exemplo simplificado, suponha que (intercepto e variável), a matriz de projeto seja (ambos os conjuntos de treinamento e teste) e a alavancagemiihii=ppN>>phiip=21N×pX

hii=xiT(XTX)1xi=1Nsx2(1xi)(x2¯x¯x¯1)(1xi)=1+x~i2N

Onde , e . Por fim, é a variável preditora padronizada e mede quantos desvios padrão estão da média. Portanto, sabemos desde o início que o erro do conjunto de testes será muito maior que o erro do conjunto de treinamento para observações "na borda" do conjunto de treinamento. Mas é basicamente essa questão representativa novamente - as observações "no limite" são menos representativas do que as observações "no meio". Além disso, é necessário solicitar . Então, se você tiver observações, mesmo quex¯=N1ixix2¯=N1ixi2sx2=x2¯x¯2x~i=xix¯sxxi1N100x~i=5 (um outlier no espaço x pela maioria das definições), isso significa , e o erro de teste é subestimado por um fator de apenas . Se você tiver um conjunto de dados grande, digamos , é ainda menor, , que é menor que . De fato, para observações, seria necessário uma observação de para fazer uma subestimação de do erro do conjunto de testes, usando o erro do conjunto de treinamento.hii=26100126100=7410010000126100001%10000x~=5025%

Portanto, para grandes conjuntos de dados, o uso de um conjunto de testes não é apenas ineficiente, mas também desnecessário, desde que . Isso se aplica ao OLS e também se aplica aproximadamente aos GLMs (os detalhes são diferentes para o GLM, mas a conclusão geral é a mesma). Em mais de dimensões, os "outliers" são definidos pelas observações com grandes pontuações no "componente principal". Isso pode ser mostrado escrevendo Onde é a matriz de vetor próprio (ortogonal) para , com matriz de valor próprio . Nós temos queN>>p2hii=xiTEET(XTX)1EETxiEXTXΛhii=ziTΛ1zi=j=1pzji2Λjjzi=ETxié a principal pontuação do componente para .xi

Se o seu conjunto de testes tiver observações, você obterá uma versão matricial , em que e são as linhas da matriz de design no conjunto de testes. Portanto, para a regressão OLS, você já sabe quais seriam os erros do "conjunto de testes" para todas as divisões possíveis dos dados em conjuntos de treinamento e teste. Nesse caso ( ), não há necessidade de dividir os dados. Você pode relatar erros de "melhor ou pior caso" de conjunto de teste de quase qualquer tamanho sem precisar dividir os dados. Isso pode economizar muito tempo e recursos do PC.ke{k}test=(IkH{k})1e{k}trainH{k}=X{k}(XTX)1X{k}TX{k}N>>p

Basicamente, tudo isso se reduz ao uso de um termo de penalidade, para explicar a diferença entre erros de treinamento e teste, como BIC ou AIC. Isso efetivamente alcança o mesmo resultado que o uso de um conjunto de testes, no entanto, você não é obrigado a jogar fora informações potencialmente úteis. Com o BIC, você está aproximando a evidência do modelo, que se parece matematicamente com:

p(D|MiI)=p(y1y2yN|MiI)

Observe que, neste procedimento, não podemos estimar nenhum parâmetro interno - cada modelo deve ser totalmente especificado ou ter seus parâmetros internos integrados. No entanto, podemos fazer com que isso pareça validação cruzada (usando uma função de perda específica) usando repetidamente a regra do produto e, em seguida, registrando o resultado:Mi

p(D|MiI)=p(y1|MiI)p(y2yN|y1MiI)
=p(y1|MiI)p(y2|y1MiI)p(y3yN|y1y2MiI)
==i=1Np(yi|y1yi1MiI)
log[p(D|MiI)]=i=1Nlog[p(yi|y1yi1MiI)]

Isso sugere uma forma de validação cruzada, mas onde o conjunto de treinamento está sendo atualizado constantemente, uma observação de cada vez do conjunto de testes - semelhante ao Kalman Filter. Prevemos a próxima observação do conjunto de testes usando o conjunto de treinamento atual, medimos o desvio do valor observado usando a probabilidade condicional de log e, em seguida, atualizamos o conjunto de treinamento para incluir a nova observação. Mas observe que este procedimento digere completamente todos os dados disponíveis, enquanto ao mesmo tempo garante que todas as observações sejam testadas como um caso "fora da amostra". Também é invariável, pois não importa o que você chama de "observação 1" ou "observação 10"; o resultado é o mesmo (os cálculos podem ser mais fáceis para algumas permutações do que outras). A função de perda também é "adaptativa", pois se definirmosLi=log[p(yi|y1yi1MiI)] , então a nitidez de depende de , porque a função de perda está sendo constantemente atualizada com novos dados.Lii

Eu sugeriria que avaliar modelos preditivos dessa maneira funcionaria muito bem.

probabilityislogic
fonte
4
+1 - bons conselhos e discussão interessante sobre alavancagem (para grandes conjuntos de dados). Costumo usar conjuntos de dados pequenos, onde é provável um ajuste excessivo e, em tais situações, muitas vezes é muito fácil ajustar o excesso de probabilidade marginal ("evidência") e terminar com um modelo pior do que você começou. Eu suspeito que AIC e BIC são igualmente "quebradiços". Essencialmente, a otimização é a raiz de todo mal nas estatísticas, pois qualquer escolha ou parâmetro que você ajustar com base em uma amostra finita introduz a possibilidade de ajuste excessivo. A marginalização é muito mais segura, mas geralmente computacionalmente cara.
Dikran Marsupial
2
+1 - especialmente no terceiro parágrafo (use métodos simples primeiro). Lembra a boa e velha regra de Pareto. Se os alunos máquina iria manter isso em mente antes de publicar sua tentativa insuficientes para provar a superioridade do seu novo algoritmo produziu ...
Steffen
8

Suponho que a única maneira de garantir isso é que outra pessoa tenha os dados de teste . Em um relacionamento cliente-consultor, isso pode ser gerenciado com bastante facilidade: o cliente fornece ao consultor o conjunto de treinamento sobre o qual os modelos serão construídos e, dentro desse conjunto de treinamento, o consultor pode dividir os dados da maneira que for necessária para garantir que o excesso de ajuste não ocorra. ocorrer; posteriormente, os modelos são devolvidos ao cliente para uso em seus dados de teste.

Para um pesquisador individual, é lógico que as melhores práticas seriam, portanto, imitar essa configuração. Isso significaria coletar alguns dados para teste, depois que toda a seleção do modelo tiver sido realizada. Infelizmente, como você diz, isso não é praticado por muitas pessoas, e até acontece com pessoas que deveriam conhecer melhor!

No entanto, em última análise, depende de para que o modelo está sendo usado. Se você está interessado apenas em prever esse único conjunto de dados, talvez possa superestimar tudo o que quiser? No entanto, se você estiver tentando promover seu modelo como um que generalize bem, ou use o modelo em alguma aplicação do mundo real, é claro que isso é de grande importância.

Há uma questão secundária que eu pensei que deveria mencionar, que é que, mesmo se você seguir todos os procedimentos corretamente, ainda poderá acabar com os modelos que estão sobreajustados, porque os dados não são realmente iid . Por exemplo, se houver correlações temporais nos dados, se você coletar todos os dados de treinamento das vezes de 1 a 3 e testar na hora 4, poderá descobrir que o erro de previsão é maior que o esperado. Como alternativa, poderia haver artefatos específicos do experimento, como o dispositivo de medição em uso ou o conjunto de sujeitos em experimentos em humanos, que faz com que a generalização dos modelos seja pior que o esperado.

tdc
fonte
Sim, estou ciente de que é surpreendentemente difícil criar um conjunto de dados verdadeiramente fora da amostra, pois é fácil acabar acidentalmente com correlações temporais e outras coisas.
Michael McGowan
11
Algumas empresas fazem isso como política, implementada, por exemplo, com viewpermissões de banco de dados definidas de acordo, onde algumas equipes são privadas de dados de teste e outras são cegas.
ijoseph
6

Esta é uma pergunta muito boa e um problema muito sutil. É claro que existem os erros mal intencionados, que derivam de alguém tentando enganá-lo. Mas há uma questão mais profunda de como evitar vazamentos acidentais e evitar erros honestos.

Deixe-me listar algumas boas práticas operacionais. Todos eles se originam de erros honestos que cometi em algum momento:

  • Separe seus dados em três grupos: treine, valide e teste.
  • Entenda a configuração do problema para poder discutir o que é razoável e o que não é. Entenda o problema, muitas vezes um mal-entendido sutil no que os dados representam pode levar a vazamentos. Por exemplo, embora ninguém treine e teste no mesmo quadro de um vídeo, é mais sutil quando dois quadros do mesmo vídeo caem em dobras diferentes, dois quadros do mesmo vídeo provavelmente compartilham os mesmos indivíduos com a mesma iluminação e assim por diante .
  • Seja extremamente cuidadoso com os procedimentos de validação cruzada previamente escritos. Mais ainda com aqueles que não foram escritos por você (o LIBSVM é um grande criminoso aqui).
  • Repita todas as experiências pelo menos duas vezes antes de relatar qualquer coisa, mesmo se reportando ao seu colega de escritório. O controle de versão é seu amigo, antes de executar um experimento, confirme e anote a versão do código que você está executando.
  • Tenha muito cuidado ao normalizar seus dados. Muitas vezes, isso leva a pensar que você terá o conjunto de dados completo no qual deseja testar ao mesmo tempo, o que novamente não é realista.
carlosdc
fonte
Havia uma pergunta sobre os conjuntos de treinamento / avaliação e eu dei uma visão geral teórica sobre isso no machinelearning.stackexchange.com/a/196/114 - explicando a validação estratificada, a validação cruzada com dobras k e experimentos repetidos. Para minha mente sem instrução, esses métodos abordam completamente a questão acima e o resto é apenas "problema do professor". Além disso, todas as práticas em sua lista parecem corrigir os "erros simplesmente inaceitáveis ​​e inaceitáveis" e não vejo sutilezas por lá. Estou muito interessado em entender o que estou perdendo - você pode comentar?
andreister
Eu concordo que todos eles vêm de negligência. Eu também mencionei que eles não são teóricos (tendo dito que estão operacionais). Eu editei minha postagem um pouco.
Carlosdc
5

Muitos pontos importantes foram abordados nas excelentes respostas que já foram dadas.

Ultimamente, desenvolvi esta lista de verificação pessoal para independência estatística dos dados de teste:

  • Divida os dados no nível mais alto da hierarquia de dados (por exemplo, divisão do paciente)
  • Dividir também de forma independente para fatores de confusão conhecidos ou suspeitos, como variações diárias nos instrumentos etc.
  • (DoE deve cuidar da sequência aleatória de medições **)
  • Todas as etapas de cálculo que começam com a primeira (geralmente pré-processamento) que envolve mais de um paciente * precisam ser refeitas para cada modelo substituto na validação de reamostragem. Para validação de conjunto de teste de espera / independente, os pacientes de teste precisam ser separados antes desta etapa.
    • Independentemente de o cálculo ser chamado de pré-processamento ou ser considerado parte do modelo real.
    • Os culpados típicos: centralização média, escala de variância (geralmente apenas influência leve), redução de dimensionalidade como PCA ou PLS (pode causar viés intenso, por exemplo, subestimar o número de erros por uma ordem de magnitude)
  • Qualquer tipo de otimização orientada a dados ou seleção de modelo precisa de outro teste (externo) para validar independentemente o modelo final.
  • Existem alguns tipos de desempenho de generalização que só podem ser medidos por conjuntos de testes independentes específicos, por exemplo, como o desempenho preditivo se deteriora para casos medidos no futuro (não estou lidando com previsão de séries temporais, apenas com desvio de instrumento). Mas isso precisa de um estudo de validação projetado corretamente.
  • Há outro tipo peculiar de vazamento de dados em meu campo: fazemos espectroscopia espacialmente resolvida de tecidos biológicos. A rotulagem de referência dos espectros de teste precisa ser cegada em relação às informações espectroscópicas, mesmo que seja tentador usar uma análise de cluster e depois descobrir qual classe cada grupo pertence (que seriam dados de teste semi-supervisionados que não são independente).

  • Por último, mas certamente não menos importante: ao codificar a validação de reamostragem, eu realmente verifico se os índices calculados no conjunto de dados não levam à captura de linhas de teste de pacientes, dias de treinamento etc.

Observe que a "divisão não realizada para garantir a independência" e a "divisão antes que ocorra qualquer cálculo que envolva mais de um caso" também pode ocorrer com testes que afirmam usar um conjunto de testes independente e este último, mesmo que o analista de dados seja cego para a referência dos casos de teste. Esses erros não podem ocorrer se os dados de teste forem retidos até que o modelo final seja apresentado.

* Estou usando pacientes como a hierarquia mais alta em dados apenas para facilitar a descrição.
** Sou químico analítico: a deriva do instrumento é um problema conhecido. De fato, parte da validação dos métodos de análise química é determinar com que freqüência as calibrações precisam ser verificadas em relação às amostras de validação e com que frequência a calibração precisa ser refeita.


FWIW: Na prática, trato de aplicativos em que

  • p está na ordem de magnitude de ,102103
  • pnrows geralmente é maior que , masp
  • n p um t i e n t s « p 10 0 - 10 1 10 2nbiol.replicates ou é (ordem de magnitude: , raramente )npatientsp100101102
  • dependendo do método de medição espectroscópica, todas as linhas de um paciente, por exemplo, podem ser muito semelhantes ou bastante diferentes, porque diferentes tipos de espectros têm uma relação sinal / ruído (erro do instrumento) também variando por uma ordem de magnitude

Pessoalmente, ainda não encontrei o aplicativo em que, para o desenvolvimento do classificador, recebo casos independentes suficientes para permitir a retirada de um conjunto de testes independente adequado. Assim, cheguei à conclusão de que a validação de reamostragem corretamente feita é a melhor alternativa enquanto o método ainda está em desenvolvimento. Estudos de validação adequados precisarão ser realizados eventualmente, mas é um enorme desperdício de recursos (ou os resultados não levarão informações úteis devido à variação), enquanto o desenvolvimento do método está em um estágio em que as coisas ainda mudam.

cbeleites suporta Monica
fonte
2

Se bem me lembro, algumas das competições de previsão (como a Netflix ou as do Kaggle) usam este esquema:

Existe um conjunto de treinamento, com as "respostas". Existe o conjunto de testes nº 1, para o qual o pesquisador fornece respostas. O pesquisador descobre sua pontuação. Existe o conjunto de testes nº 2, para o qual o pesquisador fornece respostas, MAS o pesquisador não descobre sua pontuação. O pesquisador não sabe quais casos de previsão estão nos itens 1 e 2.

Em algum momento, o conjunto 2 deve ficar visível, mas você pelo menos limitou a contaminação.

zbicyclist
fonte
2

Em alguns casos, como preditores baseados em sequências biológicas, não é suficiente garantir que os casos não apareçam em mais de um conjunto. Você ainda precisa se preocupar com a dependência entre os conjuntos.

Por exemplo, para preditores baseados em sequência, é necessário remover a redundância garantindo que as seqüências em conjuntos diferentes (incluindo os diferentes conjuntos de validação cruzada) não compartilhem um alto nível de similaridade de sequência.

Itamar
fonte
2

Eu diria que "validação cruzada k-fold" é a resposta certa do ponto de vista teórico, mas sua pergunta parece mais sobre coisas organizacionais e de ensino, então responderei de maneira diferente.


Quando as pessoas "ainda estão aprendendo", geralmente é pensado como se aprendessem a " aplicar rápida e diretamente" os algoritmos e todo o conhecimento "extra" (motivação do problema, preparação do conjunto de dados, validação, análise de erros, dicas práticas e assim por diante) ) serão aprendidos "mais tarde" quando estiverem "mais preparados".

Isto está totalmente errado.

  1. Se queremos que um aluno ou quem entenda a diferença entre um conjunto de testes e um conjunto de treinamento, o pior será dar os dois conjuntos a dois indivíduos diferentes, como se pensássemos que "nesta fase" o "conhecimento extra" é prejudicial. É como uma abordagem em cascata no desenvolvimento de software - alguns meses de design puro, depois alguns meses de codificação pura, depois alguns meses de testes puros e um resultado descartável no final.

  2. O aprendizado não deve ser uma cascata. Todas as partes da aprendizagem - motivação do problema, algoritmo, dicas práticas, avaliação de resultados - devem se reunir, em pequenas etapas. (Como abordagem ágil no desenvolvimento de software).

Talvez todo mundo aqui tenha passado pelo ml-class.org de Andrew Ng - eu colocaria o curso dele como um exemplo de um estilo de aprendizado "ágil" e robusto, se você preferir - o que nunca produziria uma questão de "como garantir que os dados de teste não vazem para os dados de treinamento ".


Note que eu posso ter entendido completamente sua pergunta, então peço desculpas! :)

andreister
fonte
Aprender para o ser humano (isto é, aprender a modelar em geral) não deve ser uma cascata, mas sim o aprendizado para o modelo . Caso contrário, bits dos dados de teste se infiltrarão nos dados de treinamento, e seu modelo estará mais sujeito a ajustes excessivos.
Michael McGowan
E eu estava pensando mais nisso a partir do final do software. Um usuário cria um modelo que obtém 90% de precisão no treinamento e 75% de precisão no teste. Eles então ajustam alguns botões e configurações do software e obtêm 80% de precisão nos "testes". Eles voltam novamente e fazem mais ajustes e obtêm 85% de precisão nos "testes". Mas esse conjunto de dados de "teste" não está mais fora da amostra e o modelo foi super ajustado a ele.
Michael McGowan
Exatamente. Este é um problema de aprendizado humano (problema do professor, se você preferir). Deve ser revelado o mais rápido possível, em vez de ser oculto por meios artificiais de "garantir que X não vaze para Y"
andreister
Pessoas que deveriam conhecer melhor ainda cometerão esse erro. Você pode atenuar esse efeito em algum grau em um pacote de software com um fluxo de trabalho que implícita ou explicitamente incentive boas práticas e desencoraje práticas ruins. Que o humano saiba melhor não é motivo para ignorar o problema.
Michael McGowan
@MichaelMcGowan - você também está ignorando os benefícios do vazamento - de que seu algoritmo foi potencialmente aprimorado usando o conjunto de testes (por exemplo, train + test são mais dados do que apenas o train). É realmente apenas uma troca diferente, precisão aprimorada versus medição aprimorada da precisão. Para o meu, o primeiro é mais importante.
probabilityislogic