Validação cruzada (generalização de erros) após a seleção do modelo

21

Nota: O caso é n >> p

Estou lendo Elementos de aprendizagem estatística e há várias menções sobre a maneira "correta" de fazer a validação cruzada (por exemplo, página 60, página 245). Especificamente, minha pergunta é como avaliar o modelo final (sem um conjunto de testes separado) usando o CV k-fold ou o bootstrapping quando houver uma pesquisa de modelo? Parece que na maioria dos casos (algoritmos ML sem seleção de recurso incorporado) haverá

  1. Uma etapa de seleção de recurso
  2. Uma etapa de seleção de meta-parâmetro (por exemplo, o parâmetro de custo no SVM).

Minhas perguntas:

  1. Vi que a etapa de seleção de recursos pode ser realizada onde a seleção de recursos é feita em todo o conjunto de treinamento e mantida de lado. Em seguida, usando o CV com dobras k, o algoritmo de seleção de recursos é usado em cada dobra (obtendo diferentes recursos, possivelmente escolhidos a cada vez) e a média do erro. Em seguida, você usaria os recursos escolhidos usando todos os dados (que foram reservados) para treinar o modo final, mas utilizaria o erro da validação cruzada como uma estimativa do desempenho futuro do modelo. ISSO ESTÁ CORRETO?
  2. Quando você está usando a validação cruzada para selecionar os parâmetros do modelo, como estimar o desempenho do modelo posteriormente? É O MESMO PROCESSO DO Nº 1 ACIMA OU DEVE USAR O CV NESTADO COMO MOSTRADO NA PÁGINA 54 ( pdf ) OU ALGO MAIS?
  3. Quando você está executando as duas etapas (configuração de recurso e parâmetro) ..... então o que você faz? loops aninhados complexos?
  4. Se você tiver uma amostra separada, a preocupação desaparece e você pode usar a validação cruzada para selecionar recursos e parâmetros (sem se preocupar, pois sua estimativa de desempenho será proveniente de uma configuração de retenção)?
B_Miner
fonte
@ user2040 (+1) Essas perguntas são muito boas, de fato! Uma pergunta um tanto relacionada pode ser encontrada aqui: Seleção de recurso para o modelo "final" ao executar a validação cruzada no aprendizado de máquina .
chl
@chi Obrigado, eu tinha visto esse post. Você acha que estou no caminho certo com o meu processo de pensamento, pelo menos? Parece que um conjunto de testes independente nos permite ser mais liberais no uso de CV para seleção de recursos e ajuste / seleção de modelos. Caso contrário, os loops aninhados parecem necessários para treinar, ajustar e estimar a generalização de erros, todos usando os mesmos dados de treinamento.
B_Miner

Respostas:

18

O importante a lembrar é que, para a validação cruzada fornecer uma estimativa de desempenho (quase) imparcial, todas as etapas envolvidas no ajuste do modelo também devem ser executadas independentemente em cada dobra do procedimento de validação cruzada. A melhor coisa a fazer é visualizar a seleção de recursos, a configuração de meta / hiperparâmetros e otimizar os parâmetros como partes integrais do ajuste do modelo e nunca executar nenhuma dessas etapas sem executar as outras duas.

O viés otimista que pode ser introduzido ao se afastar dessa receita pode ser surpreendentemente grande, como demonstrado por Cawley e Talbot , onde o viés introduzido por uma partida aparentemente benigna foi maior do que a diferença no desempenho entre os classificadores concorrentes. Os piores protocolos tendenciosos ainda favorecem os modelos ruins mais fortemente, pois são mais sensíveis ao ajuste de hiperparâmetros e, portanto, são mais propensos a ajustar demais o critério de seleção de modelos!

Respostas a perguntas específicas:

O procedimento na etapa 1 é válido porque a seleção de recursos é realizada separadamente em cada dobra; portanto, a validação cruzada é um procedimento completo usado para ajustar-se ao modelo final. A estimativa de validação cruzada terá um leve viés pessimista, pois o conjunto de dados para cada dobra é um pouco menor que o conjunto de dados inteiro usado no modelo final.

Para 2, como a validação cruzada é usada para selecionar os parâmetros do modelo, você precisa repetir esse procedimento independentemente em cada dobra da validação cruzada usada para estimativa de desempenho, e você acaba com a validação cruzada aninhada.

Para 3, basicamente, sim, você precisa fazer a validação cruzada aninhada. Essencialmente, você precisa repetir em cada dobra da validação cruzada mais externa (usada para estimativa de desempenho) tudo o que você pretende fazer para se ajustar ao modelo final.

Para 4 - sim, se você tiver um conjunto de retenção separado, isso fornecerá uma estimativa imparcial do desempenho sem a necessidade de uma validação cruzada adicional.

