O ajuste do hiperparâmetro na amostra do conjunto de dados é uma má idéia?

19

Eu tenho um conjunto de dados de 140000 exemplos e 30 recursos para os quais estou treinando vários classificadores para uma classificação binária (SVM, Regressão Logística, Floresta Aleatória etc.)

Em muitos casos, o ajuste de hiperparâmetros em todo o conjunto de dados usando a pesquisa em grade ou aleatória é muito dispendioso no tempo.

Comecei a usar a seguinte técnica

  • Subamostra meu conjunto de dados
  • Use a fração obtida para ajustar os hiperparâmetros em
  • Use os parâmetros obtidos para treinar um modelo usando o conjunto de dados inteiro

Para avaliar cada conjunto de parâmetros na segunda etapa, utilizo sklearns GridSearchCVcom cv = 10. Para avaliar o modelo final que criei na terceira etapa, utilizo sklearn's cross_val_predict. Nesse sentido, avalio meus modelos deixando 10% por cento dos dados de fora, treino com os demais e medo a precisão preditiva dos 10%, iterativamente, 10 vezes, depois calculando a média das pontuações.

O que me preocupou é que a precisão da previsão que recebo do treinamento em todo o conjunto de dados é muito próxima da avaliação que recebo ao ajustar os parâmetros para o melhor conjunto de parâmetros (cada conjunto de parâmetros testado gera uma pontuação obtida com a média de 10- resultados de validação com dobra cruzada).

Na maioria das vezes, a precisão que foi cross_val_predictmedida usando todos os exemplos de treinamento (conjunto de dados completo) está um pouco acima do que a avaliação dos melhores parâmetros retornou.

Para ilustrar isso aqui, está a avaliação de um conjunto de parâmetros (em um conjunto de dados menor do que o que descrevi acima, mas o efeito é o mesmo)

Best parameters set found on development set:
{'kernel': 'rbf', 'C': 9, 'gamma': 0.1}
Scores for all sets of parameters
0.851 (+/-0.006) for {'kernel': 'rbf', 'C': 3, 'gamma': 0.5}
0.852 (+/-0.006) for {'kernel': 'rbf', 'C': 3, 'gamma': 0.1}
0.829 (+/-0.006) for {'kernel': 'rbf', 'C': 3, 'gamma': 0.001}
0.853 (+/-0.006) for {'kernel': 'rbf', 'C': 9, 'gamma': 0.1}
...

E aqui estão as pontuações médias (de cross_val_predict) que recebi do treinamento em todo o conjunto de dados usando os melhores parâmetros

precision    recall  f1-score   support

      0       0.86      0.85      0.86     15417
      1       0.86      0.87      0.87     16561

avg / total       0.86      0.86      0.86     31978

acc score: 0.863750078179
roc au score: 0.863370490059
[[13147  2270]
 [ 2087 14474]]

Como você pode ver, o treinamento em todo o conjunto de dados melhora os resultados. Também validei que o modelo mal ajustado (por exemplo, usando os valores padrão ou aleatórios para Ce gamma) leva a uma precisão de previsão muito pior.

No geral, acho que ajustar os hiperparâmetros em um subconjunto não é o ideal, mas pode levar a resultados relativamente bons sem ter que esperar muito tempo. Por exemplo, antes de usar essa abordagem, usei o optunitypacote para ajustar o hiperparâmetro em todo o conjunto de dados. Esse procedimento levaria de 3 a 5 dias para ser concluído e produziria resultados com precisão muito boa ou recuperação muito boa, mas não com ambas, portanto, para cada classe, a precisão ou a recuperação foram realmente altas (mais altas do que as outras os classificadores alcançaram) a medição do F1 foi realmente baixa. Pelo contrário, o uso da abordagem posterior leva a algumas horas de treinamento e a uma melhor medição da F1.

Minhas preocupações são:

Limito a precisão da minha classificação? Evito usar todo o poder de previsão que meu conjunto de dados pode oferecer ajustando apenas um subconjunto? Se esse dano de desempenho está acontecendo, é de alguma forma limitado por algum fator?

LetsPlayYahtzee
fonte
Esclareça os dois métodos que levam à precisão da previsão aproximada. Você divide os dados em conjunto de treinamento e conjunto de validação, onde o conjunto de validação é usado apenas para otimizar hiper parâmetros e não para treinamento?
Iliyan Bobev 9/09/16
Veja minha pergunta atualizada. Espero que esteja mais claro agora.
precisa saber é o seguinte

Respostas:

15

Além da resposta de Jim (+1): Para alguns classificadores, os valores de hiperparâmetros dependem do número de exemplos de treinamento, por exemplo, para um SVM linear, o problema primordial de otimização é

