Li algumas das postagens sobre seleção de recursos e validação cruzada, mas ainda tenho dúvidas sobre o procedimento correto.
Suponha que eu tenha um conjunto de dados com 10 recursos e desejo selecionar os melhores. Suponha também que estou usando um classificador de vizinho mais próximo. Posso executar uma pesquisa exaustiva usando a validação cruzada para estimar a taxa de erro como guia para escolher os melhores recursos? Algo como o seguinte pseudo-código
for i=1:( 2^10 -1)
error(i)= crossval(1-nn, selected_fetures(i))
end
i=find(erro(i)==min(error(i));
selected_fetures= selected_features(i);
O que estou tentando explicar neste pseudo-código é que estou executando a validação cruzada para todas as combinações possíveis de recursos e escolha a combinação que fornece o erro mínimo.
Eu acho que esse procedimento está correto porque estou executando uma pesquisa exaustiva. A escolha dos recursos não foi baseada em todo o conjunto de dados, mas no erro médio em cada partição. Estou ajustando demais o modelo com essa seleção de recurso?
fonte
Penso que este é um procedimento válido para a seleção de recursos que não é mais propenso a sobreajuste do que outros procedimentos de seleção de recursos. O problema com este procedimento é que ele possui grande complexidade computacional e mal pode ser usado para conjuntos de dados reais.
fonte
Acho que se você selecionar a seleção dentro de cada dobra da validação cruzada, ficará bem. Como os pôsteres acima afirmam, você se ajustará excessivamente em qualquer modelo usando os recursos selecionados obtidos no procedimento descrito acima. Isso ocorre porque todos os dados tiveram alguma influência na rotina de seleção de recursos.
fonte