Eu tenho um conjunto de dados com 26 recursos e 31000 linhas. É o conjunto de dados de 38 indivíduos. É para um sistema biométrico. Então, eu quero ser capaz de identificar assuntos.
Para ter um conjunto de testes, eu sei que tenho que remover alguns valores.
Então, o que é melhor fazer e por quê?
(a) mantenha 30 sujeitos como conjunto de treinamento e remova 8 sujeitos como conjunto de testes
(b) mantenha os 38 sujeitos, mas remova algumas linhas de cada um. Então, no final, terminarei com um conjunto de treinamento: 24800 linhas de 38 indivíduos E um conjunto de testes: 6200 linhas de 38 indivíduos
Respostas:
Acho que a resposta de Matthew Gunn está correta, mas parece-me que o currículo "em termos de registro" pode abranger dois conceitos diferentes:
Os registros são particionados aleatoriamente em dobras, independentemente do assunto ou da hora.
Os registros são particionados em dobras com base no tempo, sem dobras usadas para treinamento que contém dados após o início da dobra de teste.
No primeiro caso, qualquer natureza de série temporal de seus dados está sendo comprometida, pois seu conjunto de treinamento pode incluir dados de antes e depois do seu conjunto de testes. O princípio do Treino / Teste é que os dados do Treinamento representam dados conhecidos no presente e os dados do Teste representam dados ainda não vistos (talvez literalmente no futuro).
Talvez a autocorrelação de séries temporais comprometa a opção 2. Talvez o elemento temporal do modelo não seja realmente importante e, portanto, as observações "passadas" e "futuras" provavelmente serão as mesmas. Nesses casos, nem o nº 1 nem o nº 2 são o caminho a percorrer.
Se houver apenas sazonalidade e não tendências, parece aceitável incluir "o futuro" no treinamento de alguns sujeitos, a fim de prever novos sujeitos (que serão afetados pela mesma sazonalidade). Se houver tendências, o treinamento sobre o futuro deve aprender algo sobre o futuro que você realmente não saberia ao usar o modelo na produção.
No exemplo do OP, parece que o assunto é bom. Mas se as tendências e as preocupações com séries temporais fizerem parte do modelo, eu tentaria usar o particionamento por assunto e por tempo para que você treinasse um conjunto de assuntos antes de um ponto específico no tempo e depois testasse os outros assuntos depois naquele momento específico.
fonte
Uma distinção crítica é se você deseja:
O caso muito mais comum é o número do caso (1). Por exemplo, quão bem você prevê ataques cardíacos para alguém que entra na sala de emergência? E se você estiver no caso (1), certamente deve fazer (a) validação cruzada por assunto em vez de (b) validação cruzada por registro. A validação em nível de registro no caso (1) provavelmente levará a estimativas absurdamente altas e falsas de desempenho em novos assuntos.
Não entendo exatamente o que você está tentando fazer (e talvez seja um auto-estudo, para que a pergunta não seja totalmente realista). Não sei em que caso você está. Se você estiver no caso muito menos comum (2), a validação sábia dos registros pode estar ok.
Um tema geral nas estatísticas é pensar cuidadosamente sobre o que é independente e o que está correlacionado. De um modo geral, uma observação independente tende a ser um assunto diferente. Se você deseja prever o desempenho de novos assuntos, deve testar os assuntos em que não treinou!
Por que validação cruzada por assunto e não por registro?
Em cenários típicos, observações repetidas do mesmo indivíduo são correlacionadas entre si, mesmo após o condicionamento dos recursos. Portanto, com a validação cruzada em registros, o seu conjunto de testes não é independente do seu conjunto de treinamento! No caso extremo de correlação perfeita, você teria exatamente as mesmas observações no conjunto de treinamento e no conjunto de testes! Você estaria treinando no set de teste! O desempenho medido na validação cruzada não seria preditivo de desempenho em novos assuntos.
Por exemplo, este artigo recente chama a validação cruzada em registros, `` Voodoo Machine Learning ".
O que fazer com tão poucos assuntos ...
Para maximizar os dados para o treinamento, algo que você pode fazer é deixar de fora um assunto para validação cruzada. Cada iteração, teste em um assunto diferente e treine em todos os outros.
fonte
Realmente depende de como você visualiza a configuração que deseja emular com a divisão de trem / teste. Para tornar as coisas concretas, digamos que cada linha descreva a qualidade do sono de um sujeito em uma única noite.
É possível que, no futuro, cada sujeito chegue primeiro a um laboratório do sono e forneça a qualidade do sono por algumas noites. Depois disso, você precisará prever a qualidade do sono das noites futuras para esses assuntos . Nesse caso, você usaria sua opção b). Em
sklearn
, você poderia usarsklearn.model_selection.StratifiedShuffleSplit
É possível que, no futuro, algumas pessoas cheguem primeiro a um laboratório do sono e forneçam a qualidade do sono por algumas noites. Depois disso, você precisará prever a qualidade do sono de futuras noites para outros assuntos . Nesse caso, você usaria sua opção a). Em
sklearn
, você poderia usarsklearn.cross_validation.LeavePLabelOut
fonte
Para enfatizar, presumo que o aplicativo seja prever assuntos desconhecidos. Isso significa (independentemente de você ter séries temporais ou medições repetidas inerentemente não ordenadas) que a divisão precisa ser feita para que indivíduos desconhecidos sejam testados => divisão a)
Considerando que você tem apenas 38 assuntos, você deve pensar um pouco na validação de reamostragem. Da minha experiência trabalhando com tamanhos de amostra igualmente pequenos (embora com mais recursos), aqui estão algumas recomendações em poucas palavras:
Opte por validação cruzada iterada ou fora do bootstrap no assunto. Eles permitem avaliar a estabilidade de seus modelos, o que é crucial em problemas de tamanho de amostra pequeno. Os resultados podem até ser usados para um modelo agregado, caso a instabilidade seja um problema.
Você não deixe-um-sujeito fora. Ele não permite medir a estabilidade do modelo, nem reduzi-la. Além disso, há situações em que ele está sujeito a um grande viés pessimista devido ao pequeno tamanho da amostra (em oposição ao viés pessimista mínimo esperado).
Se você estiver usando os valores típicos de mérito da classificação, como precisão, sensibilidade, especificidade etc., e a tarefa é classificar corretamente os assuntos: lembre-se de que o problema crucial é medir o desempenho, porque a incerteza dos resultados do teste depende do número absoluto de casos de teste. Como exemplo, a observação de 17 previsões corretas em 17 indivíduos verdadeiramente positivos corresponde a um intervalo de confiança de 95% para a sensibilidade que varia de cerca de 80% a 100%.
Em outras palavras, você não poderá fazer a otimização do modelo orientado a dados com base nisso.
Isso também significa que você não precisa configurar uma divisão de três conjuntos (validação cruzada aninhada), porque você desperdiçaria recursos em comparações estatisticamente sem sentido aqui - é quase garantido que sua otimização falhará (embora você não note isso se você não verifique a estabilidade).
O mesmo cálculo para o intervalo de confiança binomial para os 5 (3) sujeitos de teste / otimização / validação propostos rende 95% ci para todos os valores corretos de até 50% (30%), portanto, com base nos resultados perfeitos do teste, seu intervalo de confiança ainda incluiria 50 / 50 adivinhar!
Alguns trabalhos que escrevemos sobre esses assuntos:
Beleites, C .; Baumgartner, R .; Bowman, C .; Somorjai, R .; Steiner, G .; Salzer, R. & Sowa, MG Redução da variância na estimativa do erro de classificação usando conjuntos de dados esparsos, Chemom Intell Lab Syst, 79, 91 - 100 (2005).
Beleites, C. & Salzer, R .: Avaliando e melhorando a estabilidade de modelos quimiométricos em situações de pequeno tamanho de amostra, Anal Bioanal Chem, 390, 1261-1271 (2008). DOI: 10.1007 / s00216-007-1818-6
Beleites, C. e Neugebauer, U. e Bocklitz, T. e Krafft, C. e Popp, J .: Planejamento do tamanho da amostra para modelos de classificação. Anal Chim Acta, 2013, 760, 25-33. DOI: 10.1016 / j.aca.2012.11.007
manuscrito aceito no arXiv: 1211.1323
fonte