Como julgar se um modelo de aprendizado de máquina supervisionado está super adaptado ou não?

27

Alguém pode me dizer como julgar se um modelo supervisionado de aprendizado de máquina está adaptado ou não? Se eu não tiver um conjunto de dados de validação externa, quero saber se posso usar o ROC de 10 vezes a validação cruzada para explicar o overfitting. Se eu tiver um conjunto de dados de validação externa, o que devo fazer a seguir?

user22062
fonte

Respostas:

29

Em resumo: validando seu modelo. O principal motivo da validação é afirmar que não ocorre super ajuste e estimar o desempenho generalizado do modelo.

Overfit

Primeiro, vejamos o que é realmente o excesso de ajuste. Os modelos são normalmente treinados para ajustar um conjunto de dados, minimizando algumas funções de perda em um conjunto de treinamento. No entanto, existe um limite em que minimizar esse erro de treinamento não beneficiará mais o desempenho real do modelo, mas apenas minimizará o erro no conjunto de dados específico. Isso significa essencialmente que o modelo foi ajustado de maneira muito rígida aos pontos de dados específicos no conjunto de treinamento, tentando modelar padrões nos dados originários do ruído. Esse conceito é chamado de excesso de ajuste . Um exemplo de super ajuste é exibido abaixo, onde você vê o conjunto de treinamento em preto e um conjunto maior da população real em segundo plano. Nesta figura, você pode ver que o modelo azul está muito ajustado ao conjunto de treinamento, modelando o ruído subjacente. insira a descrição da imagem aqui

Para julgar se um modelo está super ajustado ou não, precisamos estimar o erro (ou desempenho) generalizado que o modelo terá em dados futuros e compará-lo ao nosso desempenho no conjunto de treinamento. A estimativa desse erro pode ser feita de várias maneiras diferentes.

Divisão de conjunto de dados

A abordagem mais direta para estimar o desempenho generalizado é particionar o conjunto de dados em três partes: um conjunto de treinamento, um conjunto de validação e um conjunto de testes. O conjunto de treinamento é usado para treinar o modelo para ajustar os dados, o conjunto de validação é usado para medir diferenças de desempenho entre os modelos, a fim de selecionar o melhor e o conjunto de testes para afirmar que o processo de seleção do modelo não se adequa ao primeiro dois conjuntos.

Para estimar a quantidade de excesso de ajuste, basta avaliar suas métricas de interesse no conjunto de testes como uma última etapa e compará-lo ao seu desempenho no conjunto de treinamento. Você mencionou o ROC, mas, na minha opinião, também deve procurar outras métricas, como por exemplo, pontuação de brier ou um gráfico de calibração para garantir o desempenho do modelo. Obviamente, isso depende do seu problema. Existem muitas métricas, mas isso está além do ponto aqui.

Esse método é muito comum e respeitado, mas exige muito da disponibilidade de dados. Se seu conjunto de dados for muito pequeno, você provavelmente perderá muito desempenho e seus resultados serão enviesados ​​na divisão.

Validação cruzada

Uma maneira de contornar o desperdício de grande parte dos dados para validação e teste é usar a validação cruzada (CV), que estima o desempenho generalizado usando os mesmos dados usados ​​para treinar o modelo. A idéia por trás da validação cruzada é dividir o conjunto de dados em um determinado número de subconjuntos e, em seguida, usar cada um desses subconjuntos como conjuntos de teste estendidos, enquanto usa o restante dos dados para treinar o modelo. A média da métrica em todas as dobras fornecerá uma estimativa do desempenho do modelo. O modelo final é geralmente treinado usando todos os dados.

No entanto, a estimativa CV não é imparcial. Mas quanto mais dobras você usar, menor será o viés, mas obterá uma variação maior.

Como na divisão do conjunto de dados, obtemos uma estimativa do desempenho do modelo e, para estimar o super ajuste, basta comparar as métricas do seu CV com as adquiridas ao avaliar as métricas no seu conjunto de treinamento.

Bootstrap

A idéia por trás do bootstrap é semelhante ao CV, mas, em vez de dividir o conjunto de dados em partes, introduzimos aleatoriedade no treinamento, desenhando conjuntos de treinamento de todo o conjunto de dados repetidamente com a substituição e executando a fase de treinamento completa em cada uma dessas amostras de bootstrap.