Dikran Marsupial
fonte
re sua resposta para Q1. Esse é o problema, não é? Muitas vezes pensamos que estamos validando cruzadamente o modelo, quando na verdade estamos validando cruzadamente o procedimento de modelagem. A diferença pode ser filosófica, porque quando você escreve a matemática, f pode representar o modelo ou o procedimento de modelagem. Mas então alguém poderia perguntar: é a validação cruzada do procedimento que queremos, ou a validação cruzada do modelo. Qual é o seu pensamento?
Qheleth 5/03
Você não pode validar cruzadamente um modelo, pois ele depende da amostra de dados em que foi treinado, assim que você o ajusta a uma amostra diferente de dados, é um modelo diferente. O argumento que eu realmente estava afirmando é que, se você ajustar o modelo de qualquer forma em toda a amostra de dados (por exemplo, executando a seleção de recursos), a validação cruzada fornecerá uma estimativa otimista da generalização à medida que as partições de teste foram usadas para ajustar aspectos do modelo (ou seja, o conjunto de recursos usado). HTH.
Dikran Marsupial
Não sei se está tudo bem em continuar nossa discussão na seção de comentários, mas até que alguém diga o contrário ... Sim, eu entendo que seu ponto de vista sobre o currículo precisa ser feito no nível mais externo e não estou contestando. De fato, ontem dei o mesmo conselho ao meu colega. Estou apenas apontando que muitas vezes não temos certeza do que estamos validando cruzadamente. Ao mesmo tempo, pergunto-me se é realmente necessário avaliar o modelo, e não o procedimento de modelagem. Um remédio pode ser o de pensar que ele está usando o erro de procedimento para estimar o erro do modelo. Talvez isso funcione.
Qheleth
Não podemos obter uma estimativa direta do desempenho de um modelo específico sem ter um conjunto de testes externo. O desempenho do método para produzir um modelo é, no entanto, um proxy razoável para o desempenho do próprio modelo, desde que todo o método seja validado de forma cruzada. Em outras palavras, concordo com o resumo da sua última frase!
Dikran Marsupial
5

Eu tenho feito uma extensa análise de validação cruzada em um conjunto de dados que custa milhões para adquirir e não há um conjunto de validação externa disponível. Nesse caso, realizei uma validação cruzada aninhada extensiva para garantir a validade. Selecionei recursos e parâmetros otimizados apenas dos respectivos conjuntos de treinamento. Isso é computacionalmente caro para grandes conjuntos de dados, mas é o que eu tenho que fazer para manter a validade. No entanto, existem complicações que acompanham ... por exemplo, diferentes recursos são selecionados em cada conjunto de treinamento.

Portanto, minha resposta é que, nos casos em que você não tem acesso viável a um conjunto de dados externo, esse é um caminho razoável. Quando você tem um conjunto de dados externo, pode ir para a cidade da maneira que desejar no conjunto de dados principal e, em seguida, testar uma vez no conjunto de dados externo.

user2643
fonte
@ user2643: Você tem alguma referência para compartilhar sobre como criou o CV aninhado? Foi na mesma linha que o pdf ao qual vinculei minha pergunta? Também ..... esses dados são dados de marketing por acaso?
B_Miner
@ user2643 O problema com essa abordagem (correta) é que ela só gera um único critério de precisão (classificação) ou precisão (regressão); você não poderá dizer "esses são os recursos mais interessantes", pois variam de uma dobra à outra, como você disse. Eu tenho trabalhado com dados genéticos (variáveis ​​de 600k) em que usamos CV de 10 vezes com seleção de recursos incorporados, sob um esquema de permutação (k = 1000, para ser confortável em um nível de 5%) para avaliar a confiabilidade dos resultados. Dessa forma, podemos dizer: "nosso modelo generaliza bem ou não", nada mais.
chl
2
Se os recursos variarem de dobra para dobra, significa que não há informações suficientes para identificar com segurança os recursos úteis, então eu consideraria isso uma vantagem da validação cruzada (é provável que apenas olhar os resultados de um único modelo ajustaram demais o critério de seleção de recurso e, portanto, enganam). Para problemas com muitos recursos e poucas observações, a regressão do cume geralmente oferece melhor desempenho; portanto, a menos que identificar os recursos seja um objetivo principal, geralmente é melhor não fazer nenhuma seleção de recursos.
Dikran Marsupial
np
@ user2040: Desculpe pela resposta tardia. Criei minha própria implementação de software da abordagem CV aninhada. Como minha pesquisa está relacionada à bioinformática, pretendo enviar uma descrição do software em breve para uma revista de bioinformática. Mas pode ser usado em qualquer domínio de pesquisa. Se você estiver interessado em experimentar, entre em contato. goldfish1434 no yahoo dot com
user2643