Apprendimento automatico e Reti Neurali - pagina 72

 

10.3 K-fold CV per la valutazione del modello (L10: Valutazione del modello 3)



10.3 K-fold CV per la valutazione del modello (L10: Valutazione del modello 3)

In questo video, approfondiremo l'argomento della convalida incrociata per la valutazione del modello. La convalida incrociata viene comunemente utilizzata in combinazione con l'ottimizzazione degli iperparametri e la selezione del modello. Tuttavia, per facilitare una migliore comprensione, esploriamo innanzitutto come funziona la convalida incrociata k-fold nel contesto della sola valutazione del modello, prima di discuterne l'applicazione nella selezione del modello.

Per iniziare, la convalida incrociata k-fold per la valutazione del modello comporta la suddivisione di un set di dati in una piega di convalida e i restanti segmenti di dati per l'addestramento. In un esempio tipico, consideriamo la convalida incrociata di cinque volte. Il set di dati è suddiviso in una piega di convalida (mostrata in blu) e quattro pieghe di addestramento (mostrate in colori diversi). Il modello viene addestrato sulle pieghe di addestramento e valutato sulla piega di convalida, risultando in una metrica delle prestazioni. A differenza del metodo di controllo in cui viene utilizzato un solo set di convalida, nella convalida incrociata k-fold, la piega di convalida viene ruotata attraverso diversi segmenti di dati. Ciò garantisce che tutti i punti dati vengano utilizzati per la valutazione. Nel caso di cinque validazioni incrociate, ci sono cinque distinte piegature di convalida e vengono eseguite cinque iterazioni. Ogni iterazione produce una misura delle prestazioni. Quando si riportano le prestazioni complessive, l'approccio tipico consiste nel calcolare la media dei valori delle prestazioni in tutte le iterazioni.

È importante notare che in questa discussione ci stiamo concentrando sulla convalida incrociata k-fold per la valutazione del modello, senza considerare l'ottimizzazione degli iperparametri. In questo scenario, la stima delle prestazioni ottenuta attraverso la convalida incrociata può essere considerata una stima delle prestazioni di generalizzazione del modello. Addestrando un nuovo modello sull'intero set di dati utilizzando iperparametri fissi, possiamo ottenere un modello finale per l'uso pratico. Sebbene sia possibile utilizzare un set di test indipendente per valutare ulteriormente le prestazioni del modello, spesso non è necessario quando non è coinvolta l'ottimizzazione degli iperparametri, poiché le prestazioni della convalida incrociata forniscono già una stima affidabile delle prestazioni di generalizzazione.

Ora, esploriamo alcune proprietà chiave della convalida incrociata k-fold. Le pieghe di convalida non si sovrappongono, il che significa che non vi è alcuna sovrapposizione tra i punti dati nella piega di convalida tra diverse iterazioni. Tutti i punti dati vengono utilizzati per i test, garantendo una valutazione completa. Alcuni ricercatori possono riferirsi alle pieghe di convalida come pieghe di prova, poiché i termini possono essere usati in modo intercambiabile.

D'altra parte, le pieghe dell'allenamento si sovrappongono, il che significa che non sono indipendenti l'una dall'altra. In una data iterazione, i dati di addestramento possono avere campioni sovrapposti con i dati di addestramento di altre iterazioni. Questa caratteristica rende difficile stimare la varianza in base a diversi set di addestramento, che è importante per comprendere la variabilità delle prestazioni del modello.

Un altro aspetto degno di nota è che la riduzione del valore di k (il numero di pieghe) rende la stima delle prestazioni più pessimistica. Questo perché con meno punti dati disponibili per l'addestramento in ogni piega, le capacità di adattamento del modello sono limitate. La stima della performance diventa più pessimistica a causa dei dati trattenuti, come discusso nella nostra precedente spiegazione sul pessimismo della performance.

Esploriamo due casi speciali di convalida incrociata k-fold. Quando k è uguale a 2, abbiamo una doppia convalida incrociata, che è distinta dal metodo di controllo. Nella doppia convalida incrociata, il set di dati viene diviso esattamente a metà e ciascuna metà viene utilizzata per l'addestramento in diverse iterazioni. Al contrario, il metodo di controllo consente proporzioni di suddivisione arbitrarie e non comporta la rotazione tra le iterazioni. Tuttavia, ogni round di convalida incrociata k-fold può essere considerato un caso speciale del metodo di controllo, in cui il set di dati viene suddiviso esattamente in due metà.

Un altro caso speciale è quando k è uguale a n, con conseguente convalida incrociata leave-one-out (LOOCV). In LOOCV, ogni iterazione comporta l'esclusione di un punto dati come set di convalida, mentre i punti dati n-1 rimanenti vengono utilizzati per l'addestramento. Questo approccio è noto anche come LOOCV, in cui il set di convalida è costituito da un solo punto dati.

Uno studio condotto da Hawkins et al. (2003) hanno esaminato le prestazioni di diversi metodi di valutazione del modello, inclusa la convalida incrociata leave-one-out (LOOCV), e hanno scoperto che LOOCV tende ad avere un'elevata varianza rispetto ad altri metodi di convalida incrociata. Questa elevata varianza può essere attribuita al fatto che ogni piega di convalida in LOOCV è costituita da un solo punto dati, risultando in una dimensione del campione limitata per la valutazione. Di conseguenza, le stime delle prestazioni ottenute da LOOCV possono essere altamente sensibili ai punti dati specifici scelti per la convalida in ogni iterazione.

Nonostante la sua elevata varianza, LOOCV presenta alcuni vantaggi. Poiché ogni iterazione comporta l'addestramento su punti dati n-1, dove n è il numero totale di punti dati, LOOCV tende a fornire una stima imparziale delle prestazioni del modello. Inoltre, LOOCV utilizza tutti i dati disponibili per l'addestramento, il che può essere vantaggioso quando il set di dati è piccolo o quando si desidera una stima delle prestazioni più precisa.

Tuttavia, a causa della sua complessità computazionale, LOOCV potrebbe non essere fattibile per set di dati di grandi dimensioni. Il processo di addestramento deve essere ripetuto n volte, comportando un onere computazionale significativo. In tali casi, è spesso preferita la convalida incrociata k-fold con un valore moderato di k.

Ora che abbiamo esplorato la convalida incrociata k-fold per la valutazione del modello, discutiamo brevemente della sua applicazione nella selezione del modello. Nel contesto della selezione del modello, l'obiettivo è identificare il modello migliore da un insieme di modelli candidati, in genere con diverse impostazioni degli iperparametri. La convalida incrociata può essere utilizzata per stimare le prestazioni di ciascun modello e facilitare il processo di selezione.

L'approccio tipico consiste nell'eseguire la convalida incrociata k-fold per ogni modello, calcolare le prestazioni medie in tutte le iterazioni e confrontare i risultati. Il modello con le prestazioni medie più alte è considerato la scelta migliore. Questo approccio aiuta a mitigare l'impatto della variabilità dei dati e fornisce una valutazione più solida dei modelli.

Per riassumere, la convalida incrociata è una tecnica preziosa per la valutazione e la selezione del modello. Ruotando sistematicamente la piega di convalida attraverso diversi segmenti di dati, consente una valutazione completa e fornisce stime delle prestazioni del modello. Utilizzata esclusivamente per la valutazione del modello o in combinazione con la selezione del modello, la convalida incrociata aiuta ricercatori e professionisti a prendere decisioni informate sulle capacità di generalizzazione dei loro modelli.

10.3 K-fold CV for Model Evaluation (L10: Model Evaluation 3)
10.3 K-fold CV for Model Evaluation (L10: Model Evaluation 3)
  • 2020.11.19
  • www.youtube.com
This video introduces the concept of k-fold cross-validation and explains how it can be used for evaluating models. Also, it discusses why 10-fold cross-vali...
 

10.4 K-fold CV per la valutazione del modello -- Esempi di codice (L10: Valutazione del modello 3)



