L'ottimizzazione dell'iperparametro su un campione di set di dati è una cattiva idea?


19

Ho un set di dati di 140000 esempi e 30 funzionalità per le quali sto addestrando diversi classificatori per una classificazione binaria (SVM, Regressione logistica, Foresta casuale ecc.)

In molti casi l'ottimizzazione dell'iperparametro sull'intero set di dati utilizzando la ricerca Grid o Random è troppo dispendiosa in termini di tempo.

Ho iniziato a utilizzare la seguente tecnica

  • Sottocampione il mio set di dati
  • Utilizzare la frazione ottenuta per sintonizzare gli iperparametri
  • Utilizzare i parametri ottenuti per addestrare un modello utilizzando l'intero set di dati

Per valutare ogni set di parametri nel secondo passaggio, utilizzo sklearn's GridSearchCVcon cv = 10. Per valutare il modello finale che creo nel terzo passaggio, utilizzo quello sklearndi cross_val_predict. In tal senso, valuto i miei modelli lasciando fuori un 10% di dati, mi alleno sul resto e misuro l'accuratezza predittiva sul 10%, iterativamente 10 volte, quindi prendendo la media dei punteggi.

Ciò che mi ha fatto preoccupare è che l'accuratezza della previsione che ottengo dall'allenamento su tutto il mio set di dati, è molto vicina alla valutazione che ottengo quando si sintonizzano i parametri per il miglior set di parametri (ogni set di parametri testato genera un punteggio ottenuto dalla media 10- risultati della convalida incrociata).

La maggior parte delle volte l'accuratezza cross_val_predictmisurata utilizzando tutti gli esempi di addestramento (set di dati completo) è leggermente superiore a quanto restituito dalla valutazione dei migliori parametri.

Per illustrare questo qui è la valutazione di un set di parametri (su un set di dati più piccolo di quello che ho descritto sopra ma l'effetto è lo stesso)

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}
...

Ed ecco i punteggi medi (da cross_val_predict) che ho ottenuto dall'allenamento su tutto il mio set di dati usando i migliori parametri

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]]

Come puoi vedere, la formazione sull'intero set di dati migliora i risultati. Ho anche validato quel modello mal regolato (ad es. Usando i valori predefiniti o valori casuali per Cegamma ) porta ad una precisione di previsione molto peggiore.

Nel complesso, penso che sintonizzare gli iperparametri su un sottoinsieme non sia l'ideale, ma può potenzialmente portare a risultati relativamente buoni senza dover aspettare troppo a lungo. Per esempio, prima di usare quell'approccio ho usato il optunitypacchetto per ottimizzare l'iperparametro sull'intero set di dati. Il completamento di questa procedura richiederebbe 3-5 giorni e produrrebbe risultati che avevano una precisione molto buona o un ottimo richiamo ma non entrambi, quindi anche se per ogni classe la precisione o il richiamo erano davvero alti (più alti di qualsiasi altro i classificatori avevano raggiunto) la misura f1 era davvero bassa. Al contrario, l'uso dell'approccio successivo porta ad alcune ore di allenamento e ad una migliore misurazione f1.

Le mie preoccupazioni sono:

Limito la precisione della mia classificazione? Evito di utilizzare tutta la potenza di previsione che il mio set di dati può offrire ottimizzando solo un sottoinsieme? Se si verifica un tale danno delle prestazioni, è in qualche modo limitato da qualche fattore?


Si prega di chiarire i due metodi che portano alla precisione delle previsioni ravvicinate. Suddividi i dati in set di allenamento e set di convalida, in cui il set di convalida viene utilizzato solo per ottimizzare i parametri iper e non per la formazione?
Iliyan Bobev,

Vedi la mia domanda aggiornata. Spero sia più chiaro ora.
LetsPlayYahtzee,

Risposte:


15

Oltre alla risposta di Jim (+1): per alcuni classificatori, i valori dell'iperparametro dipendono dal numero di esempi di addestramento, ad esempio per un SVM lineare, il problema di ottimizzazione primario è

mion12w2+CΣio=1ξio