mEun12__W__2+CEu=1ξEu

sujeito a

yEu(xEuWb)1-ξEu,umandξEu0 0Eu

Observe que o problema de otimização é basicamente uma medida do termo de ajuste incorreto dos dados (a soma acima de ) e um termo de regularização, mas o parâmetro de regrularização usual é colocado com o termo de ajuste incorreto dos dados. Obviamente, quanto maior o número de padrões de treinamento que tivermos, maior será a soma e menor será o para manter o mesmo equilíbrio com a magnitude dos pesos. CξEuC

Algumas implementações do SVM reparameteram como

mEun12__W__2+CEu=1ξEu

para compensar, mas alguns não. Portanto, um ponto adicional a considerar é se os hiperparâmetros ótimos dependem do número de exemplos de treinamento ou não.

Concordo com Jim que a superavaliação do critério de seleção de modelo provavelmente será um problema, mas se você tiver dados suficientes, mesmo na subamostra, isso poderá não ser um problema substancial.

Dikran Marsupial
fonte
11

O ajuste do hiperparâmetro na amostra do conjunto de dados é uma má idéia?

R: Sim, porque você corre o risco de realizar ajustes excessivos (os hiperparâmetros) nesse conjunto de testes específico resultante da divisão de teste de trem que você escolheu.

Limito a precisão da minha classificação?

R: Sim, mas a sabedoria comum do aprendizado de máquina é: com seus hiperparâmetros ótimos, digamos , reinstale seus modelos em todo o conjunto de dados e faça desse modelo seu modelo final para casos futuros novos e não vistos.λ

Evito usar todo o poder de previsão que meu conjunto de dados pode oferecer ajustando apenas um subconjunto?

A: veja resposta anterior.

Se esse dano de desempenho está acontecendo, é de alguma forma limitado por algum fator?

A: idem.

Eu medi minha precisão usando uma cruz de 10 vezes, como também uso para avaliar os parâmetros

R: Observe que isso é diferente do que é solicitado no título. O CV de 10 vezes itera mais de 10 divisões do trem de teste para chegar a uma estimativa "generalizada" (menos tendenciosa) da generalização (medida neste caso pela precisão). O CV de dez vezes aborda exatamente o problema de que falo na primeira resposta.

a precisão da previsão que recebo do treinamento em todo o conjunto de dados

R: esta é uma medida "dentro da amostra" que pode ser otimista. Mas não esqueça que você tem muitos casos e relativamente poucos recursos, para que esse viés de otimismo não seja um problema. Pepita de aprendizado de máquina: "o melhor regularizador é mais dados".

[continua], está sempre muito próximo da avaliação que recebo ao ajustar os parâmetros para o melhor conjunto de parâmetros.

A: veja resposta anterior. Veja as plotagens do hiperparâmetro: o ajuste diminui o erro e em quanto? Pelo que você está dizendo, o ajuste não está fazendo muito.

Você pode testar isso da seguinte maneira. Faça uma divisão de teste de trem de 70% a 30%. Compare o desempenho preditivo de:

  1. um modelo desafinado treinado no trem,
  2. um modelo afinado com 10 vezes de CV treinado no trem.

Deixe os dois modelos preverem o conjunto de testes. Se o desempenho estiver muito próximo, o ajuste não está fazendo muito. Se o desempenho for diferente em favor do modelo ajustado, continue com a abordagem de ajuste.

Jim
fonte
1

Vou responder por redes neurais artificiais (RNAs).

Os hiperparâmetros das RNAs podem definir seu processo de aprendizado (por exemplo, taxa de aprendizado ou tamanho do mini lote) ou sua arquitetura (por exemplo, número de unidades ou camadas ocultas).

Ajustar os hiperparâmetros arquitetônicos em um subconjunto do seu conjunto de treinamento provavelmente não é uma boa idéia (a menos que seu conjunto de treinamento realmente não tenha diversidade, ou seja, aumentar o tamanho do conjunto de treinamento não aumenta o desempenho da ANN), pois os hiperparâmetros arquitetônicos alteram a capacidade da RNA.

Eu ficaria menos preocupado em ajustar os hiperparâmetros que definem o processo de aprendizado em um subconjunto do seu conjunto de treinamento, mas acho que se deve validá-lo empiricamente.

Franck Dernoncourt
fonte
0

Você pode usar algoritmos de otimização de hiperparâmetros que suportam avaliações multifidelidade, ou seja, avaliações em subconjuntos de seus dados, a fim de obter uma estimativa aproximada, mas útil, dos valores ideais de hiperparâmetros para todo o conjunto de dados. Tais abordagens geralmente permitem reduzir o custo computacional total necessário para executar a otimização do hiperparâmetro.

IndieSolver
fonte