10.4 K-fold CV per la valutazione del modello -- Esempi di codice (L10: Valutazione del modello 3)

Nel video precedente, abbiamo discusso della convalida incrociata k-fold come metodo per valutare i modelli di machine learning. In questo video, esploreremo come implementare la convalida incrociata k-fold in Python utilizzando la libreria scikit-learn. Ho caricato il code notebook su GitHub e puoi trovare il link qui.

Iniziamo caricando le librerie necessarie e controllando le loro versioni. Importeremo NumPy e matplotlib, che sono librerie comunemente usate. Successivamente, dimostreremo l'uso della convalida incrociata k-fold utilizzando la classe k-fold dal sottomodulo di selezione del modello in scikit-learn.

Per garantire la riproducibilità, impostiamo un seme casuale utilizzando un oggetto generatore di numeri casuali. Creiamo quindi un semplice set di dati con cinque etichette di Classe Zero e cinque etichette di Classe Uno. Inoltre, generiamo un set di dati casuale con 10 input e quattro funzionalità. Vale la pena notare che questo è solo un set di dati casuale a scopo illustrativo e puoi utilizzare qualsiasi set di dati che preferisci, come il set di dati dell'iride.

Successivamente, inizializziamo un oggetto k-fold, che chiamiamo cv (abbreviazione di convalida incrociata). Impostiamo il numero di divisioni, n_split, su cinque, a indicare che eseguiremo una convalida incrociata di cinque volte. Esaminiamo il comportamento di questo oggetto k-fold utilizzando il metodo split. Quando eseguiamo questo metodo, otteniamo cinque risultati, ciascuno costituito da una tupla contenente due array. Il primo array rappresenta la piega di addestramento e il secondo array rappresenta la piega di convalida.

I numeri all'interno di questi array corrispondono agli indici dei campioni nel set di dati. Ad esempio, se vogliamo ottenere le etichette effettive corrispondenti al set di addestramento della prima piega, possiamo utilizzare questi indici come array di indici per selezionare le etichette. Allo stesso modo, possiamo selezionare le caratteristiche corrispondenti. È importante notare che le etichette nelle pieghe di addestramento e convalida potrebbero essere sbilanciate, come abbiamo osservato in questo caso.

Per risolvere questo problema, si consiglia di mescolare il set di dati prima di eseguire la convalida incrociata k-fold. Possiamo ottenere ciò mescolando il set di dati direttamente all'interno dell'oggetto k-fold durante l'inizializzazione. Impostando uno stato casuale e mescolando, otteniamo una migliore combinazione di etichette nelle pieghe di addestramento e convalida.

Inoltre, si consiglia generalmente di stratificare le divisioni, assicurandosi che la proporzione delle etichette di classe rimanga coerente in ogni piega. Possiamo ottenere ciò utilizzando la classe k-fold stratificata invece della normale classe k-fold. Quando usiamo k-fold stratificato, la proporzione di etichette in ogni piega corrisponde a quella del set di dati originale.

Dopo aver discusso il comportamento generale degli oggetti k-fold e stratificati k-fold, vediamo come applicarli nella pratica. Useremo un classificatore dell'albero decisionale e il set di dati dell'iride come esempio. Innanzitutto, abbiamo suddiviso il set di dati dell'iride in dati di addestramento dell'85% e dati di test del 15% utilizzando il metodo train_test_split, che garantisce la suddivisione stratificata.

Successivamente, inizializziamo un oggetto k-fold stratificato con k=10, come raccomandato dall'articolo di Ron Kohavi sulla guida pratica alla convalida incrociata. Quindi utilizziamo un approccio manuale per eseguire la convalida incrociata k-fold ripetendo gli indici di addestramento e convalida utilizzando il metodo diviso. All'interno di ogni iterazione, adattiamo un nuovo classificatore dell'albero decisionale utilizzando la piega di addestramento e prevediamo le etichette della piega di convalida. Calcoliamo l'accuratezza per ogni iterazione e memorizziamo i risultati in una variabile segnaposto.

Dopo aver ripetuto tutte le pieghe, calcoliamo l'accuratezza media della convalida incrociata k-fold dividendo la somma delle accuratezze per il numero di iterazioni. Infine, per valutare il modello su dati invisibili, adattiamo un nuovo classificatore ad albero decisionale utilizzando tutti i dati di addestramento e calcoliamo l'accuratezza sul set di test.

In questo caso, abbiamo ottenuto un'accuratezza di convalida incrociata k-fold del 95,3% e un'accuratezza del set di test del 95%. Questi risultati suggeriscono che il nostro modello funziona bene sia sulle pieghe di convalida incrociata che sui dati di test invisibili.

Tuttavia, ripetere manualmente le pieghe e adattare i modelli può essere un po' macchinoso. Fortunatamente, scikit-learn fornisce un modo più conveniente per eseguire la convalida incrociata k-fold utilizzando la funzione cross_val_score. Questa funzione accetta il modello, il set di dati e il numero di ripiegamenti come input ed esegue automaticamente la convalida incrociata k-fold, restituendo i punteggi per ogni ripiegamento.

Vediamo come si fa in pratica. Iniziamo importando le librerie necessarie e caricando il dataset dell'iride. Successivamente, creiamo un'istanza del classificatore dell'albero decisionale e inizializziamo un oggetto k-fold stratificato con k=10.

Quindi utilizziamo la funzione cross_val_score, passando il classificatore, il set di dati e l'oggetto k-fold. Questa funzione esegue automaticamente la convalida incrociata k-fold, adatta il modello e calcola i punteggi per ogni piega. Per impostazione predefinita, la funzione cross_val_score utilizza la metrica di accuratezza, ma è possibile specificare altre metriche se lo si desidera.

Infine, stampiamo i punteggi di convalida incrociata per ogni piega e calcoliamo il punteggio medio. In questo caso, abbiamo ottenuto un'accuratezza media della convalida incrociata del 95,3%, che corrisponde all'accuratezza ottenuta manualmente.

L'utilizzo di cross_val_score è un modo più conciso ed efficiente per eseguire la convalida incrociata k-fold, in quanto gestisce automaticamente l'intero processo. Ci consente inoltre di modificare facilmente il numero di pieghe o passare a un modello diverso senza modificare in modo significativo il codice.

10.4 K-fold CV for Model Evaluation -- Code Examples (L10: Model Evaluation 3)
10.4 K-fold CV for Model Evaluation -- Code Examples (L10: Model Evaluation 3)
  • 2020.11.19
  • www.youtube.com
This video explains how we can evaluate models via k-fold cross-validation in Python using scikit-learn. A later video will show how we can use k-fold cross-...
 

CV di 10.5 k volte per la selezione del modello (L10: valutazione del modello 3)


CV di 10.5 k volte per la selezione del modello (L10: valutazione del modello 3)

Nei due video precedenti, abbiamo discusso della convalida incrociata k-fold per la valutazione del modello ed esaminato alcuni esempi di codice. Ora, ci concentreremo sulla convalida incrociata k-fold per la selezione del modello. La selezione del modello è spesso il caso d'uso comune per la convalida incrociata k-fold in quanto ci consente di ottimizzare gli iperparametri e selezionare le impostazioni degli iperparametri con le migliori prestazioni.

Il processo complessivo può essere riassunto in cinque fasi. Tuttavia, a causa dello spazio limitato sulla diapositiva, ingrandirò ogni passaggio nelle diapositive seguenti per fornire maggiori dettagli. I cinque passaggi sono simili al metodo di controllo triplo per la selezione del modello discusso in precedenza.

Passaggio 1: suddividere i dati in set di addestramento e test. Questo passaggio è lo stesso di prima, in cui dividiamo il set di dati in due parti, una per l'addestramento e l'altra per il test. Per ora ci concentreremo sul training set.

Passaggio 2: applicare l'algoritmo di apprendimento con diverse impostazioni dell'iperparametro utilizzando la convalida incrociata k-fold. Ogni impostazione dell'iperparametro, ad esempio la profondità massima di un algoritmo dell'albero decisionale, viene valutata utilizzando la convalida incrociata k-fold. Ad esempio, possiamo utilizzare la convalida incrociata k-fold con k=10, come raccomandato da Ron Kohavi. Questo passaggio ci fornisce diverse stime delle prestazioni per ogni impostazione di iperparametro.

