Temos um pequeno conjunto de dados (cerca de 250 amostras * 100 recursos) no qual queremos criar um classificador binário após selecionar o melhor subconjunto de recursos. Digamos que particionemos os dados em:
Treinamento, Validação e Teste
Para a seleção de recursos, aplicamos um modelo de wrapper com base na seleção de recursos que otimizam o desempenho dos classificadores X, Y e Z, separadamente. Nesta etapa de pré-processamento, usamos dados de treinamento para treinar os classificadores e dados de validação para avaliar cada subconjunto de recursos candidatos.
No final, queremos comparar os diferentes classificadores (X, Y e Z). Obviamente, podemos usar a parte de teste dos dados para uma comparação e avaliação justas. No entanto, no meu caso, os dados de teste seriam realmente pequenos (cerca de 10 a 20 amostras) e, portanto, desejo aplicar a validação cruzada para avaliar os modelos.
A distribuição dos exemplos positivos e negativos é altamente desequilibrada (cerca de 8: 2). Portanto, uma validação cruzada pode nos levar a avaliar o desempenho. Para superar isso, planejamos ter a parte de teste (10-20 amostras) como um segundo método de comparação e validar a validação cruzada.
Em resumo, estamos particionando dados em treinamento, validação e teste. As peças de treinamento e validação devem ser usadas para a seleção de recursos. Em seguida, a validação cruzada sobre os mesmos dados deve ser aplicada para estimar os modelos. Finalmente, o teste é usado para validar a validação cruzada, devido ao desequilíbrio dos dados.
A questão é: se usarmos os mesmos dados (treinamento + validação) usados na seleção dos recursos que otimizam o desempenho dos classificadores X, Y e Z, podemos aplicar a validação cruzada sobre os mesmos dados (treinamento + validação) usados na seleção de recursos medir o desempenho final e comparar os classificadores?
Não sei se essa configuração pode levar a uma medida de validação cruzada tendenciosa e resultar em comparação injustificada ou não.
Respostas:
Eu acho que é tendencioso. Que tal aplicar o FS na partição N-1 e testar na última partição. e combine os recursos de todas as dobras de alguma maneira (união / interseção / ou alguma maneira específica do problema).
fonte
A resposta simples é que você deve fazer a seleção de recursos em um conjunto de dados diferente do que você treina (você já está fazendo isso, então não mude isso) --- o efeito de não fazer isso é que você superestima seus dados de treinamento. Você também não deve fazer a seleção de recursos no seu conjunto de testes, pois isso aumentará as estimativas do desempenho de seus modelos (acho que você já percebeu isso também, mas achei um pouco difícil entender a pergunta com precisão).
Se você já dividiu seu conjunto de testes em treinamento, validação e teste, não há razão específica para fazer a validação cruzada, a menos que você tenha tão poucos dados que seu conjunto de testes seja pequeno demais para tirar conclusões fortes. Muitos pesquisadores não gostam da validação cruzada porque, se usados para impulsionar o desenvolvimento de modelos (com o que eu quero dizer, você ajusta as coisas, executa a validação cruzada para ver como elas funcionam, depois as ajusta mais algumas etc.), você efetivamente tem acesso ao seu teste dados e isso pode levar você a superestimar seu desempenho em dados verdadeiramente invisíveis. Se seus dados são tão pequenos que você não tem escolha a não ser fazer a validação cruzada, a maneira correta de fazer isso com conjuntos de treinamento, desenvolvimento e teste é dividir explicitamente seus dados em três partes para cada dobra - a maioria deve ser usada para treinamento, alguns para desenvolvimento (seleção de recursos no seu caso, além de outros parâmetros livres que precisam de ajuste) e, finalmente, você deve testar na parte de teste. Em seguida, você pode obter a média das pontuações nessas partes de teste para obter uma estimativa do desempenho do modelo: no entanto, como eu disse, tenha cuidado para que, se essas pontuações forem usadas para guiá-lo para as abordagens que você deseja usar para o seu problema, não espere obter a mesma pontuação em dados invisíveis que você obteve da validação cruzada.
fonte
finally you should test on the test portion. You can then average scores across these test portions to get an estimate of model performance
Para entender o desempenho de um classificador, ele deve ser usado em dados de teste que não foram vistos ou usados antes. Da maneira como eu vejo, se você tomar alguma decisão com base no desempenho do algoritmo em alguns conjuntos de dados, esse conjunto de dados é de treinamento ou de validação cruzada, em nenhuma circunstância deve ser chamado de conjunto de dados de teste.Você tentou LOOCV? Eu acho que é possível treinar quando você tem muito menos dados de treinamento. Para responder à sua pergunta, isso não forneceria os melhores resultados simplesmente porque poderia se superestimar e fornecer resultados enganosos, de modo que o seu classificador não funcionaria muito bem em outros dados, que ele não viu.
fonte
Você pode fazer o seguinte para comparar o desempenho dos classificadores
Leve seu conjunto de treinamento e treine-o em todos os conjuntos de recursos possíveis. Para cada conjunto de recursos, minimize os parâmetros e construa o modelo para que ele se encaixe bem no conjunto de treinamento. Agora, depois que os modelos forem criados para todos os conjuntos de recursos, ou seja, você tiver um modelo para cada conjunto de recursos, valide os modelos (criados em diferentes conjuntos de recursos) no conjunto de validação e selecione esse modelo (criado para um subconjunto específico de conjunto de recursos) ) que fornece o erro mínimo no conjunto de validação. Dessa forma, você garante que o modelo construído se encaixe bem, não apenas no conjunto de treinamento, mas também no conjunto de validação.
Agora, pegue esse modelo construído e teste-o no conjunto de testes. Isso mostrará o desempenho do classificador quando for executado em um conjunto de dados que não foi usado para treinamento nem para validação. Além disso, você selecionou o conjunto de recursos que se ajusta ao conjunto de treinamento e também ao conjunto de validação.
fonte
Se possível, é melhor reter alguns dados para validação cruzada adicional. Por exemplo, você pode usá-lo para validar seus algoritmos criando curvas de aprendizado. Essas curvas devem ser construídas no conjunto de dados que não foi usado antes.
Mesmo se você quiser simplesmente selecionar um algoritmo que ofereça a maior pontuação de F1, você precisará usar um conjunto extra de dados de validação cruzada para fazer isso. O conjunto de testes deve ser reservado para relatar a precisão final da sua solução (desempenho esperado do classificador escolhido em dados não vistos).
fonte
Pode ser extremamente grosseiro, consulte o capítulo de validação de modelo em "Elementos de aprendizagem estatística". Ele pode fazer a precisão da cv do modelo acima de 70%, enquanto a taxa de erro real de qualquer modelo deve ser de 50% (os recursos são independentes da classe )
fonte