Video: Data Analysis in R by Dustin Tran 2024
Essere in grado di convalidare un'ipotesi di apprendimento automatico consente un'ulteriore ottimizzazione dell'algoritmo scelto. L'algoritmo fornisce la maggior parte delle prestazioni predittive sui dati, data la sua capacità di rilevare i segnali dai dati e adattare la vera forma funzionale della funzione predittiva senza sovralimentazione e generando molta varianza delle stime. Non tutti gli algoritmi di apprendimento automatico sono adatti ai tuoi dati e nessun singolo algoritmo può soddisfare ogni problema. Sta a te trovare quello giusto per un problema specifico.
Una seconda fonte di prestazioni predittive è il dato stesso quando opportunamente trasformato e selezionato per migliorare le capacità di apprendimento dell'algoritmo scelto.
La fonte finale della performance deriva dalla regolazione fine degli hyper-parameters dell'algoritmo, che sono i parametri che decidi prima che l'apprendimento avvenga e che non siano appresi dai dati. Il loro ruolo è nel definire a priori un'ipotesi, mentre altri parametri lo specificano a posteriori, dopo che l'algoritmo interagisce con i dati e, utilizzando un processo di ottimizzazione, trova che alcuni valori di parametro lavorare meglio per ottenere buone previsioni.
Sia R che Python offrono funzionalità di slicing che suddividono la matrice di input in parti di treno, test e validazione. In particolare, per procedure di test più complesse, come la convalida incrociata o il bootstrap, il pacchetto Scikit-learn offre un intero modulo e R ha un pacchetto specializzato che offre funzioni per la suddivisione, la pre-elaborazione e il test dei dati.Questo pacchetto si chiama caret.
Le possibili combinazioni di valori che possono formarsi gli iper-parametri rendono difficile decidere dove cercare le ottimizzazioni. Come descritto quando si discute della discesa del gradiente, uno spazio di ottimizzazione può contenere combinazioni di valori che presentano prestazioni migliori o peggiori. Anche dopo aver trovato una buona combinazione, non sei certo che sia l'opzione migliore. (Questo è il problema di rimanere bloccati nei minimi locali quando si riduce al minimo l'errore.)
Come modo pratico per risolvere questo problema, il modo migliore per verificare i parametri iper di un algoritmo applicato a dati specifici è testarli tutti convalida incrociata e scegliere la migliore combinazione. Questo semplice approccio, chiamato grid-search, offre indiscutibili vantaggi, consentendo di campionare la gamma di valori possibili da inserire nell'algoritmo in modo sistematico e individuare quando si verifica il minimo generale.
D'altra parte, la ricerca in rete ha anche gravi inconvenienti perché è intensiva dal punto di vista computazionale (è possibile eseguire facilmente questa attività in parallelo sui moderni computer multicore) e richiede parecchio tempo. Inoltre, i test sistematici e intensivi aumentano la possibilità di incorrere in errori perché alcuni buoni risultati di convalida falsi possono essere causati dal rumore presente nel set di dati.
Sono disponibili alcune alternative alla ricerca della griglia. Invece di testare tutto, puoi provare a esplorare lo spazio di possibili valori iperparametrici guidati da tecniche di ottimizzazione non lineare computazionalmente pesanti e matematicamente complesse (come il metodo Nelder-Mead), usando un approccio Bayesiano (dove il numero di test è ridotto al minimo prendendo vantaggio dei risultati precedenti) o utilizzando la ricerca casuale.
Sorprendentemente, la ricerca casuale funziona incredibilmente bene, è semplice da capire e non si basa solo sulla cieca fortuna, anche se inizialmente potrebbe sembrare. In effetti, il punto principale della tecnica è che se scegli abbastanza test casuali, hai effettivamente abbastanza possibilità di individuare i parametri giusti senza sprecare energia nel testare combinazioni leggermente diverse di combinazioni con prestazioni simili.
La seguente rappresentazione grafica spiega perché la ricerca casuale funziona correttamente. Un'esplorazione sistematica, sebbene utile, tende a testare ogni combinazione, che si trasforma in uno spreco di energia se alcuni parametri non influenzano il risultato. Una ricerca casuale verifica in realtà meno combinazioni ma più nel range di ciascun iper-parametro, una strategia che si dimostra vincente se, come spesso accade, alcuni parametri sono più importanti di altri.
Confronto tra la ricerca della griglia e la ricerca casuale.
Affinché la ricerca randomizzata funzioni bene, è necessario eseguire da 15 a un massimo di 60 test. Ha senso ricorrere alla ricerca casuale se una ricerca sulla griglia richiede un numero maggiore di esperimenti.