Passaggio 3: selezionare il modello con le migliori prestazioni. Sulla base delle stime delle prestazioni ottenute dalla convalida incrociata k-fold, possiamo identificare l'impostazione dell'iperparametro che offre le prestazioni migliori. Ad esempio, potremmo scoprire che una profondità massima di cinque esegue il meglio tra i valori testati. Selezioniamo questa impostazione dell'iperparametro come la migliore.

Passaggio 4: adattare il modello con i migliori valori di iperparametro ai dati di addestramento. Dopo aver identificato la migliore impostazione dell'iperparametro, riaddestramo il modello utilizzando l'intero set di dati di addestramento e gli iperparametri selezionati. Ciò garantisce di avere un unico modello con i migliori valori di iperparametro.

Passaggio 5: valutare il modello su un set di test indipendente. Per stimare le prestazioni di generalizzazione del modello, le valutiamo su un set di test separato che non è stato utilizzato durante il processo di selezione dell'iperparametro o dell'addestramento. Ciò fornisce una valutazione imparziale delle prestazioni del modello.

Facoltativamente, possiamo eseguire un passaggio aggiuntivo in cui adattiamo il modello con i migliori valori di iperparametro sull'intero set di dati. Questo passaggio si basa sul presupposto che il modello potrebbe funzionare ancora meglio se addestrato su più dati.

Avere un set di test indipendente è importante per evitare bias di selezione. A volte, un'impostazione iperparametrica può funzionare bene sulla convalida incrociata k-fold per caso, portando a una stima eccessivamente ottimistica. Utilizzando un set di test indipendente, possiamo ottenere una valutazione più affidabile delle prestazioni del modello.

Questa procedura riassume la convalida incrociata k-fold per la selezione del modello. Esaminiamo ora alcune tecniche per selezionare gli iperparametri durante la selezione del modello o la fase di ottimizzazione degli iperparametri.

Un metodo comune è la ricerca a griglia, che rimane ampiamente utilizzata. La ricerca griglia è un metodo di ricerca esaustivo in cui si definisce un elenco di valori di iperparametri da considerare. Ad esempio, nel caso di k vicini più vicini, è possibile regolare il valore di k specificando un elenco di valori come 3, 5, 6, 7, 8 e 9. La ricerca della griglia valuta le prestazioni del modello per ogni combinazione di iperparametri utilizzando la convalida incrociata k-fold.

La ricerca della griglia può essere eseguita in parallelo, consentendo la valutazione simultanea di più combinazioni di iperparametri. Tuttavia, può risentire di una scarsa copertura se non tutti i valori degli iperparametri rilevanti sono inclusi nella griglia predefinita. Ciò è particolarmente problematico per gli iperparametri continui o quando vengono ignorati determinati valori.

Per risolvere il problema della copertura, la ricerca randomizzata è un approccio alternativo che campiona i valori degli iperparametri dalle distribuzioni. Invece di specificare una griglia fissa, puoi definire distribuzioni, ad esempio uniforme, normale, esponenziale, beta o binomiale, per campionare i valori degli iperparametri. La ricerca randomizzata offre una maggiore flessibilità nell'esplorazione dello spazio degli iperparametri e può potenzialmente coprire un intervallo di valori più ampio. Campionando dalle distribuzioni, la ricerca randomizzata consente un'esplorazione più efficiente dello spazio degli iperparametri.

Rispetto alla ricerca su griglia, la ricerca randomizzata è spesso più efficiente dal punto di vista computazionale perché non valuta tutte le possibili combinazioni. Invece, campiona in modo casuale un sottoinsieme di valori di iperparametri e li valuta utilizzando la convalida incrociata k-fold. Il numero di iterazioni o campioni può essere specificato in anticipo.

Il vantaggio della ricerca randomizzata è che può cercare in modo efficiente un ampio spazio di iperparametri, soprattutto quando alcuni iperparametri sono meno importanti di altri. Può anche gestire iperparametri continui e discreti senza la necessità di definire una griglia specifica.

Sia la ricerca a griglia che la ricerca randomizzata hanno i loro pro e contro. La ricerca della griglia garantisce di coprire tutte le combinazioni all'interno della griglia definita, ma può essere computazionalmente costosa e potrebbe non essere adatta a grandi spazi di iperparametri. La ricerca randomizzata, invece, è più efficiente ma non garantisce una copertura esaustiva.

In pratica, la scelta tra ricerca su griglia e ricerca randomizzata dipende dalla dimensione dello spazio degli iperparametri, dalle risorse computazionali disponibili e dal problema specifico a portata di mano.

Un'altra tecnica per l'ottimizzazione degli iperparametri è l'ottimizzazione bayesiana. L'ottimizzazione bayesiana utilizza un modello probabilistico per modellare la relazione tra gli iperparametri e la funzione obiettivo (ad esempio, le prestazioni del modello). Utilizza un modello surrogato, come i processi gaussiani, per approssimare la funzione obiettivo e utilizza una funzione di acquisizione per determinare i successivi valori dell'iperparametro da valutare.

L'ottimizzazione bayesiana campiona iterativamente i valori degli iperparametri in base al modello surrogato e aggiorna il modello in base alle prestazioni valutate. Focalizza la ricerca su regioni promettenti dello spazio iperparametrico, portando a un'esplorazione più efficiente.

Il vantaggio dell'ottimizzazione bayesiana è la sua capacità di gestire iperparametri continui e discreti, nonché funzioni obiettivo non convesse e non lineari. Si adatta alle prestazioni osservate e seleziona in modo intelligente i successivi valori dell'iperparametro da valutare, convergendo potenzialmente verso la soluzione ottimale con meno valutazioni rispetto alla ricerca su griglia o alla ricerca randomizzata.

Tuttavia, l'ottimizzazione bayesiana può essere più costosa dal punto di vista computazionale, in particolare per set di dati di grandi dimensioni o modelli complessi. Richiede la valutazione della funzione obiettivo più volte per aggiornare il modello surrogato e determinare i successivi valori dell'iperparametro da valutare.

Nel complesso, l'ottimizzazione bayesiana è una tecnica potente per l'ottimizzazione degli iperparametri, soprattutto quando lo spazio degli iperparametri è complesso e la funzione obiettivo è costosa da valutare.

In sintesi, la convalida incrociata k-fold è uno strumento prezioso sia per la valutazione del modello che per la selezione del modello. Ci consente di stimare le prestazioni di diversi modelli e selezionare le migliori impostazioni degli iperparametri. Tecniche come la ricerca su griglia, la ricerca randomizzata e l'ottimizzazione bayesiana possono essere utilizzate per ottimizzare gli iperparametri e migliorare le prestazioni del modello. La scelta del metodo dipende da fattori quali la dimensione dello spazio degli iperparametri, le risorse computazionali e il problema specifico a portata di mano.

 

10.6 K-fold CV per la valutazione del modello -- Esempi di codice (L10: Valutazione del modello 3)



10.6 K-fold CV per la valutazione del modello -- Esempi di codice (L10: Valutazione del modello 3)

Sì, come l'ultima volta che abbiamo parlato della convalida incrociata k-fold per la valutazione del modello. Diamo ora un'occhiata più da vicino ad alcuni esempi di codice per la convalida incrociata k-fold, ma questa volta per la selezione del modello. Ti fornirò alcuni esempi di codice che puoi trovare su GitHub. Includerò anche il link su Piazza e Canvas in modo che tu possa scaricare il code notebook e sperimentarlo in seguito.

