Como criar o modelo final e ajustar o limite de probabilidade após validação cruzada aninhada?

17

Em primeiro lugar, desculpas por postar uma pergunta que já foi discutida extensivamente aqui , aqui , aqui , aqui , aquie para reaquecer um tópico antigo. Eu sei que o @DikranMarsupial já escreveu sobre esse tópico em posts e artigos de periódicos, mas ainda estou confuso e, a julgar pelo número de posts semelhantes aqui, ainda é algo que outros lutam para entender. Devo também afirmar que recebi contraditórios sobre este tópico, o que aumentou minha confusão. Você também deve saber que sou originalmente físico e não estatístico; portanto, minha experiência no domínio aqui é um pouco limitada. Estou escrevendo um jornal em que quero usar o CV aninhado para estimar o desempenho que posso esperar do meu modelo final. No meu domínio, este é o primeiro. (Quase nunca usamos qualquerforma de currículo robusto em meu campo, mas alegre os trabalhos com resultados de estudos usando redes neurais e árvores de decisão aprimoradas!) Portanto, é muito importante que eu tenha um entendimento muito completo e claro para não estragar e propagar um procedimento incorreto para minha comunidade que pode levar anos para desaprender! Obrigado! Com a pergunta ...

Como crio o modelo final após a validação cruzada aninhada?

Estou treinando um modelo glmnet simples com regularização L1 e L2. É rápido, simples e interpretável. Realizo as centralizações, redimensionamentos e transformações de Box-Cox para que as distribuições de recursos sejam centradas na média, padronizadas e parecidas com as de Gauss. Realizo esta etapa na validação cruzada, para evitar vazamento de informações. Simplesmente porque meu hardware é incrivelmente lento e não tenho acesso a mais músculos da CPU, também realizo uma seleção rápida de recursos baseados em filtro no CV após o pré-processamento dos recursos. Estou usando a pesquisa aleatória em grade para escolher os hiperparâmetros alfa e lambda. Eu entendo que não deveriaLoop CV para obter essa estimativa. I entender que o circuito de CV interior é usado para a selecção do modelo (neste caso, os hiperparâmetros óptimas) e que o circuito externo é usado para avaliação do modelo , ou seja, o CV interior e exterior têm duas finalidades diferentes, que muitas vezes são erroneamente confundidas. (Como estou indo até agora?)

Agora, os links que eu publiquei sugerem que "a maneira de pensar na validação cruzada é estimar o desempenho obtido usando um método para construir um modelo, em vez de estimar o desempenho de um modelo". Dado isso, como devo interpretar os resultados do procedimento de CV aninhado?

Os conselhos que li parecem indicar o seguinte --- corrija-me se estiver errado: o CV interno faz parte do mecanismo que permite selecionar os hiperparâmetros alfa e lambda ideais do meu modelo glmnet. O CV externo informa a estimativa que posso esperar obter do modelo final se eu aplicar o procedimento exatamente como usado no CV interno, incluindo ajuste de hiperparâmetro e usar todo o conjunto de dados para construir o modelo final. Ou seja, o ajuste do hiperparâmetro faz parte do "método de construção do modelo". Isso é correto ou não? Porque é isso que me confunde. Em outros lugares, vi que o procedimento para construir o modelo final a ser implantado envolve treinamento em todo o conjunto de dados usando os valores fixosdos hiperparâmetros que foram escolhidos usando CV. Aqui, o "método para construir o modelo" não inclui ajuste. Então, qual é? Em algum momento, os hiperparâmetros ideais são escolhidos e corrigidos para a construção do modelo final! Onde? Quão? Se meu loop interno é um CV de 5 vezes e meu loop externo é um CV de 5 vezes, e eu seleciono, digamos, 100 pontos para testes como parte da pesquisa aleatória em grade no CV interno, quantas vezes eu realmente treino o glmnet modelo? (100 * 5 * 5) + 1 para a compilação final, ou existem mais etapas que eu desconheço?

Basicamente, preciso de uma descrição muito clara de como interpretar a estimativa de desempenho do CV aninhado e como construir o modelo final.

Eu também gostaria de saber o procedimento apropriado para selecionar o limite de probabilidade para converter as pontuações de probabilidade do meu modelo glmnet final em rótulos de classe (binários) --- é necessário outro loop de CV?

Andrew John Lowe
fonte

Respostas:

8

