Qual è il metodo più efficiente per l'ottimizzazione dell'iperparametro in scikit-learn?


10

Una panoramica del processo di ottimizzazione dell'iperparametro in scikit-learn è qui .

La ricerca esaustiva della griglia troverà il set ottimale di iperparametri per un modello. Il rovescio della medaglia è che la ricerca esaustiva della griglia è lenta.

La ricerca casuale è più veloce della ricerca sulla griglia ma presenta una varianza inutilmente elevata.

Ci sono anche ulteriori strategie in altri pacchetti, tra cui scikit-optimize , auto-sklearn e scikit-iperbanda .

Qual è il metodo più efficiente (trovare rapidamente i parametri ragionevolmente performanti) per l'ottimizzazione dell'iperparametro in scikit-learn?

Idealmente, vorrei esempi di codice di lavoro con benchmark.


Sospetto che la risposta dipenderà un po 'dal tipo di modello. Ne avevi in ​​mente uno specifico?
Ben Reiniger,

All'interno di scikit-learn puoi anche provare scikit-hyperband. Spiacenti, non ho un codice da confrontare al momento. Esistono tuttavia altri metodi che non sono implementati in scikit learn.
Ethan,

1
L'ipermetropia o l'uso dell'approccio bayesiano sembrano dominare il kaggle .. E ovviamente l'esperienza da quel momento in poi non si può fare davvero sempre :)
Aditya

In scikit-learn, generalmente utilizzo gruppi di alberi. Gli ensemble di alberi sarebbero un buon punto di partenza dato che tendono ad esibirsi bene e hanno molte manopole da girare.
Brian Spiering,

1
È interessante notare che alcuni recenti benchmark hanno dimostrato che x2 casuale può superare alcuni dei metodi "più elaborati". Posso collegarmi a un articolo / documento davvero valido da leggere. Inoltre, se trovo un po 'di tempo la prossima settimana, potrei essere in grado di rispondere alla tua domanda in modo più completo.
Ethan,

Risposte:


6

L'ottimizzazione non è il mio campo, ma per quanto ne so, l'ottimizzazione efficiente ed efficace dell'iperparametro al giorno d'oggi ruota pesantemente attorno alla costruzione di un modello surrogato. Man mano che i modelli aumentano in complessità, diventano una scatola nera più opaca. Questo è il caso delle reti neurali profonde e anche degli alberi presumibilmente complessi. Un modello surrogato tenta di regredire lo spazio sottostante all'interno di quella scatola nera. Basato su una varietà di tecniche di campionamento, sondano lo spazio dell'iperparametro e tentano di costruire una funzione che rappresenti il ​​vero spazio dell'iperparametro sottostante.

L'ottimizzazione bayesiana si concentra sul modello surrogato e su come questo modello è costruito è cruciale per BO. Anche per BO è fondamentale scegliere una buona funzione di perdita.

Penso che le prestazioni tra ricerca casuale e ricerca bayesiana variano da set di dati a set di dati e da modello a modello. Bergstra & Bengio (2012) hanno avanzato una forte argomentazione per la ricerca casuale sulla ricerca della griglia. Shahriari et al. (2016) rappresentano un valido esempio per BO. Le strategie Hyperband basate sul modello possono potenzialmente funzionare meglio di BO, specialmente per dimensioni elevate, tuttavia si tratta semplicemente di esplorazione, non di sfruttamento. Ciò può facilmente comportare un arresto troppo anticipato. Tuttavia, ci sono stati sforzi per combinare Hyperband e BO .

Ho avuto un buon successo con scikit-optimisation, nonostante ci sia stato un po 'non implementato. È facile da prototipare e può facilmente interfacciarsi con scikit-learn.


Bergstra, J., & Bengio, Y. (2012). Ricerca casuale per l'ottimizzazione dell'iperparametro. Journal of Machine Learning Research, 13 (febbraio), 281-305.

Shahriari, B., Swersky, K., Wang, Z., Adams, RP, & De Freitas, N. (2016). Portare l'umano fuori dal giro: una revisione dell'ottimizzazione bayesiana. Atti dell'IEEE, 104 (1), 148-175.


2

Puoi dare un'occhiata a auto-sklearn . Questo è un toolkit di apprendimento automatico automatizzato che è un'estensione diretta di scikit-learn.


2
Molto interessante. Questo utilizza l'approccio bayesiano per l'ottimizzazione dell'iperparametro sotto il cofano @Aditya.
Esmailian,
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.