Bene, tuffiamoci nel quaderno dei codici. Come al solito, iniziamo con la filigrana per controllare i numeri di versione dei pacchetti che stiamo utilizzando. In questo notebook, ci concentreremo sulla ricerca in griglia, che è molto utile per l'ottimizzazione degli iperparametri e la selezione del modello. Per questa dimostrazione, utilizzeremo il classificatore dell'albero delle decisioni sul set di dati dell'iride. Sebbene il set di dati dell'iride potrebbe non essere il più entusiasmante, ci consente di mantenere le cose semplici. Inoltre, servirà come buona pratica prima di iniziare i tuoi progetti di classe, dove lavorerai con set di dati più complessi.

Iniziamo suddividendo il nostro set di dati in set di addestramento e test. Utilizziamo l'85% dei dati per la formazione e il 15% per i test, seguendo la prassi abituale. Passando alla ricerca della griglia, definiamo due opzioni di iperparametro: profondità massima e criterio. La profondità massima rappresenta la profondità massima dell'albero decisionale e la impostiamo su 1, 2, 3, 4, 5 o None (nessuna restrizione sulla profondità massima). Il criterio rappresenta la funzione per misurare la qualità di uno split, e valutiamo sia "gini" che "entropia". In pratica, la scelta tra gini ed entropia fa poca differenza, ma la includiamo a scopo dimostrativo.

Successivamente, creiamo una griglia di parametri, specificando gli iperparametri ei rispettivi valori. Invece di utilizzare un elenco, possiamo anche utilizzare dizionari per specificare diversi scenari. Ad esempio, possiamo codificare un valore specifico per un iperparametro mentre esploriamo tutti i valori per un altro iperparametro. Questo approccio può essere utile quando si ha a che fare con scelte di parametri contrastanti. Tuttavia, in questo caso, non c'è conflitto, quindi un elenco sarebbe sufficiente.

Impostiamo il numero di cross-validation fold (CV) su 10, a indicare che vogliamo eseguire una cross-validation di 10 volte. La convalida incrociata stratificata k-fold viene utilizzata per i classificatori, assicurando che le proporzioni delle etichette siano mantenute costanti in ogni piega. La metrica di punteggio utilizzata per selezionare le migliori impostazioni dell'iperparametro è l'accuratezza per i classificatori e il punteggio R-quadrato per i regressori. Impostiamo anche il numero di lavori paralleli da eseguire come -1, consentendo l'esecuzione di più operazioni in parallelo.

Dopo aver specificato tutti i dettagli necessari, adattiamo l'oggetto di ricerca della griglia ai nostri dati. Esegue una ricerca esaustiva sulla griglia dei parametri, valutando le prestazioni di ciascuna combinazione di iperparametri utilizzando la convalida incrociata. Una volta completata la ricerca sulla griglia, possiamo accedere al punteggio migliore e ai parametri corrispondenti utilizzando rispettivamente gli attributi best_score_ e best_params_. In questo caso, il modello migliore ha una profondità massima di 3 e un criterio "gini", raggiungendo una precisione media del 96% nelle pieghe di convalida.

Se siamo interessati, possiamo ispezionare manualmente i risultati memorizzati in un dizionario, che contiene tutte le informazioni. Qui, ci concentriamo sul punteggio medio del test, che rappresenta le prestazioni medie rispetto alle pieghe di convalida per ogni impostazione dell'iperparametro. Stampiamo i punteggi insieme alle impostazioni dei parametri per una migliore leggibilità.

Facoltativamente, possiamo riepilogare i risultati in una mappa di calore utilizzando una funzione della libreria di estensione ML. La heatmap fornisce una rappresentazione visiva delle prestazioni per le diverse impostazioni degli iperparametri. In questo caso la scelta tra "gini" ed "entropia" non ha quasi alcun effetto sull'esecuzione, come indicato dai punteggi simili. La migliore prestazione si ottiene con una profondità massima di 3 e criterio "gini".

Dopo aver ottenuto le migliori impostazioni degli iperparametri, possiamo usarle per addestrare il modello finale sull'intero set di dati di addestramento. Ciò garantisce l'utilizzo di tutti i dati disponibili per l'addestramento del modello. Creiamo un nuovo oggetto classificatore dell'albero delle decisioni, impostiamo gli iperparametri sui migliori valori trovati durante la ricerca sulla griglia e adattiamo il modello ai dati di addestramento.

Una volta addestrato il modello, possiamo fare previsioni sul set di dati di test e valutarne le prestazioni. In questo esempio viene calcolato il punteggio di accuratezza, che misura la proporzione di istanze correttamente classificate. Stampiamo il punteggio di precisione e, in questo caso, otteniamo una precisione del 93% sul set di test.

Nel complesso, la ricerca della griglia ci consente di esplorare sistematicamente diverse combinazioni di iperparametri e selezionare la migliore configurazione per il nostro modello. Automatizza il processo di messa a punto degli iperparametri e aiuta a trovare le impostazioni ottimali per migliorare le prestazioni.

Questa è l'idea di base dell'utilizzo della ricerca in griglia per la selezione del modello e l'ottimizzazione degli iperparametri. Naturalmente, questo è solo un approccio e sono disponibili altre tecniche, come la ricerca randomizzata, l'ottimizzazione bayesiana e altro ancora. La scelta del metodo dipende dal problema specifico e dalle risorse disponibili.

10.6 K-fold CV for Model Evaluation -- Code Examples (L10: Model Evaluation 3)
10.6 K-fold CV for Model Evaluation -- Code Examples (L10: Model Evaluation 3)
  • 2020.11.20
  • www.youtube.com
In this video, we look at code examples for using k-fold cross-validation for model selection. In particular, we are looking at GridSearchCV and RandomizedSe...
 

10.7 K-fold CV 1-metodo dell'errore standard (L10: valutazione del modello 3)


10.7 K-fold CV 1-metodo dell'errore standard (L10: valutazione del modello 3)

Nella discussione precedente, abbiamo coperto i concetti di convalida incrociata k-fold e selezione del modello utilizzando la ricerca della griglia. Tuttavia, c'è un altro argomento importante da considerare: l'unico metodo di errore standard. Questo metodo è rilevante quando incontriamo situazioni in cui più impostazioni di iperparametri funzionano ugualmente bene e dobbiamo scegliere quella più appropriata.

Quando disponiamo di più impostazioni di iperparametri con prestazioni simili o identiche, diventa fondamentale decidere quale selezionare. Per impostazione predefinita, scikit-learn sceglie la prima impostazione dall'elenco in caso di pareggio. Tuttavia, l'unico metodo di errore standard offre un approccio alternativo basato sul principio della parsimonia o sul rasoio di Occam. Secondo il rasoio di Occam, quando le ipotesi concorrenti si comportano ugualmente bene, dovrebbe essere preferita quella con il minor numero di ipotesi.

Per applicare il metodo dell'errore standard, consideriamo la stima numericamente ottimale e il suo errore standard. Dopo aver eseguito la selezione del modello tramite la convalida incrociata k-fold, otteniamo stime delle prestazioni per diverse impostazioni dell'iperparametro. Tra queste impostazioni, selezioniamo il modello le cui prestazioni rientrano in un errore standard del modello con le migliori prestazioni ottenuto nel passaggio precedente.

Per illustrare questo metodo, consideriamo un set di dati di classificazione binaria generato con scikit-learn, costituito da quadrati e triangoli. Ci concentreremo su una Support Vector Machine (SVM) del kernel RBF per semplicità. L'SVM ha un iperparametro chiamato gamma, che controlla l'influenza di ogni esempio di addestramento. Troviamo che vari valori di gamma si traducono in precisioni che vanno dal 60% al 90%, con alcune impostazioni che mostrano prestazioni simili.

Nel caso di SVM, la complessità del confine decisionale dipende dal valore gamma. Una gamma più alta porta a un confine decisionale più complesso, mentre una gamma più bassa si traduce in un confine decisionale più semplice. Possiamo osservarlo tracciando i limiti decisionali per diversi valori gamma. I modelli più semplici hanno confini decisionali più vicini al lineare, mentre quelli più complessi presentano forme più complesse.