A forma mais simples de validação de bootstrap simplesmente avalia as métricas nas amostras não encontradas no conjunto de treinamento (ou seja, as que foram excluídas) e a média em todas as repetições.

Este método fornecerá uma estimativa do desempenho do modelo que, na maioria dos casos, é menos tendencioso que o CV. Novamente, comparando-o com o desempenho do seu conjunto de treinamento e você obtém o super ajuste.

Existem maneiras de melhorar a validação de autoinicialização. Sabe-se que o método .632+ fornece estimativas melhores e mais robustas do desempenho generalizado do modelo, levando em consideração o super ajuste. (Se você estiver interessado, o artigo original é uma boa leitura: Melhorias na validação cruzada: o método 632+ Bootstrap )

Espero que isso responda à sua pergunta. Se você estiver interessado em validação de modelo, recomendo a leitura da parte sobre validação no livro Os elementos do aprendizado estatístico: mineração de dados, inferência e previsão, disponíveis gratuitamente on-line.

enquanto
fonte
2
Observe que sua terminologia de validação versus teste não é seguida em todos os campos. Por exemplo, no meu campo (química analítica), a validação é um procedimento que deve provar que o modelo funciona bem (e medir como ele funciona). Isso é feito com o modelo final , nenhuma alteração adicional é permitida posteriormente (ou, se você o fizer, precisará validar novamente com dados independentes). Então, eu chamaria seu conjunto de validação de "conjunto de teste interno" ou "conjunto de teste de otimização". Os dados de teste "externos" não impedem o ajuste excessivo, mas podem ser usados ​​para medir a extensão do ajuste excessivo.
Cbeleites suporta Monica
Ok, eu não tenho experiência em seu campo. Obrigado pelo esclarecimento. Provavelmente também é o mesmo em outros campos. Simplesmente usei a terminologia usada no livro ao qual vinculei no final. Espero que não seja muito confuso.
enquanto
7

Veja como você pode estimar a extensão do ajuste excessivo:

  • Obtenha uma estimativa de erro interno. Resubstitutio (= prever dados de treinamento) ou se você fizer uma "validação" cruzada interna para otimizar os hiperparâmetros, também essa medida será interessante.
  • Obtenha uma estimativa de erro independente do conjunto de testes. Geralmente, é recomendada a reamostragem (validação cruzada iterada ou fora do bootstrap *. Mas você precisa ter cuidado para que não ocorram vazamentos de dados . Ou seja, o loop de reamostragem deve recalcular todas as etapas com cálculos que abrangem mais de um caso. etapas de processamento, como centralização, redimensionamento, etc. Além disso, certifique-se de dividir no nível mais alto se você tiver uma estrutura de dados "hierárquica" (também conhecida como "agrupada)", como medições repetidas, por exemplo, do mesmo paciente (=> reamostrar pacientes )
  • Em seguida, compare quão melhor a estimativa de erro "interno" parece do que a independente.

Aqui está um exemplo:
overfitting
Trefferrate = taxa de acerto (% correta classificada), Variablenzahl = número de variáveis ​​(= complexidade do modelo)
Símbolos:. ressubstituição, + estimativa de "deixar para fora" interno do otimizador de hiperparâmetro, o validação cruzada externa independente ao nível do paciente

Isso funciona com o ROC, ou medidas de desempenho, como a pontuação de Brier, sensibilidade, especificidade, ...

* Eu não recomendo o bootstrap .632 ou .632+ aqui: eles já misturam erros de re-substituição: você pode calculá-los de qualquer maneira mais tarde, a partir de suas estimativas de re-substituição e fora da inicialização.

cbeleites suporta Monica
fonte
0

O sobreajuste é simplesmente a conseqüência direta de considerar os parâmetros estatísticos e, portanto, os resultados obtidos, como uma informação útil, sem verificar se eles não foram obtidos de maneira aleatória. Portanto, para estimar a presença de sobreajuste, precisamos usar o algoritmo em um banco de dados equivalente ao real, mas com valores gerados aleatoriamente, repetindo esta operação muitas vezes, podemos estimar a probabilidade de obter resultados iguais ou melhores de maneira aleatória . Se essa probabilidade for alta, provavelmente estamos em uma situação de sobreajuste. Por exemplo, a probabilidade de um polinômio de quarto grau ter uma correlação de 1 com 5 pontos aleatórios em um plano é de 100%; portanto, essa correlação é inútil e estamos em uma situação de sobreajuste.

Andrea Berdondini
fonte