Recentemente, tenho lido muito neste site (@Aniko, @Dikran Marsupial, @Erik) e em outros lugares sobre o problema de sobreajuste que ocorre com a validação cruzada - (Smialowski et al. 2010 Bioinformatics, Hastie, Elements of statistics learning). A sugestão é que qualquer seleção de recurso supervisionado (usando correlação com rótulos de classe) realizada fora da estimativa de desempenho do modelo usando validação cruzada (ou outro método de estimativa de modelo, como inicialização) pode resultar em sobreajuste.
Isso me parece pouco intuitivo - certamente, se você selecionar um conjunto de recursos e avaliar seu modelo usando apenas os recursos selecionados usando validação cruzada, estará obtendo uma estimativa imparcial do desempenho generalizado do modelo nesses recursos (isso pressupõe que a amostra em estudo seja representativa da população)?
Com este procedimento, não é possível reivindicar um conjunto de recursos ideal, mas é possível relatar o desempenho do conjunto de recursos selecionado em dados invisíveis como válido?
Aceito que a seleção de recursos com base em todo o conjunto de dados possa resultar em algum vazamento de dados entre os conjuntos de teste e trem. Mas se o conjunto de recursos for estático após a seleção inicial e nenhuma outra sintonia estiver sendo feita, certamente é válido relatar as métricas de desempenho validadas cruzadamente?
No meu caso, tenho 56 recursos e 259 casos e, portanto, #cases> #features. Os recursos são derivados dos dados do sensor.
Desculpas se minha pergunta parece derivada, mas esse parece ser um ponto importante a ser esclarecido.
Editar: ao implementar a seleção de recursos dentro da validação cruzada no conjunto de dados detalhado acima (graças às respostas abaixo), posso confirmar que a seleção de recursos antes da validação cruzada neste conjunto de dados introduziu uma significanteviés. Esse viés / sobreajuste foi maior ao fazer isso para uma formulação de 3 classes, em comparação com uma formulação de 2 classes. Eu acho que o fato de eu ter usado a regressão gradual para a seleção de recursos aumentou esse ajuste excessivo; para fins de comparação, em um conjunto de dados diferente, porém relacionado, comparei uma rotina seqüencial de seleção de recursos avançados executada antes da validação cruzada com os resultados que eu havia obtido anteriormente com a seleção de recursos no CV. Os resultados entre os dois métodos não diferiram dramaticamente. Isso pode significar que a regressão passo a passo é mais propensa a sobreajuste do que o FS sequencial ou pode ser uma peculiaridade desse conjunto de dados.
fonte
Respostas:
Se você executar a seleção de recursos em todos os dados e validar cruzadamente, os dados de teste em cada dobra do procedimento de validação cruzada também foram utilizados para escolher os recursos e é isso que influencia a análise de desempenho.
Considere este exemplo. Geramos alguns dados de destino lançando uma moeda 10 vezes e registrando se ela cai como cara ou coroa. Em seguida, geramos 20 recursos lançando a moeda 10 vezes para cada recurso e anotando o que obtemos. Em seguida, realizamos a seleção de recursos escolhendo o recurso que corresponde aos dados de destino o mais próximo possível e os usamos como nossa previsão. Se validarmos cruzadamente, obteremos uma taxa de erro esperada um pouco menor que 0,5. Isso ocorre porque escolhemos o recurso com base em uma correlação sobre o conjunto de treinamento e o conjunto de testes em cada dobra do procedimento de validação cruzada. No entanto, a taxa de erro real será de 0,5, pois os dados de destino são simplesmente aleatórios. Se você executar a seleção de recurso independentemente em cada dobra da validação cruzada, o valor esperado da taxa de erro será 0.
A idéia principal é que a validação cruzada é uma maneira de estimar o desempenho da generalização de um processo para a construção de um modelo; portanto, é necessário repetir todo o processo em cada dobra. Caso contrário, você terá uma estimativa tendenciosa ou uma subestimação da variação da estimativa (ou ambas).
HTH
Aqui está um código MATLAB que executa uma simulação Monte-Carlo dessa configuração, com 56 recursos e 259 casos, para corresponder ao seu exemplo, a saída que ele fornece é:
Estimador enviesado: erate = 0,429210 (0,397683 - 0,451737)
Estimador imparcial: erate = 0,499689 (0,397683 - 0,590734)
O estimador tendencioso é aquele em que a seleção de características é realizada antes da validação cruzada, o estimador imparcial é aquele em que a seleção de características é realizada independentemente em cada dobra da validação cruzada. Isso sugere que o viés pode ser bastante grave nesse caso, dependendo da natureza da tarefa de aprendizado.
fonte
Para adicionar uma descrição ligeiramente diferente e mais geral do problema:
Se você fizer qualquer tipo de pré-processamento orientado a dados , por exemplo,
e deseja usar a validação cruzada / validação out-of-bootstrap (/ hold out) para estimar o desempenho do modelo final , o pré-processamento controlado por dados precisa ser feito nos dados de treinamento substitutos, ou seja, separadamente para cada modelo substituto.
Se o pré-processamento controlado por dados for do tipo 1., isso levará à validação cruzada "dupla" ou "aninhada": a estimativa do parâmetro é feita em uma validação cruzada usando apenas o conjunto de treinamento da validação cruzada "externa". O ElemStatLearn tem uma ilustração ( https://web.stanford.edu/~hastie/Papers/ESLII.pdf Página 222 da impressão 5).
Você pode dizer que o pré-processamento é realmente parte da construção do modelo. apenas pré-processamento realizado
pode ser retirado do loop de validação para salvar os cálculos.
Portanto, o contrário: se o seu modelo é completamente construído por conhecimento externo a um conjunto de dados específico (por exemplo, você decide antecipadamente pelo seu conhecimento especializado que os canais de medição 63 - 79 não podem ajudar a resolver o problema, é claro que você pode excluir esses canais , construa o modelo e faça a validação cruzada.O mesmo, se você fizer uma regressão PLS e decidir, por sua experiência, que 3 variáveis latentes são uma escolha razoável (mas não tente se 2 ou 5 lv dão melhores resultados), poderá vá em frente com uma validação normal fora da inicialização / cruzada.
fonte
Vamos tentar torná-lo um pouco intuitivo. Considere este exemplo: Você tem um dependente binário e dois preditores binários. Você quer um modelo com apenas um preditores. Ambos os preditores têm uma chance de dizer que 95% é igual ao dependente e uma chance de 5% de discordar do dependente.
Agora, por acaso em seus dados, um preditor é igual ao dependente de todos os dados em 97% das vezes e o outro apenas em 93% das vezes. Você escolherá o preditor com 97% e construirá seus modelos. Em cada dobra da validação cruzada, você terá o modelo dependente = preditor, porque quase sempre está certo. Portanto, você obterá um desempenho previsto de 97%.
Agora, você poderia dizer, ok, isso é apenas má sorte. Mas se os preditores forem construídos como acima, você terá 75% de chance de pelo menos um deles ter uma precisão> 95% em todo o conjunto de dados e esse será o escolhido. Então você tem uma chance de 75% de superestimar o desempenho.
Na prática, não é nada trivial estimar o efeito. É perfeitamente possível que sua seleção de recursos selecione os mesmos recursos em cada dobra, como se você o fizesse em todo o conjunto de dados e, portanto, não haverá viés. O efeito também se torna menor se você tiver muito mais amostras, mas recursos. Pode ser instrutivo usar os dois lados com seus dados e ver como os resultados diferem.
Você também pode reservar uma quantidade de dados (digamos 20%), usar o seu caminho e o caminho correto para obter estimativas de desempenho validando cruzadamente os 80% e ver qual previsão de desempenho se mostra mais precisa quando você transfere seu modelo para o 20 % dos dados reservados. Observe que, para que isso funcione, a seleção de recursos antes do CV também precisará ser feita apenas nos 80% dos dados. Caso contrário, não simulará a transferência do seu modelo para dados fora da sua amostra.
fonte