Tuttavia, quando più impostazioni di iperparametri producono precisioni simili, vogliamo selezionare il modello più semplice all'interno di un errore standard del modello con le migliori prestazioni. Ad esempio, se il modello con le migliori prestazioni ha un valore gamma di 0,1, consideriamo i modelli con valori gamma entro un errore standard di 0,1 e scegliamo quello con la complessità più bassa.

Vale la pena notare che l'unico metodo di errore standard potrebbe non avere sempre un documento o una pubblicazione corrispondente. È un approccio pratico basato sul principio della semplicità ed è stato ampiamente adottato dai professionisti. Se ci sono studi o documenti pubblicati su questo metodo, sarebbero aggiunte preziose per esplorarne ulteriormente l'efficacia e le implicazioni.

Nel prossimo video, approfondiremo un esempio di codice che dimostra come implementare in pratica il metodo dell'errore standard.

10.7 K-fold CV 1-Standard Error Method (L10: Model Evaluation 3)
10.7 K-fold CV 1-Standard Error Method (L10: Model Evaluation 3)
  • 2020.11.20
  • www.youtube.com
This video suggests the 1-standard error method as a tie breaker for selecting one model from a set of similarly well performing models.-------This video is ...
 

10.8 K-fold CV 1-Metodo errore standard -- Esempio di codice (L10: Valutazione modello 3)


10.8 K-fold CV 1-Metodo errore standard -- Esempio di codice (L10: Valutazione modello 3)

In questo video, fornirò una spiegazione dettagliata di come ho implementato l'unico metodo di errore standard discusso nel video precedente. Per seguire gli esempi di codice, puoi trovarli sotto questo link, che pubblicherò anche su Canvas per un facile accesso.

Esaminiamo insieme il taccuino. Innanzitutto, abbiamo le importazioni convenzionali che vengono comunemente utilizzate. Quindi, genero il mio set di dati giocattolo utilizzando la funzione make_circles dalla libreria scikit-learn. Questa funzione consente di specificare il numero di esempi e la quantità di rumore nel set di dati. Il set di dati generato viene quindi suddiviso in set di addestramento e set di test. Questo approccio è eccellente per condurre studi di simulazione su set di dati di grandi dimensioni arbitrari per osservare come le diverse curve di apprendimento e i comportamenti del modello variano con parametri variabili come il rumore e il numero di esempi di addestramento. Serve come un utile banco di prova per la sperimentazione.

Successivamente, utilizzo la macchina vettoriale di supporto (SVM) come esempio. Non è necessario comprendere appieno come funzionano gli SVM per questa dimostrazione; L'ho semplicemente scelto come esempio chiaro. I passaggi seguenti implicano un approccio manuale, in cui definisco un elenco di impostazioni di iperparametri e itero su questi valori. Tuttavia, se si dispone di impostazioni più complicate, è possibile utilizzare il ParamSampler discusso nel video precedente.

Per questa dimostrazione, sto usando un singolo iperparametro, quindi è sufficiente un approccio manuale usando un elenco e un ciclo for. Inizializzo un elenco di parametri e quindi itero su ciascun valore. In ogni iterazione, inizializzo il modello SVM con l'impostazione dell'iperparametro scelta. Quindi, eseguo la convalida incrociata k-fold per valutare l'accuratezza del modello. I valori di precisione vengono raccolti e calcolo la media, la deviazione standard e l'errore standard. Si noti che l'approccio ingenuo che utilizzo per calcolare l'errore standard dividendo la deviazione standard per la radice quadrata della dimensione del campione potrebbe non essere il metodo migliore perché i round nella convalida incrociata k-fold non sono completamente indipendenti. Tuttavia, allo scopo di ottenere una certa misura di somiglianza o barre di errore per confrontare metodi diversi, questo approccio è sufficiente.

Dopo aver raccolto i valori di precisione, li traccio su una scala logaritmica perché il campionamento viene eseguito in modo esponenziale. Il grafico risultante mostra le prestazioni del modello SVM per diverse impostazioni dell'iperparametro. Ciò è coerente con quanto visto nelle diapositive della lezione.

Per dimostrare l'applicabilità di questo metodo ad altri classificatori, fornisco anche il codice per la classificazione dell'albero decisionale sul set di dati dell'iride. In questo caso, modifico il parametro di profondità massima dell'albero decisionale da 1 a 10. Vengono seguiti passaggi simili: inizializzare il modello con un'impostazione di iperparametro, adattare il modello, fare previsioni, raccogliere punteggi di convalida incrociata k volte, calcolare il errore standard e così via. Analizzando i limiti decisionali per diverse profondità massime, possiamo osservare il compromesso tra complessità del modello e prestazioni. In questo esempio specifico, viene selezionato un albero decisionale con una profondità massima di tre utilizzando il metodo dell'errore standard.

Infine, cito brevemente gli argomenti che tratteremo nella prossima lezione, che includono la convalida incrociata per la selezione degli algoritmi, i test statistici e le metriche di valutazione. Questi argomenti sono strettamente correlati ai concetti discussi nelle lezioni precedenti.

Spero che troverai utile questa spiegazione. Buon fine settimana!

10.8 K-fold CV 1-Standard Error Method -- Code Example (L10: Model Evaluation 3)
10.8 K-fold CV 1-Standard Error Method -- Code Example (L10: Model Evaluation 3)
  • 2020.11.20
  • www.youtube.com
This video goes over a code example for applying the 1-standard error method, which can be used as a tie breaker for selecting one model from a set of simila...
 

11.1 Panoramica della lezione (valutazione del modello L11, parte 4)


11.1 Panoramica della lezione (valutazione del modello L11, parte 4)

Ciao a tutti e benvenuti! Nella nostra sessione precedente, abbiamo approfondito l'argomento dell'ottimizzazione degli iperparametri e della selezione del modello. Il nostro obiettivo era la convalida incrociata k-fold, una tecnica utilizzata per classificare diversi modelli con varie impostazioni di iperparametri al fine di selezionare il migliore. Abbiamo esplorato metodi pratici come la ricerca in griglia e la ricerca randomizzata, che facilitano il processo di confronto dei modelli.

Oggi approfondiremo ulteriormente l'aspetto del confronto tra modelli. Supponi di imbatterti in un documento di ricerca che condivide le previsioni di un modello su un set di test. Potresti voler confrontare queste previsioni con quelle del tuo modello e determinare se c'è una differenza statisticamente significativa nelle loro prestazioni. Sebbene questa pratica non sia molto comune, può essere utile. Un test statistico che può essere impiegato in questi casi è il test di McNemar. Inoltre, discuteremo i confronti tra algoritmi, permettendoci di confrontare diversi modelli e algoritmi in modo più equo.

Tuttavia, tieni presente che la conferenza di oggi sarà più breve del solito a causa della settimana del Ringraziamento. Per chi fosse interessato, gli appunti delle lezioni forniscono spiegazioni più dettagliate. Coprono anche test statistici aggiuntivi, come il test F cinque volte due e varie procedure di test t. Sebbene questi argomenti non siano esaminabili, servono a soddisfare la tua curiosità intellettuale.

Per ottimizzare il nostro tempo, non approfondiremo questi metodi poiché la prossima settimana ci aspetta una lezione sulle metriche delle prestazioni. Se il tempo lo consente, potremmo anche toccare la selezione delle funzionalità e l'estrazione delle funzionalità. Per tua comodità, ho condiviso materiali supplementari su questi argomenti tramite Canvas.

Ora, iniziamo con la lezione principale sulla valutazione del modello, iniziando con i test statistici per i confronti tra modelli. Affronteremo quindi le sfide associate a più confronti a coppie ed esploreremo i metodi per affrontarle. Successivamente, approfondiremo la selezione dell'algoritmo ed esamineremo un esempio di codice concreto relativo alla tecnica della validazione incrociata annidata. Questa panoramica della conferenza pone le basi per la nostra discussione di oggi.