Validação cruzada aninhada explicada sem aninhamento

Veja como vejo validação cruzada (aninhada) e construção de modelo. Observe que sou químico e, como você olha do lado da aplicação, para o processo de construção do modelo (veja abaixo). Meu ponto principal aqui é, do meu ponto de vista, que não preciso de uma variedade aninhada dedicada de validação cruzada. Eu preciso de um método de validação (por exemplo, validação cruzada) e uma função de treinamento de modelo:

model = f (training data)

A função de treinamento do modelo "meu" f não precisa de nenhum hiperparâmetro, porque ele faz internamente todo o ajuste do hiperparâmetro (por exemplo alpha, seu lambdae threshold).

Em outras palavras, minha função de treinamento pode conter qualquer número de validações cruzadas internas (ou fora do saco ou qualquer estimativa de desempenho que eu considere útil). No entanto, nota que a distinção entre parâmetros e hiperparâmetros normalmente é que os hiperparâmetros precisa ser ajustado para o conjunto de dados / aplicação na mão enquanto que os parâmetros podem então ser montado independentemente do que os dados que é. Assim, do ponto de vista do desenvolvedor de um novo algoritmo de classificação, faz sentido fornecer apenas a função de ajuste "nu" ( g (training data, hyperparameters)) que se ajusta aos parâmetros se houver dados e hiperparâmetros.

O objetivo de ter a função de treinamento "externa" fé que, após a execução da validação cruzada, é possível treinar "em todo o conjunto de dados": basta usar em f (whole data set)vez da chamada f (cv split training data)para os modelos substitutos de validação cruzada.

Assim, no seu exemplo, você terá 5 + 1 chamadas para fe cada uma delas fterá, por exemplo, 100 * 5 chamadas para g.


limiar de probabilidade

Embora você possa fazer isso com mais uma validação cruzada, isso não é necessário: é apenas mais um hiperparâmetro que o seu modelo pronto para uso possui e pode ser estimado dentro dele f.

O que você precisa corrigir é uma heurística que permite calcular esse limite. Há uma grande variedade de heurísticas (do ROC e especificando o quanto é importante evitar falsos positivos em comparação com falsos negativos em detrimento da sensibilidade ou especificidade mínima aceitável ou PPV ou NPV, permitindo dois limiares e, portanto, um nível "incerto" (NA) e assim por diante ) que são adequados em diferentes situações - boas heurísticas geralmente são muito específicas da aplicação.

Mas para a pergunta aqui, você pode fazer isso internamente fe, por exemplo, usando as previsões obtidas durante a validação cruzada interna para calcular o ROC e, em seguida, encontrar seu ponto / limite de trabalho de acordo.


Comentários específicos a partes da pergunta

Entendo que não devo relatar o desempenho do CV usado para escolher os hiperparâmetros ideais como uma estimativa do desempenho esperado do meu modelo final (o que seria excessivamente otimista), mas deveria incluir um loop externo do CV para obter essa estimativa .

Sim. (Embora a estimativa interna contenha informações em relação à estimativa externa: se for muito mais otimista do que a estimativa externa, você normalmente está se ajustando demais.)

Entendo que o loop interno do CV é usado para a seleção do modelo

Qualquer tipo de ajuste de modelo orientado a dados, realmente -> que inclua o ajuste do seu limite de corte.

(neste caso, os hiperparâmetros ótimos) e que o loop externo é usado para a avaliação do modelo, ou seja, o CV interno e externo serve a dois propósitos diferentes que freqüentemente são confundidos erroneamente.

Sim.

Ou seja, o ajuste do hiperparâmetro faz parte do "método de construção do modelo".

Também prefiro vê-lo desta maneira: sou químico e você olha do lado da aplicação: para mim, um modelo treinado / ajustado não é completo sem os hiperparâmetros, ou mais precisamente, um modelo é algo que eu posso usar diretamente para obter previsões. Embora, como você observa, outras pessoas tenham uma visão diferente (sem ajuste do hiperparâmetro). Na minha experiência, esse costuma ser o caso de pessoas desenvolvendo novos modelos: o ajuste do hiperparâmetro é então um "problema resolvido" e não considerado. (observação: a visão deles sobre o que a validação cruzada pode fazer em termos de validação também é um pouco diferente do que a validação cruzada pode fazer no lado do aplicativo).

cbeleites suporta Monica
fonte