Acabei de terminar "Uma Introdução à Aprendizagem Estatística" . Perguntei-me se o uso da validação cruzada para encontrar os melhores parâmetros de ajuste para várias técnicas de aprendizado de máquina é diferente da espionagem de dados.
Estamos verificando repetidamente qual valor do parâmetro de ajuste resulta em um melhor resultado preditivo no conjunto de testes. E se o parâmetro de ajuste a que chegamos for adequado para esse teste específico definido por acaso e não tiver um bom desempenho em alguns testes futuros?
Por favor, desculpe meu entendimento novato de aprendizado de máquina e estou ansioso para ser educado.
EDIT: Consulte a resposta do @AdamO sobre a definição de "espionagem de dados". Usei o termo de maneira muito imprecisa na minha pergunta.
fonte
Respostas:
Sua preocupação está no ponto certo e há muita literatura sobre esse tópico, por exemplo,
O problema é que o ajuste de hiperparâmetro com validação cruzada é um processo de otimização orientado a dados e ainda tenderá a se ajustar demais ao seu conjunto de dados (menos do que o ajuste por erro de re-substituição, mas ainda). Tentar usar os resultados da validação cruzada de ajuste como medida de desempenho "independente" é como comer o bolo (= ajuste) e mantê-lo (= medir o desempenho do modelo final).
Isso não significa que você não deve usar a validação cruzada para o ajuste do hiperparâmetro. Significa apenas que você pode usá-lo apenas para um propósito. Otimize ou avalie o desempenho do modelo para fins de validação.
A solução é que você precisa fazer uma validação independente para medir a qualidade do modelo obtido com os hiperparâmetros ajustados. Isso é chamado de validação aninhada ou dupla. Você encontrará várias perguntas e respostas aqui sobre esses tópicos
Conceitualmente, eu gosto de dizer que o treinamento inclui todos os tipos de etapas sofisticadas para ajustar não apenas os parâmetros "usuais" do modelo, mas também para ajustar (ajustar automaticamente) os hiperparâmetros. Portanto, a otimização de λ orientada a dados é claramente parte do treinamento do modelo.
Como regra geral, você também pode dizer que o treinamento do modelo é tudo o que precisa ser feito antes que você tenha uma função de caixa preta final pronta para usar, capaz de produzir previsões para novos casos.
PS: Acho a terminologia teste versus validação muito confusa, porque no meu campo "validação" significa provar que o modelo final é adequado ao objetivo e, portanto, é o que outras pessoas chamam de teste em vez de validação. Prefiro chamar o conjunto de testes interno de "conjunto de testes de ajuste" e o "conjunto de testes de validação final" externo ou algo semelhante.
Atualizar:
Normalmente, isso não é nada que simplesmente acontece: existem situações típicas que podem causar essa falha. E todas essas situações que eu conheço são situações de super adaptação. Você precisa estar ciente de que, embora a regularização ajude a reduzir o número necessário de casos de treinamento, a otimização orientada a dados precisa de grandes quantidades de dados.
Minhas recomendações:
Normalmente, você (deveria) já tem expectativas aproximadas, por exemplo, qual desempenho deve ser alcançável, qual desempenho você considera suspeito de boa aparência. Ou especifique qual desempenho você precisa alcançar e um desempenho de linha de base. A partir disso, e o número de casos de treinamento disponíveis (para o esquema de divisão que você decidiu), calcule a incerteza esperada para os testes internos (ajuste). Se essa incerteza indicar que você não seria capaz de obter comparações significativas, não faça a otimização orientada a dados.
Você deve verificar a estabilidade das previsões obtidas com o λ escolhido e o λ ideal encontrado pelo procedimento de autoajuste. Se λ não estiver razoavelmente estável em relação a diferentes divisões dos seus dados, a otimização não funcionou.
Se você achar que não poderá executar a otimização orientada por dados ou que ela não funcionou, você pode escolher o λ pelo seu conhecimento especializado, por exemplo, por experiência com dados semelhantes. Ou pelo conhecimento de que se você descobrir que a otimização falhou, precisará de uma regularização mais forte: o ajuste excessivo que leva à falha funciona em modelos muito complexos.
fonte
A "espionagem de dados" ou, como eu poderia chamar, "análise exploratória de dados" não trata de uma pergunta pré-especificada. Você meio que enumera vários resultados possíveis, plausivelmente interessantes, e os avalia individualmente. Você pode executar qualquer número de análises exploratórias e, geralmente, não se preocupa com vários testes. Você pode avaliar cada análise exploratória individualmente usando a validação cruzada, mas ela não é inerente a vários testes quando você possui mais de uma análise exploratória. As hipóteses nesse cenário podem ser bastante amplas e abrangentes, "quais fatores estão associados ao câncer de próstata?" (a partir da qual o consumo de café, o uso de vasectomia etc. etc. foram medidos em uma coorte). Resultados significativos são vistos como "geradores de hipóteses" e não fornecem evidências confirmatórias.
fonte
Na verdade, durante o CV, você tenta encontrar os melhores parâmetros em um conjunto de validação , que é diferente do conjunto de teste. Você divide seus dados inteiros em três conjuntos: conjunto de treinamento, conjunto de validação e conjunto de testes. Quando você faz a validação cruzada corretamente, nunca olha o final do teste até o final, para que não haja bisbilhotagem. A validação cruzada no conjunto de testes é um erro metodológico sério (ainda que frequente).
fonte
Se você procurar, por exemplo, a página 225 de "Uma introdução ao aprendizado estatístico" com o exemplo Lasso, verá que eles realmente fazem validação cruzada aninhada. Ou seja, a seleção do modelo é feita em
cv.glmnet
umtrain
conjunto, que é dividido pelocv.glmnet
pacote em pares de teste de trem. A validação do modelo é feita no conjunto de validação ("test
"), portanto, é uma validação independente.fonte