Prima di procedere, ricapitoliamo gli argomenti che abbiamo trattato nelle lezioni precedenti sulla valutazione del modello. Abbiamo iniziato con i fondamentali, compreso il compromesso bias-variance, underfitting e overfitting e il semplice metodo di holdout. Abbiamo quindi approfondito gli intervalli di confidenza e introdotto il metodo bootstrap per la costruzione di intervalli di confidenza empirici. Abbiamo esplorato il metodo di controllo ripetuto, che offre approfondimenti sulla stabilità del modello, sebbene non sia comunemente utilizzato nella pratica. È servito come una buona introduzione ai metodi di ricampionamento.

La scorsa settimana ci siamo avventurati nel regno della convalida incrociata, che ha aggiunto più profondità alla nostra esplorazione. Abbiamo discusso l'ottimizzazione degli iperparametri utilizzando la ricerca sulla griglia e la ricerca randomizzata e abbiamo utilizzato queste tecniche per la selezione del modello. Il nostro obiettivo principale era il metodo di controllo a tre vie, che prevede la suddivisione del set di dati in set di addestramento, convalida e test. Abbiamo utilizzato il set di convalida per classificare diversi modelli e il set di test per stimare le loro prestazioni finali. Per set di dati più piccoli, siamo passati alla convalida incrociata k-fold e alla convalida incrociata leave-one-out.

La conferenza di oggi introdurrà i confronti tra modelli e algoritmi. Sebbene questi concetti si riferiscano alla selezione del modello, il nostro obiettivo qui è confrontare diversi algoritmi, cercando di determinare quale funziona meglio in una serie di attività correlate. Idealmente, avremmo una raccolta di training disgiunti e set di test per ciascun algoritmo. Ad esempio, confrontando i metodi di classificazione delle immagini, utilizzeremo vari set di dati di immagini per addestrare modelli diversi utilizzando algoritmi diversi. Confronteremmo quindi le loro prestazioni su più set di dati. Tuttavia, i vincoli pratici spesso limitano la nostra capacità di seguire questo approccio ideale. Riscontriamo problemi con violazioni dell'indipendenza e altri fastidi all'interno dei set di dati. Questo problema ricorda le sfide discusse nel documento CIFAR-10.

Inoltre, come possiamo confrontare le prestazioni di un modello che abbiamo addestrato con quelle di un modello pubblicato in un documento di ricerca o trovato su Internet? Per risolvere questo problema, possiamo esaminare l'effettiva differenza di prestazioni tra i due modelli utilizzando test statistici. Uno di questi test è il test McNemar, comunemente utilizzato per confrontare le prestazioni predittive di due modelli su un risultato binario.

Il test McNemar è adatto quando disponiamo di dati accoppiati, il che significa che ogni istanza nel set di dati è classificata da entrambi i modelli e i risultati vengono registrati come una tabella di contingenza. La tabella delle contingenze ha quattro celle che rappresentano i quattro possibili esiti:

              Model 2
           |  Positive | Negative |
---------------------------------
Model 1     |           |          |
---------------------------------
  Positive |           |          |
---------------------------------
  Negative |           |          |
---------------------------------
Per applicare il test di McNemar, contiamo il numero di istanze in ogni cella della tabella di contingenza. Indichiamo questi conteggi come segue:

  • a: il numero di casi in cui entrambi i modelli 1 e 2 prevedono una previsione positiva.
  • b: il numero di casi in cui il modello 1 prevede positivo e il modello 2 prevede negativo.
  • c: il numero di casi in cui il modello 1 prevede negativo e il modello 2 prevede positivo.
  • d: il numero di istanze in cui entrambi i modelli 1 e 2 prevedono una previsione negativa.

Con questi conteggi, possiamo eseguire il test McNemar per determinare se c'è una differenza significativa nelle prestazioni dei modelli. L'ipotesi nulla (H0) è che i due modelli abbiano le stesse prestazioni, mentre l'ipotesi alternativa (H1) è che ci sia una differenza.

La statistica del test di McNemar segue una distribuzione chi-quadrato con 1 grado di libertà. Calcoliamo la statistica del test utilizzando la formula:

chi2 = ((|b - c| - 1)^2) / (b + c)

Se la statistica del test chi2 supera un valore critico dalla distribuzione chi-quadro (con 1 grado di libertà) a un livello di significatività prescelto (ad esempio, 0,05), rifiutiamo l'ipotesi nulla e concludiamo che esiste una differenza significativa nelle prestazioni tra il due modelli.

È importante notare che il test McNemar presuppone che le istanze accoppiate siano indipendenti e distribuite in modo identico. Questa ipotesi potrebbe non valere se le istanze accoppiate non sono veramente indipendenti o se esiste una qualche forma di dipendenza tra di esse. Inoltre, il test McNemar è applicabile principalmente ai risultati binari. Se il risultato è multiclasse, test alternativi come il test Q di Cochran o il test di Stuart-Maxwell possono essere più appropriati.

Ora, passiamo a discutere le sfide di più confronti a coppie. Quando si confrontano più modelli o algoritmi, diventa sempre più probabile trovare differenze significative solo per caso. Questo fenomeno è noto come problema del confronto multiplo o problema dei test multipli.

Quando si eseguono più confronti a coppie, la probabilità di almeno un risultato significativo aumenta con l'aumentare del numero di confronti. Questa inflazione del tasso di errore di tipo I può portare a risultati falsi positivi, in cui rifiutiamo erroneamente l'ipotesi nulla.

Per affrontare il problema del confronto multiplo, dobbiamo regolare il livello di significatività dei nostri test statistici. Un approccio comune è la correzione di Bonferroni, che comporta la divisione del livello di significatività desiderato (ad esempio, 0,05) per il numero di confronti effettuati. Ad esempio, se confrontiamo tre modelli, regoliamo il livello di significatività a 0,05/3 = 0,0167 per ogni singolo test.

La correzione di Bonferroni è un metodo conservativo che controlla il tasso di errore familiare, assicurando che il tasso di errore complessivo di tipo I in tutti i confronti rimanga al di sotto di una soglia specificata. Tuttavia, può essere eccessivamente rigoroso, portando a una perdita di potere per rilevare le vere differenze.

Altri metodi per regolare il livello di significatività includono il metodo Holm-Bonferroni, la procedura Benjamini-Hochberg e il controllo FDR (false discovery rate). Questi metodi forniscono alternative meno conservative alla correzione di Bonferroni e possono essere più appropriati in determinate situazioni.

In sintesi, il test McNemar è un test statistico che può essere utilizzato per confrontare le prestazioni di due modelli su un risultato binario. Tuttavia, quando si eseguono più confronti a coppie, è importante tenere conto del problema del confronto multiplo regolando il livello di significatività.

11.1 Lecture Overview (L11 Model Eval. Part 4)
11.1 Lecture Overview (L11 Model Eval. Part 4)
  • 2020.11.24
  • www.youtube.com
This first video goes over the model and algorithm comparison-related topics that are coved in Lecture 11.More details in my article "Model Evaluation, Model...
 

11.2 Test di McNemar per il confronto del classificatore a coppie (valutazione del modello L11, parte 4)


11.2 Test di McNemar per il confronto del classificatore a coppie (valutazione del modello L11, parte 4)

Parliamo ora del test di McNemar, che è un test che possiamo usare per confrontare due modelli tra loro. Questo test è diverso dal metodo di convalida incrociata discusso la scorsa settimana per la selezione del modello. A differenza della convalida incrociata, il test McNemar non prevede l'ottimizzazione del modello utilizzando il set di addestramento. Presuppone invece che disponiamo già di un modello esistente, come un classificatore di machine learning menzionato nella letteratura pubblicata, a cui abbiamo accesso tramite un'app Web o GitHub. L'obiettivo è confrontare il nostro modello con questo classificatore esistente in base alle loro prestazioni su un set di test.