soggetto a

yio(XiowB)1-ξio,un'ndξio0io

ξioC

Alcune implementazioni della SVM si modificano come

mion12w2+CΣio=1ξio

per compensare, ma alcuni no. Quindi un ulteriore punto da considerare è se gli iperparametri ottimali dipendono o meno dal numero di esempi di allenamento.

Concordo con Jim sul fatto che il sovradimensionamento del criterio di selezione del modello sia probabilmente più un problema, ma se si dispone di dati sufficienti anche nel sottocampione, questo potrebbe non essere un problema sostanziale.


11

L'ottimizzazione dell'iperparametro su un campione di set di dati è una cattiva idea?

A: Sì, perché si rischia di sovraccaricare (gli iperparametri) su quel set di test specifico risultante dalla divisione del test del treno prescelta.

Limito la precisione della mia classificazione?

λ*

Evito di utilizzare tutta la potenza di previsione che il mio set di dati può offrire ottimizzando solo un sottoinsieme?

A: vedi la risposta precedente.

Se si verifica un tale danno delle prestazioni, è in qualche modo limitato da qualche fattore?

A: idem.

Misuro la mia precisione usando una croce di 10 volte mentre uso anche per valutare i parametri

A: Nota che questo è diverso da quello che viene richiesto nel titolo. Il CV 10 volte scorre oltre 10 divisioni del treno di prova per arrivare a una stima "imparziale" (meno distorta) della generalizzabilità (misurata in questo caso con precisione). Il CV di 10 volte affronta esattamente il problema di cui parlo nella prima risposta.

l'accuratezza della previsione che ottengo dall'allenamento sull'intero set di dati

A: questa è una misura "nel campione" che potrebbe essere ottimisticamente distorta. Ma non dimenticare che hai molti casi e relativamente poche funzionalità, quindi questo pregiudizio di ottimismo potrebbe non essere un problema. Nugget di machine learning: "il miglior regolarizzatore è più dati".

[continua], è sempre molto vicino alla valutazione che ottengo quando sintonizzo i parametri per il miglior set di parametri.

A: vedi la risposta precedente. Guarda i grafici dell'iperparametro: l'accordatura riduce l'errore e di quanto? Da quello che stai dicendo, l'accordatura non sta facendo molto.

Puoi testarlo come segue. Fai una divisione del 70% -30% per i test di treno. Confronta le prestazioni predittive di:

  1. un modello intonato addestrato sul set del treno,
  2. un modello sintonizzato CV 10 volte addestrato sul set del treno.

Consentire a entrambi i modelli di prevedere il set di test. Se le prestazioni sono molto vicine, l'accordatura non sta facendo molto. Se le prestazioni sono diverse a favore del modello sintonizzato, continuare con l'approccio di ottimizzazione.


1

Risponderò per reti neurali artificiali (ANN).

Gli iperparametri delle RNA possono definire il suo processo di apprendimento (ad esempio, velocità di apprendimento o dimensioni di mini-batch) o la sua architettura (ad esempio, numero di unità o strati nascosti).

L'ottimizzazione degli iperparametri architettonici su un sottoinsieme del set di allenamento non è probabilmente una buona idea (a meno che il set di allenamento non sia davvero privo di diversità, ovvero l'aumento delle dimensioni del set di allenamento non aumenti le prestazioni ANN), poiché gli iperparametri architettonici modificano la capacità dell'ANN.

Sarei meno preoccupato di sintonizzare gli iperparametri che definiscono il processo di apprendimento su un sottoinsieme del tuo set di allenamento, ma immagino che uno dovrebbe validarlo empiricamente.



0

È possibile utilizzare algoritmi di ottimizzazione dell'iperparametro che supportano le valutazioni della fedeltà multipla, ovvero valutazioni su sottoinsiemi dei dati al fine di ottenere una stima approssimativa ma utile sui valori ottimali dell'iperparametro per l'intero set di dati. Tali approcci in genere consentono di ridurre il costo computazionale totale necessario per eseguire l'ottimizzazione dell'iperparametro.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.