Il test McNemar ci consente di confrontare due classificatori in base alle loro prestazioni su un set di test. È stato introdotto da Quinn McNemar nel 1947 ed è un test statistico non parametrico per confronti appaiati. In questo caso, abbiamo una variabile dipendente categoriale con due categorie che rappresentano la correttezza delle previsioni (ad esempio, corretta o errata) e una variabile indipendente categoriale con due gruppi correlati che rappresentano i due modelli confrontati. L'accoppiamento si ottiene utilizzando lo stesso set di prova per entrambi i modelli. Per eseguire il test, utilizziamo una matrice di confusione due per due, che è una versione speciale della matrice di confusione progettata specificamente per il test di McNemar.

La matrice di confusione due per due per il test di McNemar include i conteggi delle previsioni fatte da entrambi i modelli. Ad esempio, consideriamo il caso in cui abbiamo vere etichette di classe di 0 e 1. Il Modello 1 prevede 1 e 2, mentre il Modello 2 prevede 1 e 1. In questo caso, il conteggio "a" rappresenta le previsioni che sia il Modello 1 che Il modello 2 è stato corretto (ad esempio, prevedendo 1 quando l'etichetta vera è 1). Il conteggio "b" rappresenta le previsioni in cui il Modello 1 è corretto e il Modello 2 è sbagliato, e il conteggio "c" rappresenta le previsioni in cui il Modello 1 è sbagliato e il Modello 2 è corretto. Tabulando questi conteggi per un dato set di dati di test, possiamo costruire la matrice di confusione due per due.

Usando la matrice di confusione due per due, possiamo calcolare varie metriche. Ad esempio, possiamo calcolare l'accuratezza della previsione per ciascun modello dividendo i conteggi "a" e "b" per il numero totale di esempi nel set di test. Inoltre, siamo interessati ai casi in cui il Modello 1 e il Modello 2 differiscono, rappresentati dai conteggi "b" e "c" nella matrice di confusione. Questi casi indicano dove un modello ha fatto una previsione corretta mentre l'altro ha fatto una previsione errata. Per confrontare le prestazioni dei due modelli, possiamo eseguire il test McNemar.

Il test di McNemar segue una tipica procedura di verifica delle ipotesi. Definiamo un'ipotesi nulla e un'ipotesi alternativa. L'ipotesi nulla presuppone che le prestazioni dei due modelli siano uguali, mentre l'ipotesi alternativa suggerisce che le loro prestazioni differiscano. Calcoliamo una statistica test chi-quadrato, che approssima una distribuzione chi-quadrato. La statistica del test è calcolata come (b - c)^2 / (b + c). Sulla base di questa statistica di test, calcoliamo un valore p, assumendo che l'ipotesi nulla sia vera. Il valore p rappresenta la probabilità di osservare la statistica del test data o un valore più estremo sotto l'ipotesi nulla.

Per determinare se rifiutare l'ipotesi nulla, confrontiamo il valore p con un livello di significatività prescelto (ad esempio, 0,05). Se il p-value è inferiore al livello di significatività, rifiutiamo l'ipotesi nulla e concludiamo che le prestazioni dei due modelli non sono uguali. Viceversa, se il p-value è maggiore del livello di significatività, non si rifiuta l'ipotesi nulla e si assume che le prestazioni dei due modelli siano uguali.

La correzione della continuità è stata introdotta per risolvere il problema della distribuzione chi-quadrato essendo una distribuzione continua mentre i dati nella tabella di contingenza 2x2 sono discreti. Sottraendo 1 dalla differenza assoluta nel numeratore, la correzione di continuità aiuta a fornire una migliore approssimazione del p-value. Tuttavia, è importante notare che l'uso della correzione della continuità non è sempre necessario e dipende dal contesto e dai dati specifici.

Un'altra considerazione nel test di McNemar è l'uso del test binomiale esatto. Il test binomiale esatto fornisce un approccio alternativo per determinare la significatività statistica del test di McNemar quando la dimensione del campione è piccola o quando le ipotesi del test del chi-quadrato non sono soddisfatte. Il test binomiale esatto calcola direttamente la probabilità di ottenere i dati osservati sotto l'ipotesi nulla, senza fare affidamento sull'approssimazione del chi-quadrato.

Inoltre, il test di McNemar può essere esteso per gestire più di due modelli o trattamenti. In tali casi, il test può essere eseguito utilizzando un test di McNemar generalizzato o un'estensione nota come test di Cochran-Mantel-Haenszel. Queste estensioni consentono il confronto simultaneo di più modelli o trattamenti, tenendo conto delle dipendenze tra i diversi gruppi.

In sintesi, il test di McNemar è un test statistico non parametrico utilizzato per confrontare le prestazioni di due modelli o trattamenti basati su dati categorici accoppiati. Fornisce un modo per valutare se le differenze nelle prestazioni tra i modelli sono statisticamente significative. Il test prevede la costruzione di una tabella di contingenza 2x2 e il calcolo di una statistica test, che può essere confrontata con la distribuzione chi-quadrato o valutata utilizzando il test binomiale esatto. Conducendo il test di McNemar, i ricercatori possono ottenere informazioni sulle prestazioni relative di diversi modelli o trattamenti in vari campi, tra cui l'apprendimento automatico, la medicina e le scienze sociali.

11.2 McNemar's Test for Pairwise Classifier Comparison (L11 Model Eval. Part 4)
11.2 McNemar's Test for Pairwise Classifier Comparison (L11 Model Eval. Part 4)
  • 2020.11.24
  • www.youtube.com
This video introduces McNemar's test, which is a nonparametric statistical test for comparing the performance of two models with each other on a given test s...
 

11.3 Confronti multipli a coppie (valutazione del modello L11, parte 4)


11.3 Confronti multipli a coppie (valutazione del modello L11, parte 4)

Nello scenario in cui si dispone di un modello che si desidera confrontare con più altri modelli presenti in letteratura o su piattaforme come GitHub, condurre confronti a coppie può diventare problematico. Se hai k modelli diversi, l'esecuzione di un test a coppie su ogni coppia comporterebbe k volte (k - 1) / 2 combinazioni, che possono essere un numero elevato. Ciò solleva preoccupazioni circa il tasso di errore quando si eseguono test di ipotesi multiple.

In genere, i test di ipotesi vengono condotti a un livello di significatività di 0,05 o inferiore. Ciò significa che se l'ipotesi nulla è vera, c'è una probabilità del 5% di rifiutarla in modo errato, portando a un tasso di errore del 5%. Quando vengono eseguiti più test, il tasso di errore per il rifiuto errato di un'ipotesi nulla può aumentare fino a r volte alfa, dove r è il numero di test condotti. Nel peggiore dei casi, il tasso di errore può essere fino a r volte alfa se tutte le ipotesi nulle a coppie sono vere.

Per risolvere questo problema, un approccio comune consiste nell'utilizzare una procedura protetta, che prevede un processo in due fasi. Il primo passaggio è un test omnibus, in cui si valuta se esiste una differenza significativa nelle prestazioni di tutti i modelli combinati. L'ipotesi nulla presuppone che le accuratezze di classificazione di tutti i modelli siano uguali, mentre l'ipotesi alternativa suggerisce che non siano uguali.

Se l'ipotesi nulla viene rifiutata nel test omnibus, indicando che c'è una differenza nelle prestazioni del modello, puoi procedere alla seconda fase, che prevede test post hoc a coppie. Tuttavia, è fondamentale apportare modifiche per confronti multipli per controllare il tasso di errore. Un metodo di aggiustamento comunemente utilizzato è il metodo Bonferroni, in cui il livello di significatività è diviso per il numero di confronti.

Per i test a coppie si può utilizzare il test di McNemar. È importante notare che mentre queste procedure statistiche sono formali e forniscono preziose informazioni, nella pratica dell'apprendimento automatico non è molto comune eseguire confronti così estesi. In genere, i ricercatori segnalano l'accuratezza o gli errori di previsione e classificano i modelli in base alle loro prestazioni.

Sebbene il test Cochran-Q possa essere implementato nella libreria "mlxtend" per confrontare più modelli, vale la pena ricordare che l'utilizzo di tali procedure per confronti tra più modelli è ancora relativamente raro nel campo dell'apprendimento automatico. Tuttavia, se trovi una situazione in cui desideri confrontare più modelli ed eseguire test statistici, puoi esplorare queste opzioni e fare riferimento alle dispense e alla letteratura pertinente per informazioni più dettagliate.

È importante notare che questi argomenti non sono ampiamente trattati in questa lezione per consentire tempo sufficiente per coprire altri concetti essenziali come la selezione delle caratteristiche.

Un problema con i confronti multipli è l'aumento del rischio di errori di tipo I, noti anche come falsi positivi. Quando si eseguono più test, c'è una maggiore possibilità di rifiutare erroneamente ipotesi nulle, portando a conclusioni errate. Per mitigare questo, i ricercatori applicano spesso metodi di aggiustamento come la correzione di Bonferroni o il controllo del tasso di false scoperte (FDR).

La correzione di Bonferroni è un aggiustamento conservativo che divide il livello di significatività (alfa) per il numero di confronti (k). Questo livello di significatività aggiustato, indicato come alfa primo (α'), assicura che il tasso di errore familiare complessivo rimanga sotto controllo. Utilizzando la correzione di Bonferroni, ogni singolo test a coppie viene condotto a un livello alfa/k.

Un altro metodo popolare è il controllo FDR, che si concentra sul controllo della proporzione di false scoperte tra tutti i rifiuti. Invece di ridurre il livello di significatività per ogni confronto, il controllo FDR regola i valori p dei singoli test per controllare il tasso complessivo di false scoperte. Questo metodo consente una regolazione meno rigorosa rispetto alla correzione Bonferroni, che può essere vantaggiosa in situazioni in cui è coinvolto un numero elevato di confronti.

Mentre la correzione Bonferroni e il controllo FDR sono ampiamente utilizzati, è importante notare che hanno i loro limiti. La correzione di Bonferroni può essere eccessivamente conservativa, portando potenzialmente a maggiori possibilità di errori di tipo II o falsi negativi. D'altra parte, il controllo FDR può avere più potere di rilevare le vere differenze ma può anche aumentare il rischio di falsi positivi.

Nel contesto dell'apprendimento automatico, vale la pena considerare se l'obiettivo è valutare le differenze a coppie in modo completo o identificare i modelli con le migliori prestazioni. L'esecuzione di test a coppie per tutte le possibili combinazioni può essere computazionalmente costosa e richiedere molto tempo. In pratica, i ricercatori spesso si concentrano sulla classificazione dei modelli in base alle loro metriche di prestazione e sull'identificazione dei modelli con le migliori prestazioni piuttosto che condurre test statistici formali.

È anche importante riconoscere che i test statistici sono solo un aspetto del confronto tra modelli. Quando si valutano e si selezionano i modelli, dovrebbero essere presi in considerazione anche altri fattori come l'interpretabilità, l'efficienza computazionale, la pertinenza del dominio e considerazioni pratiche.

In conclusione, mentre confronti multipli e test statistici possono fornire preziose informazioni sui confronti delle prestazioni dei modelli, la loro applicazione pratica nell'apprendimento automatico è meno comune. I ricercatori spesso si affidano alla segnalazione di accuratezze o errori di previsione, confronti visivi e modelli di classificazione basati su metriche delle prestazioni. Comprendere i concetti statistici sottostanti e i potenziali problemi con confronti multipli rimane essenziale per condurre ricerche rigorose e interpretare i risultati in modo accurato.

11.3 Multiple Pairwise Comparisons (L11 Model Eval. Part 4)
11.3 Multiple Pairwise Comparisons (L11 Model Eval. Part 4)
  • 2020.11.24
  • www.youtube.com
This video extends the concept of McNemar's test, which is a pairwise procedure, but recommending Cochran's Q (a generalization of McNemar's test) as an omni...
 

11.4 Test statistici per il confronto degli algoritmi (valutazione del modello L11, parte 4)


11.4 Test statistici per il confronto degli algoritmi (valutazione del modello L11, parte 4)

Nei video precedenti, abbiamo discusso di come utilizzare l'inferenza statistica per confrontare diversi modelli che sono già stati adattati a un determinato set di dati. Ora esploreremo i test statistici che ci consentono di confrontare gli algoritmi. Ciò significa che possiamo confrontare i modelli che sono stati adattati a diversi set di addestramento o sottoinsiemi di addestramento. Questa discussione si concentra sull'applicazione dell'inferenza statistica e di vari test statistici per il confronto tra algoritmi.

Sono disponibili diversi test statistici per confrontare gli algoritmi, ognuno con i suoi pro e contro. Negli appunti delle lezioni è possibile trovare una spiegazione più dettagliata di questi test, insieme a materiali aggiuntivi. Qui, fornirò una panoramica dei test ed evidenzierò alcuni punti chiave.

Un test comune è il test di McNemar, utilizzato principalmente per confrontare modelli piuttosto che algoritmi. Vale la pena menzionarlo perché ha un basso tasso di falsi positivi ed è efficiente dal punto di vista computazionale. Tuttavia, non è specificamente progettato per il confronto tra algoritmi.

Un altro test è il test della differenza di proporzioni, che purtroppo ha un alto tasso di falsi positivi. Questo test richiede l'adattamento di più modelli, rendendolo più adatto per il confronto degli algoritmi. Tuttavia, può essere computazionalmente costoso a causa della necessità di più adattamenti del modello.

Il test t con convalida incrociata K-fold è un altro metodo utilizzato per il confronto degli algoritmi. Fornisce una valutazione più accurata ma ha ancora un tasso di falsi positivi leggermente elevato. Nonostante questo inconveniente, rimane un test utile.

Il t-test accoppiato con convalida incrociata ripetuta è un altro approccio che richiede l'adattamento di più modelli. Sebbene abbia un tasso di falsi positivi inferiore rispetto ad altri test, può comunque essere computazionalmente intenso a causa del ripetuto adattamento del modello.

Una tecnica più avanzata è il t-test accoppiato con convalida incrociata 5x2, che mostra un basso tasso di falsi positivi e una potenza statistica leggermente superiore rispetto al test di McNemar. Offre un approccio più robusto al confronto degli algoritmi. Inoltre, ci sono approcci più recenti, come il test f accoppiato con convalida incrociata 5x2, che forniscono ulteriori miglioramenti.

Negli appunti delle lezioni, approfondisco più in dettaglio questi test e altri approcci statistici. Inoltre, ho implementato la maggior parte di questi test in MLA extend, una libreria che accompagna i materiali delle lezioni. È possibile trovare implementazioni del test di McNemar, del test Q di Cochrane, del t-test accoppiato ricampionato (non consigliato), del t-test accoppiato con convalida incrociata K-fold, del t-test combinato 5x2 con convalida incrociata e altro ancora.

Sebbene i test statistici offrano preziose informazioni, esistono anche approcci computazionali o empirici al confronto tra algoritmi. Nel prossimo video, esploreremo la motivazione alla base della selezione e del confronto degli algoritmi nelle applicazioni del mondo reale. Ad esempio, potremmo voler confrontare diversi algoritmi per identificare il migliore in scenari come lo sviluppo di un'applicazione di posta elettronica o la creazione di un sistema di raccomandazione per articoli di ricerca.

In conclusione, sono disponibili diversi test statistici per confrontare gli algoritmi, ciascuno con i suoi punti di forza e limiti. Questi test possono fornire informazioni sulle differenze di prestazioni tra algoritmi dotati di diversi set di addestramento. Tuttavia, è importante considerare l'efficienza computazionale, i tassi di falsi positivi e la potenza statistica quando si seleziona un test appropriato. Inoltre, gli approcci empirici possono integrare i test statistici nel confronto degli algoritmi.

11.4 Statistical Tests for Algorithm Comparison (L11 Model Eval. Part 4)
11.4 Statistical Tests for Algorithm Comparison (L11 Model Eval. Part 4)
  • 2020.11.24
  • www.youtube.com
This video gives a brief overview of different statistical tests that exist for model and algorithm comparisons.More details in my article "Model Evaluation,...
Motivazione: