Apprendimento automatico e Reti Neurali - pagina 70

 

7.3 Insaccamento (L07: Metodi d'insieme)



7.3 Insaccamento (L07: Metodi d'insieme)

Dopo aver discusso a fondo il concetto di voto a maggioranza nel video precedente, il prossimo video approfondirà un altro metodo fondamentale noto come bagging, che sta per aggregazione bootstrap. Il termine "bagging" deriva dalla combinazione delle iniziali "B" e "ag G" ed è strettamente correlato al concetto di bootstrapping. Questa tecnica è stata originariamente proposta da Leo Breiman, una figura di spicco nel campo degli alberi decisionali, in particolare degli alberi di classificazione e regressione (CART). Esploreremo i contributi di Breiman in modo più dettagliato in una futura lezione incentrata sulle foreste casuali.

Per iniziare, delineamo l'algoritmo per il bagging. Anche se a prima vista può sembrare complesso, in realtà è abbastanza semplice e consiste di sole sei righe di codice, o cinque se escludiamo la riga vuota. L'algoritmo funziona come segue: Supponiamo di avere un totale di n campioni o cicli di bootstrap. Per ogni round i, estraiamo un campione bootstrap di dimensione m dal set di addestramento. Qui, m rappresenta la dimensione del training set. È importante notare che l'uso di singole lettere per le variabili può sembrare non convenzionale, ma era necessario a causa delle limitazioni imposte dalla scelta delle lettere. Nel video precedente, abbiamo usato n per rappresentare il numero di campioni bootstrap, che corrisponde al numero di classificatori nei classificatori di voto d'insieme di cui abbiamo discusso.

Per ogni campione di bootstrap, addestriamo un classificatore e applichiamo il voto a maggioranza. Questo processo è abbastanza simile al classificatore di voto d'insieme trattato in precedenza, con l'unica differenza che invece di addestrare ogni classificatore sull'intero set di addestramento, addestriamo ogni classificatore di base su un campione di bootstrap estratto dal set di addestramento.

Prima di procedere, ricapitoliamo brevemente il concetto di campionamento bootstrap. Considera un set di dati con una dimensione di m. Ogni campione di bootstrap estratto da questo set di dati avrà anche una dimensione di m, in base all'algoritmo di cui sopra. Il campionamento bootstrap comporta la selezione casuale di punti dati dal set di dati con sostituzione. Ad esempio, se disponiamo di dieci punti dati etichettati da uno a dieci ed eseguiamo il campionamento con sostituzione, alcuni dei punti dati verranno duplicati nel set di dati bootstrap. Questa duplicazione si verifica perché ogni posizione viene estratta indipendentemente dal training set. Di conseguenza, alcuni punti dati potrebbero apparire più volte, mentre altri potrebbero non apparire affatto, risultando in quelli che chiamiamo campioni out-of-bag (OOB). Questi campioni OOB sono i punti dati che non sono inclusi nel campione bootstrap per un particolare round.

Per comprendere meglio la probabilità associata alla mancata selezione di un elemento specifico in un campione bootstrap, esaminiamo la probabilità di non selezionare un particolare punto dati per una singola posizione. La probabilità di scegliere un punto dati specifico per una data posizione è 1/m, poiché ci sono m esempi nel training set. Pertanto, la probabilità di non selezionare quel particolare punto dati è 1 - 1/m. Poiché abbiamo m scelte, la probabilità di non scegliere un esempio specifico nell'intero campione bootstrap è (1 - 1/m)^n. Man mano che m diventa sufficientemente grande, circa il 36,8% dei punti non sarà incluso nel campione bootstrap. Di conseguenza, il 63,2% dei punti dati sarà univoco nel campione bootstrap, mentre i punti rimanenti saranno duplicati.

La visualizzazione del campionamento bootstrap all'interno della procedura di insaccamento può aiutare a comprendere ulteriormente il concetto. Vengono condotti più cicli di campionamento bootstrap, ciascuno risultante in un nuovo campione bootstrap. Un classificatore viene quindi addestrato in modo indipendente su ciascun campione di bootstrap. Questo processo facilita il parallelismo del modello poiché non vi è alcuna dipendenza tra i cicli di bootstrap. Di conseguenza, ogni round può essere eseguito simultaneamente, aumentando il potenziale dell'elaborazione parallela.

Il diagramma di flusso del classificatore di insacco fornisce una panoramica dei passaggi coinvolti. Simile al classificatore di voto, il classificatore di insaccamento inizia con un set di addestramento. Tuttavia, nel bagging, riutilizziamo il training set per creare più campioni di bootstrap. Ogni campione di bootstrap viene utilizzato per addestrare un classificatore, ottenendo un totale di m classificatori. Ogni classificatore genera previsioni e la previsione finale viene determinata attraverso il voto a maggioranza. Questo approccio aiuta a ridurre l'overfitting ea migliorare la stabilità e la generalizzazione del modello.

L'insacco offre diversi vantaggi:

  • Riduzione della varianza: generando più campioni bootstrap e addestrando classificatori indipendenti su ciascun campione, il bagging riduce efficacemente la varianza delle previsioni. Questa riduzione della varianza è particolarmente vantaggiosa quando il classificatore di base è soggetto a overfitting.
  • Stabilità migliorata: poiché il bagging comporta l'addestramento di più classificatori su diversi campioni di bootstrap, fornisce stabilità al modello. È meno probabile che piccoli cambiamenti nel set di addestramento abbiano un impatto significativo sulla previsione finale, risultando in un modello più robusto.
  • Gestione di set di dati complessi: il bagging è molto efficace nella gestione di set di dati complessi caratterizzati da varianza e rumore elevati. Utilizzando più classificatori e aggregando le loro previsioni, il bagging cattura modelli diversi e diminuisce l'influenza di valori anomali o dati rumorosi.
  • Elaborazione parallela: il bagging consente l'elaborazione parallela dei campioni bootstrap e l'addestramento dei classificatori. Ogni campione di bootstrap è indipendente dagli altri, consentendo un utilizzo efficiente delle risorse computazionali.

Nonostante i suoi vantaggi, l'insaccamento presenta anche alcune limitazioni:

  • Interpretabilità: poiché il bagging combina le previsioni di più classificatori, l'interpretazione dei singoli contributi di ciascun classificatore alla previsione finale può essere difficile. Sebbene il modello dell'insieme possa fornire previsioni accurate, la comprensione del ragionamento sottostante diventa più complesso.
  • Complessità computazionale: l'addestramento di più classificatori su diversi campioni di bootstrap aumenta la complessità computazionale dell'algoritmo di bagging. Il tempo e le risorse necessari per l'addestramento e l'aggregazione delle previsioni possono essere significativi, in particolare per set di dati di grandi dimensioni.
  • Potenziale overfitting: sebbene il bagging riduca il rischio di overfitting rispetto a un singolo classificatore, non è del tutto immune dall'overfitting. Se il classificatore di base è già soggetto a overfitting, il bagging potrebbe non produrre miglioramenti significativi.
  • Diversità limitata: il bagging si basa sulla creazione di diversi campioni di bootstrap per ottenere diversi classificatori. Tuttavia, in alcuni casi in cui il set di dati è piccolo o presenta una variabilità limitata, i campioni bootstrap potrebbero non essere sufficientemente diversi, riducendo l'efficacia del bagging.

In questa sezione, approfondiremo i concetti discussi in precedenza. Quando le previsioni di un modello mostrano variazioni significative, indica un'elevata varianza. Ad esempio, consideriamo un albero decisionale complesso per il caso arancione. Le previsioni di questo modello differiranno in modo significativo dalle previsioni del modello blu. Allo stesso modo, il caso verde avrà il proprio insieme di previsioni diverse. Queste previsioni variabili illustrano il concetto di alta varianza.

Per comprendere meglio l'impatto dell'elevata varianza, esaminiamo gli alberi decisionali reali adattati a questi set di dati. Nonostante le loro variazioni, il caso ad alta varianza riesce comunque a fornire una buona previsione media. È importante notare che anche se qui non ho mostrato esplicitamente la previsione media, la media delle previsioni dei tre modelli (modello uno, due e tre) montati su set di addestramento diversi si tradurrà in una previsione che si avvicina molto alla vera funzione . Al contrario, i modelli ad alto bias, come mostrato in precedenza, sono accurati solo in posizioni specifiche in cui le linee si intersecano con la vera funzione. In tutti gli altri casi, si comportano male a causa della loro elevata distorsione.

Tuttavia, utilizzando un modello ad alta varianza e calcolando la media delle previsioni di più modelli, possiamo comunque ottenere previsioni accurate. Questo concetto costituisce la base del bagging, che prevede l'utilizzo di diversi set di addestramento generati attraverso il campionamento bootstrap. Nel bagging, ogni campione di bootstrap viene utilizzato per adattare un albero decisionale, risultando in più modelli ad alta varianza. Questi modelli vengono quindi calcolati in media utilizzando il voto d'insieme, considerando le etichette di classe nelle attività di classificazione o gli output di regressione nelle attività di regressione. Questo processo di calcolo della media aiuta a ottenere previsioni altamente accurate riducendo la varianza.

Calcolando la media delle predizioni dei tre alberi decisionali montati su diversi insiemi di addestramento, otterremmo una predizione media che si avvicina molto alla funzione reale. Questa media è simile al concetto di bagging, in cui ogni set di addestramento funge da set di dati bootstrap. In secondo luogo, è importante notare che gli alberi decisionali non possono interpolare i valori. Possono solo prevedere i valori target che esistono nel training set o le loro medie. Pertanto, la funzione graduale mostrata nella figura è un'approssimazione di un albero decisionale non potato.

Per concludere, il bagging è una tecnica efficace per ridurre la varianza calcolando la media delle previsioni da modelli ad alta varianza. Utilizzando la parallelizzazione, il bagging può accelerare l'adattamento del modello utilizzando più CPU. Tuttavia, alcuni computer Windows potrebbero riscontrare problemi con il multiprocessing in Python, limitando l'utilizzo di più lavori. Vale anche la pena ricordare che i classificatori di bagging possono calcolare l'accuratezza out-of-bag, che implica l'utilizzo dei punti dati che non sono inclusi nell'esempio bootstrap per valutare le prestazioni del modello. Ciò fornisce una metrica utile per valutare la capacità di generalizzazione del modello. Nell'esempio di codice che utilizza scikit-learn, il classificatore di bagging può essere importato dal sottomodulo ensemble.

Lo stimatore di base, che in questo caso è l'albero decisionale, viene inizializzato con la profondità massima impostata su Nessuno per creare un albero decisionale non sfoltito. Il numero di stimatori determina il numero di cicli di bootstrap e la parallelizzazione può essere ottenuta impostando di conseguenza il parametro n_jobs. Inoltre, il parametro oob_score abilita il calcolo del punteggio out-of-bag. Dopo aver addestrato il classificatore di insaccamento, è possibile valutare il punteggio fuori dal sacco e la precisione del set di test.

Nel complesso, il bagging offre un approccio efficace per mitigare l'elevata varianza e migliorare l'accuratezza della previsione combinando più modelli ad alta varianza. In sintesi, il bagging è un potente metodo di ensemble che combina più classificatori addestrati su diversi campioni di bootstrap per migliorare l'accuratezza della previsione e ridurre la varianza. È particolarmente utile quando si ha a che fare con set di dati complessi e può migliorare la stabilità e la generalizzazione del modello. Tuttavia, presenta anche alcune limitazioni, tra cui una ridotta interpretabilità e una maggiore complessità computazionale.

7.3 Bagging (L07: Ensemble Methods)
7.3 Bagging (L07: Ensemble Methods)
  • 2020.10.20
  • www.youtube.com
In this video, we look at bagging (bootstrap aggregating) and also introduce the bias-variance trade-off and decomposition in order to understand why bagging...
 

7.4 Boosting e AdaBoost (L07: Metodi Ensemble)


7.4 Boosting e AdaBoost (L07: Metodi Ensemble)

Nel video precedente, abbiamo discusso il concetto di modelli ad alta varianza e bassa distorsione, concentrandoci in particolare sugli alberi decisionali non potati. Abbiamo anche appreso una tecnica chiamata bagging, che aiuta a migliorare le prestazioni dei modelli ad alta varianza riducendo la varianza attraverso la media.

In questa conferenza, sposteremo la nostra attenzione sul potenziamento, che opera nella direzione opposta. Il potenziamento comporta l'utilizzo di modelli ad alta distorsione con varianza bassa, come semplici ceppi dell'albero decisionale, e il loro potenziamento per migliorare le prestazioni complessive del modello. Questo primo video fornirà una panoramica dei concetti di potenziamento e introdurrà il potenziamento in generale, mentre il prossimo video approfondirà un tipo popolare di potenziamento chiamato potenziamento del gradiente.

Il potenziamento può essere ampiamente classificato in due tipi principali: potenziamento adattivo (ad esempio, adaboost) e potenziamento del gradiente. Storicamente, il potenziamento del gradiente era meno utilizzato a causa della sua complessità computazionale. Tuttavia, i recenti progressi, come l'introduzione di XGBoost nel 2016, hanno notevolmente migliorato le prestazioni del gradient boosting. Al giorno d'oggi sono emerse varianti ancora migliori come LightGBM, di cui parleremo nel prossimo video. Sebbene il potenziamento del gradiente abbia guadagnato popolarità, è essenziale comprendere la procedura generale di potenziamento attraverso il potenziamento adattivo.

La procedura di potenziamento segue uno schema specifico, che differisce dalla procedura di insaccamento. Una distinzione notevole è la presenza di dipendenze tra i round. La procedura di potenziamento coinvolge più classificatori, indicati come classificatore uno, classificatore due e così via, fino al classificatore M. Inizialmente, iniziamo con un set di dati di addestramento regolare e un classificatore fit uno. Sulla base delle previsioni del classificatore uno, pesiamo i campioni di addestramento utilizzando un metodo di ponderazione specifico, di cui parleremo più dettagliatamente in seguito. Quindi, il secondo classificatore utilizza questo set di dati di addestramento ponderato e il processo continua. La ponderazione dipende dalle previsioni dei classificatori precedenti, rendendo difficile parallelizzare il potenziamento. A differenza del bagging, in cui i classificatori possono essere addestrati contemporaneamente, il potenziamento richiede di attendere fino a quando il classificatore precedente non ha effettuato previsioni prima di aggiornare il set di dati per il classificatore successivo. Quando si effettuano previsioni finali, il potenziamento utilizza una combinazione ponderata dei classificatori, a differenza del voto d'insieme o della media utilizzati nel bagging. La combinazione ponderata viene determinata in base alla funzione di segno, che assegna pesi alla previsione di ciascun classificatore. Per la classificazione binaria, la funzione segno restituisce 1 per risultati positivi e -1 per risultati negativi. Questa previsione ponderata si traduce in una previsione finale di -1 o 1. Il processo può essere esteso per gestire numeri arbitrari di classi utilizzando le funzioni dell'indicatore.

Per comprendere ulteriormente la procedura generale di potenziamento, delineamo i passaggi coinvolti. In primo luogo, inizializziamo un vettore di peso con pesi uniformi per ogni esempio di allenamento. Questi pesi rappresentano l'importanza di ogni esempio di allenamento. Quindi, entriamo in un ciclo che itera sui diversi classificatori o cicli della procedura di potenziamento. In ogni round, applichiamo uno studente debole, che è un classificatore leggermente migliore dell'ipotesi casuale, agli esempi di addestramento ponderato. Possiamo assegnare pesi più elevati a esempi specifici o disegnare campioni bootstrap con probabilità ponderate. Dopo aver addestrato lo studente debole, aumentiamo il peso degli esempi classificati in modo errato, consentendo al classificatore successivo di concentrarsi su questi esempi classificati in modo errato. Questo ciclo viene ripetuto più volte e, infine, viene eseguita una votazione a maggioranza ponderata sui classificatori addestrati per ottenere le previsioni finali.

Ora concentriamoci sull'algoritmo adaboost, che si allinea strettamente con la procedura generale di potenziamento discussa in precedenza. Adaboost è simile allo schema di potenziamento generale, in cui i classificatori sono adattati a esempi di allenamento ponderato. L'algoritmo inizia inizializzando i pesi per ogni punto dati di addestramento. Quindi, inizia il ciclo for principale, che comprende i round adaboost. In ogni round, i pesi vengono normalizzati per garantire che la somma sia pari a uno. Successivamente, uno studente debole viene addestrato sul set di addestramento ponderato e vengono calcolati gli errori di previsione ponderata. Gli errori di previsione sono pesati dai pesi del set di addestramento e indicano le classificazioni errate. Gli errori di previsione vengono quindi utilizzati per calcolare il contributo dello studente debole alla previsione finale. Il contributo è determinato dall'accuratezza dello studente debole, mentre gli studenti più accurati hanno un contributo maggiore. Il contributo viene quindi utilizzato per aggiornare i pesi degli esempi di formazione. I pesi degli esempi classificati in modo errato vengono aumentati, mentre i pesi degli esempi correttamente classificati vengono diminuiti. Questo aggiustamento sottolinea l'importanza degli esempi classificati erroneamente nei turni successivi.

Dopo aver aggiornato i pesi, il processo passa al round successivo, in cui lo studente debole viene addestrato sul set di allenamento ponderato aggiornato. Questo processo iterativo continua per il numero specificato di round o finché non viene soddisfatto un determinato criterio. Una volta completati tutti i round, la previsione finale viene effettuata combinando le previsioni di tutti gli studenti deboli. Il peso della previsione di ogni studente debole è determinato dal suo contributo all'accuratezza complessiva durante l'allenamento.

L'algoritmo adaboost combina efficacemente le previsioni degli studenti deboli per creare un forte modello di insieme. I pesi assegnati alla previsione di ogni studente debole riflettono le sue prestazioni nella classificazione degli esempi di addestramento. Regolando in modo iterativo i pesi e concentrandosi sugli esempi classificati erroneamente, adaboost è in grado di migliorare la precisione del modello nel tempo.

È importante notare che adaboost è sensibile ai valori anomali e al rumore nei dati. I valori anomali possono avere un impatto significativo sugli aggiornamenti del peso, portando potenzialmente all'overfitting. Pertanto, si consiglia di pre-elaborare i dati per gestire valori anomali e campioni rumorosi. Inoltre, adaboost può essere soggetto a overfitting se gli studenti deboli sono troppo complessi o se il numero di round è troppo alto. Tecniche di regolarizzazione come la limitazione della profondità degli alberi decisionali o l'utilizzo dell'arresto anticipato possono aiutare a mitigare l'overfitting.

Se dovessimo abbozzare approssimativamente il concetto, sarebbe simile a questo: abbiamo una freccia sull'asse x, che rappresenta il valore alfa. Il valore alfa determina l'importanza di ciascun classificatore nella previsione finale. Quando usiamo il valore alfa per pesare la stima e la previsione, scopriamo che se un classificatore ha un errore grande, il valore alfa sarà relativamente piccolo. Ciò significa che un classificatore con un errore elevato non è così importante per la previsione finale. D'altra parte, i classificatori con piccoli errori avranno un peso maggiore perché ci fidiamo di più di loro quando calcoliamo il voto di maggioranza.

Usiamo il valore alfa in due modi: in primo luogo, lo usiamo per pesare la stima e la previsione, e in secondo luogo, lo usiamo per aggiornare i pesi per il round successivo. Se la previsione è corretta, il peso assegnato a quell'esempio di allenamento sarà piccolo. Ciò significa che se facciamo una previsione corretta, non prestiamo molta attenzione a quell'esempio di allenamento nel round successivo. È considerato un esempio facile. D'altra parte, se commettiamo un errore, il peso assegnato a quell'esempio sarà maggiore. Ciò significa che presteremo maggiore attenzione agli esempi classificati erroneamente nel prossimo round. Minore è il valore alfa, maggiore è il peso assegnato agli esempi classificati in modo errato.

Per illustrare questo concetto, consideriamo un caso bidimensionale. Abbiamo un esempio di giocattolo con due caratteristiche, x1 e x2. Adattiamo un moncone dell'albero decisionale, che è un albero decisionale con una sola divisione. Il ceppo dell'albero decisionale classifica correttamente alcuni punti ma commette errori su altri. Nel primo round di AdaBoost, diamo pesi maggiori agli esempi classificati in modo errato e pesi inferiori agli esempi classificati correttamente. Quindi inseriamo un altro ceppo dell'albero decisionale, concentrandoci sugli esempi erroneamente classificati del round precedente. Questo processo continua, con ogni nuovo classificatore che impara dagli errori del classificatore precedente e presta maggiore attenzione agli esempi classificati in modo errato. Infine, quando combiniamo tutti i classificatori usando il voto a maggioranza, potremmo ritrovarci con un classificatore che classifica correttamente tutti gli esempi.

AdaBoost può essere un po' complicato da capire, ma ci sono risorse disponibili per aiutarti. Il documento originale su AdaBoost fornisce una spiegazione approfondita, ma per un'introduzione più accessibile, si consiglia il documento tutorial di Manwani. Prima di passare agli esempi di codice, vale la pena menzionare una modifica dell'algoritmo AdaBoost per la classificazione multiclasse denominata AdaBoost.M2 o SAMME. Introduce una piccola modifica all'algoritmo originale per gestire più classi. Esiste anche una versione con numero reale chiamata SAMME.R. Se sei interessato, puoi esplorare queste variazioni nei rispettivi documenti.

In scikit-learn, AdaBoost è implementato come classificatore di potenziamento. Utilizza i ceppi dell'albero decisionale come classificatori deboli e regola i pesi degli esempi di addestramento in base ai risultati della classificazione. Aumentando questi classificatori deboli, AdaBoost migliora le prestazioni complessive. Confrontando l'accuratezza di un albero decisionale non potato e di un moncone dell'albero decisionale sul set di dati dell'iride, AdaBoost con i monconi dell'albero decisionale raggiunge una maggiore precisione. Il processo di addestramento comporta l'aggiornamento dei pesi campione, quindi non esiste alcuna opzione di parallelizzazione come nel bagging. AdaBoost in scikit-learn fornisce un modo efficace per aumentare i classificatori deboli e ottenere risultati di classificazione migliori.

Successivamente, approfondiremo il potenziamento del gradiente, un'altra variante popolare del potenziamento. L'aumento del gradiente si basa sui concetti di AdaBoost ma introduce ulteriori miglioramenti.

Il potenziamento del gradiente è una variante popolare dell'algoritmo di potenziamento che mira a migliorare ulteriormente le prestazioni dei classificatori deboli migliorando iterativamente i loro punti deboli. Si basa sul concetto di discesa del gradiente, comunemente usato nei problemi di ottimizzazione. Nel potenziamento del gradiente, i classificatori deboli vengono addestrati in sequenza e combinati per creare un classificatore forte.

L'idea di base alla base del potenziamento del gradiente è di addestrare in modo iterativo classificatori deboli e quindi regolare i pesi degli esempi di addestramento in base agli errori commessi dall'insieme di classificatori. Questo aggiustamento viene effettuato calcolando i gradienti della funzione di perdita rispetto alle previsioni dell'insieme. Minimizzando la funzione di perdita, l'insieme migliora gradualmente le sue prestazioni.

Per illustrare il concetto, consideriamo un semplice esempio. Supponiamo di avere un problema di classificazione binaria in cui vogliamo classificare i punti dati come positivi o negativi. Iniziamo con l'addestrare un classificatore debole iniziale, come un ceppo dell'albero decisionale, sui dati di addestramento. Questo classificatore commetterà alcuni errori e calcoleremo gli errori o i residui confrontando le sue previsioni con le vere etichette degli esempi di addestramento.

Nella prossima iterazione, addestriamo un nuovo classificatore debole per prevedere i residui del classificatore precedente. Questo nuovo classificatore si concentra sulla correzione degli errori commessi dal precedente. Calcoliamo i residui sottraendo i valori previsti dai residui reali. Ancora una volta, questo nuovo classificatore commetterà degli errori e calcoleremo i residui.

Ripetiamo questo processo, addestrando in sequenza nuovi classificatori deboli per prevedere i residui dell'insieme e aggiornando i residui in base agli errori commessi dall'insieme corrente. Ogni classificatore debole è addestrato a minimizzare la funzione di perdita rispetto ai residui correnti. L'insieme finale si ottiene combinando tutti i classificatori deboli, con ogni classificatore che contribuisce con un voto ponderato in base alla sua prestazione.

I pesi dei classificatori deboli sono determinati dal tasso di apprendimento, che controlla il contributo di ciascun classificatore alla previsione finale. Un tasso di apprendimento inferiore porta a una convergenza più lenta ma può comportare una migliore generalizzazione. Un tasso di apprendimento maggiore può portare a una convergenza più rapida, ma può anche portare a un overfitting.

Il potenziamento del gradiente ha dimostrato di essere una tecnica potente per un'ampia gamma di attività di apprendimento automatico, inclusi problemi di regressione, classificazione e classificazione. È stato applicato con successo in vari domini, come la visione artificiale, l'elaborazione del linguaggio naturale e la bioinformatica.

In pratica, sono disponibili diverse implementazioni del gradient boosting, tra cui XGBoost, LightGBM e CatBoost, che offrono algoritmi efficienti e ottimizzati per il gradient boosting. Queste implementazioni forniscono funzionalità aggiuntive, come la parallelizzazione, le tecniche di regolarizzazione e la gestione dei valori mancanti, per migliorare ulteriormente le prestazioni e la flessibilità dei modelli di potenziamento del gradiente.

Questo conclude l'introduzione al potenziamento e la panoramica dell'algoritmo adaboost. Nel prossimo video, esploreremo il potenziamento del gradiente in modo più dettagliato, inclusi i concetti di discesa del gradiente, funzioni di perdita e gli algoritmi specifici che sono stati sviluppati per migliorare il processo di potenziamento del gradiente.

7.4 Boosting and AdaBoost (L07: Ensemble Methods)
7.4 Boosting and AdaBoost (L07: Ensemble Methods)
  • 2020.10.21
  • www.youtube.com
This video discusses the general concept behind boosting -- one of the model ensembling approaches in machine learning. Then, it goes over an early boosting ...
 

7.5 Gradient Boosting (L07: Metodi Ensemble)


7.5 Gradient Boosting (L07: Metodi Ensemble)

Il concetto di potenziamento del gradiente viene introdotto come una versione moderna del potenziamento che utilizza alberi decisionali e una funzione di perdita differenziabile. Sebbene simile ad AdaBoost, il potenziamento del gradiente differisce nel modo in cui vengono adattati gli alberi decisionali. Nel potenziamento del gradiente vengono utilizzati alberi più profondi e non vengono assegnati pesi agli esempi di addestramento o ai classificatori. L'idea chiave alla base del potenziamento del gradiente è l'uso dei gradienti dalla funzione di perdita per migliorare il modello, con conseguenti prestazioni migliori sui set di dati tabulari. Questo algoritmo ha guadagnato popolarità, specialmente nelle competizioni di machine learning.

Nel contesto della regressione, il potenziamento del gradiente inizia con la costruzione di un albero di base. Ad esempio, in un problema di previsione del prezzo di una casa, l'albero base iniziale è costituito solo dal nodo radice. L'obiettivo è previsto in base al valore medio in quel nodo, che in questo caso è il prezzo medio delle quattro case nel set di addestramento. Quindi, l'albero successivo viene costruito in base all'errore di previsione dell'albero precedente. Questo errore previsto viene utilizzato per adattare un nuovo albero. Gli alberi del primo e del secondo passaggio vengono combinati e questo processo viene ripetuto più volte, con ogni albero successivo adattato agli errori degli alberi precedenti. Combinando il semplice albero decisionale con quello nuovo basato sui residui, il modello può fare previsioni migliori e più accurate.

Viene discusso il concetto di gradient boosting come modello additivo, in cui le previsioni di tutti gli alberi vengono combinate consecutivamente sommandole. Viene inoltre introdotto il tasso di apprendimento o la dimensione del passo, che determina il peso o il contributo di ciascun albero alla previsione finale. Il potenziamento del gradiente viene eseguito ripetendo il processo di adattamento degli alberi sugli errori della previsione precedente, costruendo gradualmente il modello con una piccola dimensione del passo per evitare l'overfitting. Questo processo continua fino al completamento di un numero predeterminato di alberi, in base alle impostazioni degli iperparametri.

Il relatore spiega l'algoritmo di potenziamento del gradiente, utilizzato sia per i problemi di regressione che per quelli di classificazione. L'algoritmo prevede l'inizializzazione del modello come nodo radice, quindi l'adattamento di più alberi e la creazione di nodi terminali. Le previsioni vengono effettuate su ciascun nodo e viene calcolata la perdita. L'algoritmo può essere ripetuto fino al raggiungimento del numero desiderato di alberi, con l'obiettivo generale di minimizzare la perdita.

Per calcolare il modello corrente, il modello precedente e il nuovo passaggio di previsione vengono combinati, ponderati in base al tasso di apprendimento o alla dimensione del passaggio, per determinare il modello aggiornato. Questo processo viene ripetuto fino al raggiungimento del numero desiderato di alberi, indicato con T. Vengono calcolati gli pseudo residui, seguiti dal calcolo della derivata della perdita basata sulle vere etichette e previsioni del modello del round precedente. I residui vengono quindi calcolati e viene determinato il valore di previsione che minimizza la perdita nel nodo specifico. Il modello viene aggiornato di conseguenza e questo processo viene ripetuto fino a raggiungere i modelli T. Sebbene le funzioni di perdita differenziabili come la perdita di probabilità logaritmica negativa possano essere utilizzate per la classificazione, l'attenzione in questa classe è sull'errore di somma al quadrato o sull'errore quadratico medio.

Il video illustra i passaggi coinvolti nel potenziamento del gradiente e la sua applicazione pratica. Il primo passaggio consiste nel ridurre al minimo la perdita per tutti gli esempi di addestramento in un dato nodo trovando la previsione che minimizza l'espressione. Nella seconda fase, viene utilizzato un ciclo per gli alberi T e la previsione su ciascun nodo foglia viene calcolata calcolando la media degli esempi su quel nodo. La previsione media viene combinata con il modello precedente e le previsioni per ciascun albero vengono sommate. Il tasso di apprendimento viene utilizzato per ridurre gli pseudo residui e prevenire l'overfitting. Il video tocca anche brevemente altri aspetti interessanti del gradient boosting utilizzato nella pratica.

Il video evidenzia i potenziali svantaggi del potenziamento come algoritmo sequenziale, in quanto non può utilizzare completamente più processi o nodi di calcolo. Tuttavia, esiste un'implementazione chiamata xgBoost che incorpora diversi trucchi per rendere più efficiente il processo di potenziamento del gradiente. Infatti, tra le 29 Challenge Winning Solutions pubblicate su Kaggle dal 2015 al 2017, 17 hanno utilizzato xgBoost. Otto di queste soluzioni si basavano esclusivamente su xgBoost per l'addestramento del modello, mentre altre combinavano xgBoost con reti neurali o utilizzavano lo stacking, una popolare tecnica di voto d'insieme. Il video presenta due tabelle tratte da un documento che confronta diverse implementazioni di potenziamento, dimostrando le caratteristiche uniche di xgBoost che contribuiscono alla sua efficacia.

Il video discute Extra Boost, una variante del gradient boosting che offre diversi vantaggi, come l'approssimazione globale, l'apprendimento out-of-core, la consapevolezza della scarsità e il parallelismo. Extra Boost incorpora metodi di approssimazione per trovare la migliore suddivisione utilizzando statistiche riassuntive di sottoinsiemi di dati distribuiti. Il video confronta le prestazioni di Extra Boost con altre implementazioni di gradient boosting utilizzando il metodo greedy esatto e dimostra che Extra Boost raggiunge prestazioni identiche a un'implementazione ma con un tempo significativamente ridotto per albero, rendendolo più interessante per l'ottimizzazione degli iperparametri.

Inoltre, il video spiega i vari miglioramenti offerti da Extra Boost, come le tecniche di regolarizzazione, la gestione delle funzionalità mancanti tramite imputazione e la memorizzazione nella cache. Questi miglioramenti aiutano a ridurre l'overfitting e a migliorare le prestazioni complessive di Extra Boost. Inoltre, Extra Boost utilizza il sottocampionamento basato su colonne e righe, che seleziona in modo casuale sottoinsiemi di funzionalità ed esempi di addestramento, migliorando sia l'efficienza computazionale che la riduzione dell'overfitting. Il video suggerisce di fare riferimento al documento su Extra Boost per una spiegazione più dettagliata delle sue tecniche.

Il video fornisce una panoramica di Extra Boost, una nuova implementazione di macchine per l'aumento del gradiente. Extra Boost mira a ridurre l'overfitting e migliorare l'accuratezza della previsione. Il video discute diverse tecniche per trovare le divisioni, incluso l'esatto algoritmo greedy e la ricerca delle divisioni basata su istogrammi. Quest'ultimo approccio comporta il raggruppamento di una caratteristica continua in un istogramma discreto, che può migliorare la velocità di addestramento e ridurre l'utilizzo della memoria. Il video confronta anche Extra Boost con Light GBM, un'altra implementazione ancora più veloce e precisa. Light GBM utilizza la ricerca divisa basata su istogrammi e offre un minore utilizzo della memoria e una maggiore precisione di previsione rispetto a Extra Boost.

Il video illustra l'implementazione dei classificatori di potenziamento del gradiente in scikit-learn e introduce un nuovo classificatore di potenziamento del gradiente che è stato aggiunto in una versione recente della libreria. Il nuovo classificatore utilizza la suddivisione basata su istogrammi ispirata a LightGBM, rendendola più veloce del classificatore precedente. Il video suggerisce di utilizzare entrambi i classificatori di potenziamento del gradiente e di confrontarli con XGBoost per determinare quale funziona meglio. Gli esempi di codice vengono forniti come modelli per progetti di classe o per uso generale, inclusa l'implementazione del classificatore di potenziamento del gradiente in scikit-learn e l'utilizzo del nuovo classificatore di potenziamento del gradiente dell'istogramma.

Il relatore discute il potenziamento del gradiente utilizzando le librerie XGBoost e LightGBM. La libreria XGBoost è simile, ma un po' più complessa rispetto a scikit-learn. Richiede la conversione degli array NumPy nel formato DMatrix e, invece di utilizzare il metodo fit, viene utilizzato il metodo train per addestrare il modello. Le previsioni possono essere fatte chiamando il metodo predict per ottenere le probabilità di appartenenza alla classe. D'altra parte, la libreria Microsoft LightGBM ha un'API simile a scikit-learn. Gli iperparametri devono essere impostati prima di adattare la macchina per l'aumento del gradiente e il metodo del punteggio può essere utilizzato per calcolare la precisione. Nel caso presentato, il modello presenta una precisione di addestramento del 100% senza ottimizzare gli iperparametri.

Il video si conclude sottolineando l'efficacia delle tecniche di potenziamento del gradiente, in particolare attraverso l'utilizzo di librerie come XGBoost e LightGBM. Queste librerie forniscono potenti strumenti per l'implementazione di modelli di potenziamento del gradiente e offrono varie ottimizzazioni per migliorare le prestazioni e la precisione.

Inoltre, il relatore riconosce l'importanza dell'ottimizzazione degli iperparametri nel potenziamento del gradiente. Diversi iperparametri, come il tasso di apprendimento, il numero di alberi e la profondità degli alberi, possono avere un impatto significativo sulle prestazioni del modello. Pertanto, si consiglia di sperimentare diverse configurazioni di iperparametri per trovare le impostazioni ottimali per un problema specifico.

Per esplorare ulteriormente il potenziamento del gradiente, il video suggerisce di fare riferimento a documenti di ricerca e documentazione su XGBoost, LightGBM e altre implementazioni pertinenti. Queste risorse forniscono spiegazioni approfondite degli algoritmi, delle tecniche e delle funzionalità avanzate del potenziamento del gradiente.

In sintesi, il video fornisce una panoramica completa del gradient boosting, dei suoi concetti e delle sue implementazioni pratiche utilizzando librerie come XGBoost e LightGBM. Evidenzia i vantaggi del potenziamento del gradiente, come la sua capacità di gestire complessi set di dati tabulari, la sua efficacia nelle competizioni e il suo potenziale per migliorare l'accuratezza delle previsioni. Comprendendo i principi e le tecniche alla base del potenziamento del gradiente, i professionisti possono sfruttare questo potente algoritmo per affrontare vari problemi di regressione e classificazione.

  • 00:00:00 Il concetto di gradient boosting viene introdotto come una versione moderna del boosting che utilizza alberi decisionali e una funzione di perdita differenziabile. Simile ad AdaBoost, il gradient boosting è un processo sequenziale che spinge gli studenti deboli a diventare un modello forte. Tuttavia, la differenza principale tra i due sta nel modo in cui gli alberi decisionali sono adattati, con il potenziamento del gradiente utilizzando alberi più profondi e non utilizzando pesi per esempi di addestramento o classificatori. L'idea chiave del potenziamento del gradiente è l'uso dei gradienti dalla funzione di perdita per migliorare il modello, portando a prestazioni migliori sui set di dati tabulari e rendendolo un algoritmo popolare per le competizioni. La sezione fornisce una panoramica concettuale del potenziamento del gradiente in tre passaggi fondamentali, a partire dalla costruzione di un albero di base.

  • 00:05:00 Apprendiamo il potenziamento del gradiente nel contesto della regressione. Innanzitutto, iniziamo con un albero base costituito solo dal nodo radice, che in questo esempio è un problema di previsione dei prezzi delle case. Prevediamo l'obiettivo in base alla media in quel nodo, che in questo caso è la media dei prezzi delle quattro case nel training set. Quindi costruiamo l'albero successivo in base all'errore di previsione dell'albero precedente e utilizzando questo errore previsto, adattiamo un nuovo albero. Combiniamo gli alberi dal passaggio uno e dal passaggio due e ripetiamo il processo più volte, adattando gli alberi agli errori nei round conseguenti. La previsione è sempre una combinazione della previsione degli alberi precedenti e lo stesso concetto si applica alla classificazione utilizzando una diversa funzione di perdita.

  • 00:10:00 L'istruttore spiega come utilizzare il potenziamento del gradiente per fare previsioni migliori. Il processo prevede la costruzione di un albero decisionale per fare una previsione iniziale, il calcolo degli pseudo residui per fare previsioni migliori sugli errori dell'albero precedente e la combinazione degli alberi del passaggio uno con gli alberi del passaggio due. L'istruttore spiega come questo processo può essere applicato a un semplice esempio che coinvolge i prezzi delle case e mostra come potrebbe apparire l'albero decisionale. Combinando il semplice albero decisionale con quello nuovo basato sui residui, il modello può fare previsioni migliori e più accurate.

  • 00:15:00 Viene discusso il concetto di gradient boosting come modello additivo, in cui combiniamo le previsioni di tutti gli alberi consecutivamente sommandole. Il metodo include anche un valore alfa, che viene utilizzato come velocità di apprendimento o dimensione del passo. Il potenziamento del gradiente viene eseguito ripetendo il passaggio due più volte e aumentando lentamente con una dimensione del passo ridotta per evitare l'overfitting. Pertanto, un nuovo albero si adatta continuamente agli errori della previsione precedente, il che produce un'altra colonna per la previsione. Il processo continua fino al completamento di un determinato numero di alberi in base all'impostazione dell'iperparametro.

  • 00:20:00 L'oratore spiega l'algoritmo di potenziamento del gradiente, utilizzato sia per la regressione che per la classificazione. L'algoritmo segue una procedura generale in cui il set di dati di input del set di dati di addestramento viene utilizzato insieme a una funzione di perdita differenziabile. Nella prima fase, il modello viene inizializzato come nodo radice, quindi nella seconda fase l'algoritmo adatta più alberi e crea nodi terminali. L'oratore entra quindi in ulteriori dettagli per quanto riguarda la previsione in ciascun nodo e il calcolo della perdita. L'algoritmo può essere ripetuto fino al raggiungimento del numero desiderato di alberi e l'obiettivo generale è ridurre al minimo la perdita.

  • 00:25:00 Il relatore spiega come calcolare il modello corrente combinando il modello precedente e il nuovo passo di previsione, ponderato in base al tasso di apprendimento o alla dimensione del passo, per determinare il modello aggiornato finché non raggiunge T volte. In primo luogo, viene calcolato lo pseudo residuo, quindi viene calcolata la derivata della perdita in base all'etichetta vera e alle previsioni del modello del round precedente. Successivamente, vengono calcolati i residui e viene determinato il valore di previsione che minimizza la perdita in base al nodo specifico, quindi il modello viene nuovamente aggiornato. Questo processo viene ripetuto fino a raggiungere i modelli T. Sebbene l'oratore menzioni funzioni di perdita differenziabili come la perdita di probabilità logaritmica negativa, che può essere utilizzata per la classificazione, in questa classe si concentrano sull'errore di somma al quadrato o sull'errore quadratico medio.

  • 00:30:00 Il relatore discute i passaggi coinvolti nel potenziamento del gradiente e come viene utilizzato nella pratica. Il primo passaggio consiste nel ridurre al minimo la perdita per tutti gli esempi di addestramento in un dato nodo trovando la previsione che minimizza l'espressione. Il secondo passaggio utilizza un ciclo per alberi T e calcola la previsione su ciascun nodo foglia calcolando la media degli esempi su ciascun nodo. Un nuovo termine viene aggiunto alla previsione media, che include il modello precedente. Il tasso di apprendimento per ogni albero è solitamente lo stesso e le previsioni per ogni albero vengono sommate. L'obiettivo del tasso di apprendimento è diminuire gli pseudo residui per evitare l'overfitting. Infine, l'oratore tocca brevemente alcuni aspetti più interessanti del gradient boosting utilizzato nella pratica.

  • 00:35:00 Il relatore discute i potenziali svantaggi del potenziamento come algoritmo sequenziale, che può limitarne l'efficienza poiché non può sfruttare più processi o nodi di calcolo. Tuttavia, esiste un'implementazione del potenziamento chiamata xgBoost che utilizza diversi trucchi per rendere più efficiente il processo di potenziamento del gradiente. Infatti, tra le 29 Challenge Winning Solutions pubblicate su Kaggle dal 2015 al 2017, 17 hanno utilizzato xgBoost. Otto hanno utilizzato esclusivamente xgBoost per addestrare il modello, mentre la maggior parte degli altri ha combinato xgBoost con reti neurali o ha utilizzato lo stacking, che è una popolare tecnica di voto d'insieme. Il relatore fornisce quindi due tabelle tratte da un documento che confronta diverse implementazioni di potenziamento, in cui xgBoost mostra caratteristiche uniche che contribuiscono alla sua efficacia.

  • 00:40:00 Il relatore discute le caratteristiche di Extra Boost, una variante del gradient boosting che offre diversi vantaggi come l'approssimative global, out of core learning, la consapevolezza della scarsità e il parallelismo. Extra Boost implementa metodi di approssimazione per trovare la migliore divisione basata su statistiche riassuntive di sottoinsiemi dei dati distribuiti. L'oratore confronta le prestazioni di Extra Boost e di altre implementazioni di potenziamento del gradiente con il metodo avido esatto e mostra che Extra Boost ha prestazioni identiche a un'implementazione ma con un tempo significativamente ridotto per albero, rendendolo più attraente per l'ottimizzazione degli iperparametri.

  • 00:45:00 Il video parla di Extra Boost, che è essenzialmente un'implementazione scalabile del gradient boosting che funziona bene con set di dati di grandi dimensioni. Il video spiega i vari miglioramenti apportati da Extra Boost rispetto alle normali tecniche di potenziamento del gradiente, tra cui la regolarizzazione, le tecniche di imputazione per le funzionalità mancanti e la memorizzazione nella cache. Questi miglioramenti aiutano a ridurre l'overfitting e possono migliorare le prestazioni complessive di Extra Boost. Inoltre, Extra Boost utilizza il sottocampionamento basato su colonne e righe per selezionare in modo casuale sottoinsiemi di funzionalità ed esempi di addestramento, che possono aiutare a ridurre l'overfitting e l'efficienza computazionale. Il video consiglia di leggere il documento su Extra Boost per una spiegazione più dettagliata delle sue tecniche.

  • 00:50:00 Il relatore fornisce una panoramica di Extra Boost, una nuova implementazione di macchine per il potenziamento del gradiente, che possono ridurre l'overfitting e migliorare l'accuratezza della previsione. Il relatore discute le diverse tecniche per trovare le divisioni, incluso l'esatto algoritmo greedy e la ricerca delle divisioni basata su istogrammi. Quest'ultimo approccio comporta il raggruppamento di una funzione continua in un istogramma discreto, che può migliorare la velocità di addestramento e ridurre l'utilizzo della memoria. L'oratore confronta anche Extra Boost con Light GBM, un'altra implementazione ancora più veloce e precisa. Light GBM utilizza la ricerca divisa basata su istogrammi e offre un minore utilizzo della memoria e una maggiore precisione di previsione rispetto a Extra Boost.

  • 00:55:00 Il relatore discute l'implementazione dei classificatori di potenziamento del gradiente in scikit-learn e introduce un nuovo classificatore di potenziamento del gradiente che è stato aggiunto in una versione recente di scikit-learn. Il nuovo classificatore utilizza la suddivisione basata su istogrammi ispirata a LightGBM, rendendola più veloce del classificatore precedente. Il relatore suggerisce di utilizzare entrambi i classificatori di potenziamento del gradiente e di confrontarli con XGBoost per determinare quale funziona meglio. Il relatore fornisce inoltre agli spettatori esempi di codice da utilizzare come modelli per i loro progetti di classe o per uso generale. Gli esempi includono l'implementazione del classificatore di potenziamento del gradiente in scikit-learn e l'utilizzo del nuovo classificatore di potenziamento del gradiente dell'istogramma.

  • 01:00:00 Il relatore parla del gradient boosting utilizzando le librerie XGBoost e LightGBM. La libreria XGBoost è simile, ma un po' più complicata rispetto a scikit-learn, e richiede la conversione degli array NumPy nel loro formato a matrice D. Il presentatore imposta parametri arbitrari e utilizza dot train invece di fit per addestrare il modello. Successivamente, il modello può chiamare predict per prevedere le probabilità di appartenenza alla classe. La libreria Microsoft LightGBM ha un'API simile a scikit-learn e richiede l'impostazione di iperparametri prima di adattare la macchina per l'aumento del gradiente e usare il metodo del punteggio per calcolare la precisione. In questo caso, il modello presenta una precisione di addestramento del 100% senza ottimizzare gli iperparametri.
7.5 Gradient Boosting (L07: Ensemble Methods)
7.5 Gradient Boosting (L07: Ensemble Methods)
  • 2020.10.27
  • www.youtube.com
In this video, we will take the concept of boosting a step further and talk about gradient boosting. Where AdaBoost uses weights for training examples to boo...
 

7.6 Foreste casuali (L07: Metodi d'insieme)



7.6 Foreste casuali (L07: Metodi d'insieme)

Grande! Siamo finalmente giunti all'ultima parte della Lezione 5, che risulta essere la più interessante: le pipeline di apprendimento sacro. Le pipeline di apprendimento sacro sono oggetti o classi che combinano varie fasi di elaborazione e previsione dei dati, rendendole estremamente utili nelle applicazioni del mondo reale. Per aiutarti a capire come funzionano le pipeline, diamo un'occhiata a un diagramma di flusso schematico. Non approfondirò tutte le complessità in questo momento, ma lo rivisiteremo poco dopo aver fornito un esempio di pipeline.

In sostanza, una pipeline può essere considerata come un'API per stimatori e trasformatori. Simile a uno stimatore, una pipeline ha un metodo di adattamento che può essere utilizzato sul set di addestramento. Internamente, vengono eseguite più fasi di adattamento e trasformazione, seguite da una fase di adattamento finale. A seconda dei componenti inclusi nella pipeline, è possibile definire una sequenza di operazioni come il ridimensionamento dei dati (ad esempio, la standardizzazione o il ridimensionamento min-max) o la riduzione della dimensionalità, seguita dall'addestramento di un algoritmo di apprendimento. La pipeline restituisce quindi un modello predittivo che può essere utilizzato nel set di test.

Durante la fase di previsione, quando si chiama il metodo predict sul set di test, la pipeline utilizza internamente la trasformazione per applicare lo stesso ridimensionamento eseguito sul set di training. Applica anche il passaggio di previsione finale, come la restituzione delle etichette di classe nel caso di un classificatore. Esaminiamo un semplice esempio di codice di una pipeline per illustrare questo concetto.

Qui, sto creando una pipeline utilizzando la funzione make_pipeline dal sottomodulo scikit-learn.dot.pipeline di sacred learn. Sebbene esistano diversi modi per creare pipeline, questo metodo è abbastanza conveniente. In questo esempio, sto costruendo una semplice pipeline composta da un classificatore e uno scaler standard. Lo scaler standard, come discusso nel video precedente, standardizza i dati in modo che abbiano media zero e varianza unitaria. Dopo aver creato la pipeline, possiamo utilizzare il metodo fit per addestrare la pipeline sui dati di addestramento. Possiamo quindi utilizzare il metodo predict per fare previsioni sul set di test.

Ora, approfondiamo il modo in cui il metodo di adattamento funziona all'interno della pipeline. Quando viene richiamato l'adattamento, viene applicato per primo lo scaler standard. Apprende la media e la deviazione standard dai dati di addestramento e li utilizza per ridimensionare i dati. Questo processo prevede una fase di adattamento e trasformazione, in cui lo scaler standard calcola i dati ridimensionati e li passa alla fase successiva. In questo caso, il passo successivo è il classificatore del vicino più vicino K. Il classificatore del vicino più vicino K riceve i dati standardizzati, combinando efficacemente questi quattro passaggi in uno solo. Chiamando pipe.fit, tutti questi passaggi vengono eseguiti automaticamente, risparmiandoci la fatica di eseguirli singolarmente.

Durante la fase di predizione, si verifica lo stesso processo, tranne per il fatto che non esiste una fase di adattamento. Al contrario, la pipeline riutilizza i parametri del set di addestramento per ridimensionare i dati di test, garantendo la coerenza. Quindi passa i dati del test in scala al classificatore per la previsione.

Per visualizzare meglio questo processo, rivisitiamo il diagramma di flusso. Come utente, devi solo utilizzare i metodi di adattamento e previsione. Chiamando fit, la pipeline richiama automaticamente il passaggio di trasformazione. È importante notare che la convenzione nelle pipeline prevede l'ultimo passaggio come classificatore. Solo l'ultimo passaggio chiama fit, mentre tutti i passaggi precedenti chiamano fit e transform. Di conseguenza, una pipeline può avere più trasformatori, come lo scaler standard o anche tecniche di riduzione della dimensionalità come l'analisi dei componenti principali (PCA). Tuttavia, può avere solo un classificatore come ultimo passaggio. Questo design garantisce la compatibilità e la funzionalità della pipeline.

Per illustrare la pipeline in azione, esploriamo un semplice scenario di selezione del modello utilizzando il metodo di controllo. Tieni presente che questa è solo una dimostrazione di base e tratteremo metodi di selezione del modello più avanzati come la convalida incrociata K-fold nelle lezioni successive.

Il metodo di controllo prevede la suddivisione dei dati in due sottoinsiemi: un set di addestramento e un set di convalida. Il set di addestramento viene utilizzato per addestrare la pipeline, mentre il set di convalida viene utilizzato per valutarne le prestazioni e selezionare il modello migliore.

Ecco un esempio di come implementare il metodo di controllo con una pipeline:

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
from sklearn.pipeline import make_pipeline
from sklearn.metrics import accuracy_score

# Load the iris dataset
data = load_iris()
X = data.data
y = data.target

# Split the data into training and validation sets
X_train, X_val, y_train, y_val = train_test_split(X, y, test_size= 0.2 , random_state= 42 )

# Create a pipeline
pipeline = make_pipeline(
    StandardScaler(),
    KNeighborsClassifier(n_neighbors= 3 )
)

# Train the pipeline
pipeline.fit(X_train, y_train)

# Make predictions on the validation set
y_pred = pipeline.predict(X_val)

# Evaluate the pipeline's accuracy
accuracy = accuracy_score(y_val, y_pred)
print(f "Validation accuracy: {accuracy}" )
In questo esempio, per prima cosa carichiamo il set di dati dell'iride. Quindi, dividiamo i dati in un set di addestramento (X_train e y_train) e un set di convalida (X_val e y_val) utilizzando la funzione train_test_split.

Successivamente, creiamo una pipeline utilizzando make_pipeline e passiamo i passaggi desiderati. In questo caso, includiamo uno StandardScaler per standardizzare i dati e un KNeighborsClassifier con n_neighbors=3 come classificatore.

Formiamo la pipeline chiamando il metodo fit sui dati di training (X_train e y_train).

Dopo l'addestramento, usiamo la pipeline per fare previsioni sul set di validazione (X_val) chiamando il metodo predict.

Infine, valutiamo l'accuratezza della pipeline confrontando le etichette previste (y_pred) con le etichette vere (y_val) utilizzando la funzione precision_score.

Questo è un esempio di base dell'utilizzo di una pipeline con il metodo di controllo per la selezione del modello. Tieni presente che esistono tecniche più avanzate, come la convalida incrociata, che possono fornire valutazioni più affidabili delle prestazioni della pipeline.

7.6 Random Forests (L07: Ensemble Methods)
7.6 Random Forests (L07: Ensemble Methods)
  • 2020.10.28
  • www.youtube.com
This video discusses random forests, how random forests are related to bagging, and why random forests might perform better than bagging in practice.-------T...
 

7.7 Accatastamento (L07: Metodi Ensemble)



7.7 Accatastamento (L07: Metodi Ensemble)

Sì, è stata una lunga, lunga lezione sette. E finalmente, arriviamo all'ultimo video per parlare di impilamento.

Durante questa conferenza, abbiamo coperto molto terreno. Abbiamo discusso del voto a maggioranza e del bagging, dove inseriamo alberi decisionali su campioni di bootstrap. Abbiamo anche trattato il potenziamento, in cui adattiamo gli studenti profondi in base agli errori o agli errori degli studenti precedenti, nonché i residui e il potenziamento del gradiente. Inoltre, abbiamo esplorato foreste casuali, che migliorano le prestazioni rispetto al normale bagging utilizzando sottoinsiemi di funzionalità casuali in ciascun nodo. E ora, finalmente parleremo di impilamento.

Lo stacking è simile al voto a maggioranza, ma con un meta classificatore che combina le previsioni di altri classificatori invece di votare solo a maggioranza. Entriamo nei dettagli dell'impilamento.

Prima di procedere, lascia che ti ricordi l'argomento di questo video: l'impilamento. Mi scuso per l'inutile diapositiva, ma concentriamoci sulle basi dell'algoritmo di stacking proposto da David H. Wolpert nel suo articolo intitolato 'Stacked Generalization' pubblicato nel 1992. Sebbene sia un vecchio articolo, la notazione usata in un libro più recente I sto facendo riferimento rende più facile la comprensione. Quindi, iniziamo con questa versione base dello stacking.

In questo algoritmo, definiamo l'input e l'output, che impostano il problema. Stiamo lavorando con un set di dati di addestramento di dimensioni "n". Ogni vettore di caratteristiche, indicato come 'x_i', è un vettore di dimensioni 'm'. Allo stesso modo, le etichette di classe corrispondenti agli esempi di addestramento sono denotate come "y_i". L'output di questo algoritmo è un classificatore d'insieme, che chiameremo il secondo classificatore.

Ora, concentriamoci sui passaggi coinvolti nell'impilamento. Il primo passo è imparare i classificatori di primo livello. Usiamo un ciclo da uno a 't' per adattare questi classificatori. Quindi, abbiamo una raccolta di classificatori, indicati da "h_1" a "h_t", che vengono addestrati sui dati di input "X" e sulle etichette di classe "Y".

Passando al passaggio due, costruiamo nuovi set di dati dal set di addestramento. Per ogni esempio di addestramento "x_i", creiamo un nuovo set di dati contenente il vettore di funzionalità modificato "x_i prime". Il vettore di feature modificato, 'x_i prime', contiene le previsioni dei classificatori di primo livello. Queste previsioni possono essere le etichette di classe o anche le probabilità di appartenenza alla classe. Utilizzando queste previsioni, possiamo eseguire il voto a maggioranza, in modo simile a quanto discusso in precedenza. Tuttavia, non ci fermiamo qui; procediamo al passaggio tre.

Nel passaggio tre, invece di eseguire il voto a maggioranza, apprendiamo un classificatore di secondo livello basato sulle previsioni dei classificatori di primo livello. 'x_i prime' rappresenta una matrice di progettazione modificata, in cui ogni colonna contiene le previsioni dai classificatori da 'h_1' a 'h_t.' Possiamo adattare un classificatore a queste previsioni, tenendo conto delle etichette di classe o delle probabilità di appartenenza alla classe. Questo classificatore di secondo livello verrà addestrato su queste previsioni.

Un punto debole della procedura di impilamento di base è la sua suscettibilità all'overfitting. Se uno qualsiasi dei classificatori di primo livello si adatta eccessivamente al set di addestramento, potrebbe avere un impatto negativo sulle prestazioni del meta classificatore e portare a un overfitting complessivo del sistema. Per risolvere questo problema, possiamo migliorare la procedura di stacking incorporando la convalida incrociata.

La convalida incrociata è una tecnica in cui dividiamo il set di dati in più sottoinsiemi e addestriamo il modello su diverse combinazioni di questi sottoinsiemi. Questo aiuta a ridurre l'overfitting e ad ottenere una stima delle prestazioni più affidabile. Una variante comunemente usata è la convalida incrociata k-fold, in cui il set di dati è suddiviso in "k" sottoinsiemi o pieghe. Formiamo il modello sulle pieghe 'k-1' e ne valutiamo le prestazioni sulla piega rimanente. Questo processo viene ripetuto 'k' volte, utilizzando ogni volta una piega diversa come set di convalida. I risultati delle prestazioni di ciascuna piegatura possono quindi essere calcolati in media per ottenere una stima più affidabile delle prestazioni del modello.

Nel contesto dello stacking, possiamo utilizzare la convalida incrociata per migliorare l'addestramento dei classificatori di primo livello. Invece di addestrarli sull'intero set di addestramento, dividiamo i dati in "k" pieghe. Per ogni piega, addestriamo i classificatori di primo livello sulle rimanenti pieghe "k-1" e li usiamo per fare previsioni sulla piega che è stata tralasciata. Questo processo viene ripetuto per ogni piega, ottenendo previsioni per l'intero set di addestramento.

Una volta ottenute le previsioni dai classificatori di primo livello per l'intero set di addestramento, possiamo procedere al passaggio tre dell'algoritmo di impilamento, in cui addestriamo il classificatore di secondo livello su queste previsioni. Incorporando la convalida incrociata, ci assicuriamo che il classificatore di secondo livello sia addestrato su previsioni diverse e affidabili dai classificatori di primo livello, riducendo il rischio di overfitting.

Dopo aver addestrato il classificatore di secondo livello, possiamo usarlo per fare previsioni su dati nuovi e invisibili. Le previsioni sono in genere ottenute alimentando l'input attraverso i classificatori di primo livello per ottenere le loro previsioni e quindi utilizzando queste previsioni come input per il classificatore di secondo livello. L'output del classificatore di secondo livello rappresenta la previsione finale dell'insieme di impilamento.

Lo stacking è una potente tecnica di apprendimento dell'insieme che sfrutta i punti di forza di più classificatori per migliorare le prestazioni complessive. Combinando le previsioni di più classificatori, lo stacking può acquisire diversi aspetti dei dati e fare previsioni più accurate. È una tecnica flessibile e versatile che può essere adattata a diversi domini problematici e tipi di classificatore.

In conclusione, lo stacking è un metodo di apprendimento d'insieme che va oltre il semplice voto a maggioranza. Combina le previsioni di più classificatori attraverso un meta classificatore di secondo livello, consentendo un processo decisionale più sofisticato. Incorporando la convalida incrociata, possiamo migliorare la robustezza e la capacità di generalizzazione dell'algoritmo di stacking. Lo stacking è uno strumento prezioso nell'apprendimento automatico ed è stato ampiamente utilizzato in varie applicazioni per migliorare le prestazioni di previsione.

7.7 Stacking (L07: Ensemble Methods)
7.7 Stacking (L07: Ensemble Methods)
  • 2020.10.28
  • www.youtube.com
This video explains Wolpert's stacking algorithm (stacked generalization) and shows how to use stacking classifiers in mlxtend and scikit-learn.-------This v...
 

8.1 Introduzione all'overfitting e underfitting (L08: Model Evaluation Part 1)



8.1 Introduzione all'overfitting e underfitting (L08: Model Evaluation Part 1)

Buon giorno a tutti! Spero stiate tutti bene. Ho alcune notizie entusiasmanti da condividere con te oggi, quindi tuffiamoci subito.

Prima di tutto, ho finito di valutare le tue proposte di progetto e devo dire che sono davvero felice delle idee e dei progetti che ho visto. È evidente che ognuno di voi ha riflettuto molto sui propri progetti e ha una visione chiara per le prossime settimane fino a quando le presentazioni e le relazioni del progetto sono previste per metà dicembre. Sono sinceramente impressionato dal livello di dettaglio e dalla premura con cui sono state presentate le tue proposte.

Tuttavia, se qualcuno di voi sente la necessità di ulteriori feedback o chiarimenti, o se desidera una guida su come esplorare altre tecniche, non esiti a contattarmi. Sono più che felice di fornirti ulteriore assistenza e supporto in ogni modo possibile. Inviami semplicemente un'e-mail o pianifica un incontro e sarò lì per aiutarti.

Passando ad altre buone notizie, abbiamo concluso con successo la lezione sui metodi d'insieme, il che significa che è ora di affrontare un argomento nuovo ed entusiasmante. Nella prossima serie di conferenze, ci concentreremo sulla valutazione del modello. A differenza delle lezioni precedenti in cui abbiamo introdotto vari classificatori e algoritmi di machine learning, questa volta esploreremo come valutare le prestazioni di questi algoritmi in modo equo.

In questa nuova serie, tratteremo una vasta gamma di argomenti. Inizieremo comprendendo i concetti di underfitting e overfitting e come si relazionano alla decomposizione di bias e varianza di una funzione di perdita. Approfondiremo quindi i metodi di convalida incrociata che ci consentono di confrontare i modelli in modo efficace. Inoltre, discuteremo le tecniche per confrontare diversi algoritmi di apprendimento automatico per determinare le loro prestazioni su set di dati specifici. È essenziale distinguere tra selezione del modello e selezione dell'algoritmo e analizzeremo questa distinzione in modo più dettagliato.

Senza ulteriori indugi, iniziamo con l'introduzione alla valutazione del modello e approfondiamo il mondo dell'overfitting e dell'underfitting. In questa lezione (lezione otto), discuteremo la decomposizione del bias e della varianza e la sua relazione con l'overfitting e l'underfitting. Analizzeremo la decomposizione del bias e della varianza sia della perdita dell'errore al quadrato (rilevante per la regressione) sia della perdita 01 (rilevante per la classificazione) per ottenere una comprensione completa di questi concetti. Inoltre, toccheremo diversi tipi di bias nell'apprendimento automatico, andando oltre il bias statistico coperto nella scomposizione.

Prima di approfondire il materiale della lezione, facciamo un passo indietro e ricapitoliamo brevemente a che punto siamo del corso. Abbiamo coperto l'introduzione, aspetti computazionali come Python, NumPy e scikit-learn, nonché metodi basati su alberi. Abbiamo anche discusso la rilevanza dei metodi basati sugli alberi e la popolarità dei metodi di insieme, in particolare il potenziamento e le foreste casuali, nel settore. Ora, con la valutazione del modello al centro dell'attenzione, esploreremo vari argomenti secondari, inclusi intervalli di confidenza, convalida incrociata, selezione del modello, selezione dell'algoritmo e metriche delle prestazioni. Verso la fine, toccheremo la riduzione della dimensionalità e l'apprendimento non supervisionato.

Voglio assicurarvi che questa conferenza sarà più breve della precedente sui metodi d'insieme, in quanto è relativamente concisa. Tuttavia, copre concetti cruciali che ci aiuteranno a comprendere meglio la valutazione del modello. Quindi, tuffiamoci nei sei argomenti secondari che compongono la lezione otto: overfitting, underfitting, decomposizione di bias e varianza, relazione con overfitting e underfitting, decomposizione di bias e varianza della perdita 01 e una panoramica dei diversi tipi di bias nell'apprendimento automatico.

Durante questa lezione, ti incoraggio a fermarti e riflettere sulle domande che pongo, al di là dei quiz. È sempre utile fare una pausa e formulare i propri pensieri prima di considerare il mio punto di vista sulla questione. Impegnarsi con il materiale in questo modo migliorerà la tua esperienza di apprendimento.

  1. Overfitting e Underfitting: nell'apprendimento automatico, l'overfitting si verifica quando un modello si comporta molto bene sui dati di addestramento ma non riesce a generalizzare a dati nuovi e invisibili. D'altra parte, l'underfitting si verifica quando un modello è troppo semplice e non riesce a catturare i modelli sottostanti nei dati.

L'overfitting può essere causato da modelli troppo complessi e con troppi parametri rispetto alla quantità di dati di addestramento disponibili. Ciò porta il modello ad adattare il rumore nei dati di addestramento invece dei veri modelli sottostanti. L'underfitting, d'altra parte, si verifica quando il modello non è abbastanza complesso da catturare i modelli nei dati.

  1. Decomposizione di bias e varianza: bias e varianza sono due fonti di errore nei modelli di machine learning. Il bias misura la distanza media delle previsioni dai valori reali quando il modello viene addestrato su set di addestramento diversi. La varianza, d'altra parte, misura quanto variano le previsioni per un dato input quando il modello viene addestrato su diversi set di addestramento.

Bias e varianza possono essere scomposti matematicamente. L'errore quadratico atteso di un modello può essere scomposto in distorsione al quadrato, varianza ed errore irriducibile. Il bias al quadrato misura la differenza media tra le previsioni del modello e i valori reali. La varianza misura la variabilità delle previsioni del modello per un dato input. L'errore irriducibile rappresenta il rumore intrinseco nei dati che non può essere ridotto da alcun modello.

  1. Relazione con overfitting e underfitting: il compromesso bias-variance è strettamente correlato a overfitting e underfitting. L'overfitting è spesso associato a bassa distorsione e alta varianza. Il modello si adatta molto bene ai dati di addestramento, ma non riesce a generalizzare a nuovi dati perché è troppo sensibile alle piccole fluttuazioni nel set di addestramento.

L'underfitting, d'altra parte, è associato a bias elevato e varianza bassa. Il modello è troppo semplice e non è in grado di acquisire i modelli sottostanti nei dati, con conseguenti prestazioni scadenti sia per i dati di addestramento che per quelli di test.

  1. Scomposizione di bias e varianza della perdita 01: finora abbiamo discusso la scomposizione di bias e varianza utilizzando la perdita di errore al quadrato, che è comunemente usata nei problemi di regressione. Tuttavia, nei problemi di classificazione, in genere utilizziamo la perdita 01, che misura la proporzione di istanze classificate in modo errato.

La scomposizione bias-variance della perdita 01 è simile a quella della perdita dell'errore al quadrato, ma comporta una matematica più complessa. Il bias al quadrato misura la differenza prevista nel tasso di errata classificazione tra le previsioni del modello e le etichette vere. La varianza misura la variabilità del tasso di errata classificazione per un dato input.

  1. Panoramica dei diversi tipi di bias nell'apprendimento automatico: oltre al bias statistico discusso nella scomposizione bias-varianza, esistono altri tipi di bias nel machine learning:
  • Bias di campionamento: si verifica quando i dati di addestramento non sono rappresentativi della popolazione reale o hanno una distribuzione distorta. Questo può portare a un modello che funziona bene sui dati di addestramento ma non riesce a generalizzare alla popolazione più ampia.
  • Bias algoritmico: si riferisce ai pregiudizi che possono derivare dagli algoritmi stessi. Ad esempio, alcuni algoritmi potrebbero essere più soggetti a bias in base ai dati di addestramento a cui sono esposti o alle funzionalità che considerano.
  • Bias cognitivo: si riferisce a pregiudizi che possono derivare dal processo decisionale umano, come il giudizio soggettivo o pregiudizi inconsci nell'etichettatura dei dati o nella selezione delle caratteristiche.

Comprendere questi diversi tipi di bias è fondamentale per costruire modelli di machine learning equi e affidabili.

Con questo si concludono gli argomenti principali trattati nella lezione otto. Come puoi vedere, overfitting, underfitting, bias e varianza sono concetti interconnessi che svolgono un ruolo cruciale nella valutazione del modello. È importante trovare un equilibrio tra complessità e generalizzabilità per evitare l'overfitting o l'underfitting dei modelli. Inoltre, essere consapevoli di diversi tipi di pregiudizi può aiutare ad affrontare l'equità e le considerazioni etiche nell'apprendimento automatico.

8.1 Intro to overfitting and underfitting (L08: Model Evaluation Part 1)
8.1 Intro to overfitting and underfitting (L08: Model Evaluation Part 1)
  • 2020.11.03
  • www.youtube.com
This video gives a brief overview of the topics to be covered in the model evaluation lectures. It will then start by giving a brief introduction to overfitt...
 

8.2 Intuizione dietro bias e varianza (L08: Model Evaluation Part 1)



8.2 Intuizione dietro bias e varianza (L08: Model Evaluation Part 1)

Ciao a tutti! Spero che tu stia bene. Ho alcune notizie entusiasmanti da condividere con tutti voi. In primo luogo, ho completato il compito di valutare le tue proposte di progetto. Permettetemi di esprimere la mia gioia nel leggere tutte le vostre brillanti idee e progetti per il resto del semestre. È davvero impressionante vedere che ognuno di voi ha una tabella di marcia ben definita per le prossime settimane che portano alle presentazioni e ai rapporti del progetto.

Se qualcuno di voi sente la necessità di ulteriori feedback o richiede chiarimenti su qualsiasi aspetto, non esiti a contattarmi via email o con qualsiasi altro mezzo. Sono più che felice di fornirti ulteriori indicazioni e indicazioni su tecniche aggiuntive che potrebbero essere rilevanti per i tuoi progetti.

Passiamo ora alla prossima buona notizia. Abbiamo concluso con successo la lezione sui metodi d'insieme ed è ora di tuffarci in un argomento nuovo ed entusiasmante. Nella prossima serie di conferenze, esploreremo l'argomento della valutazione del modello. A differenza delle lezioni precedenti, in cui abbiamo introdotto vari classificatori e algoritmi di machine learning, questa volta ci concentreremo sulla valutazione equa di tali algoritmi.

Le lezioni sulla valutazione del modello copriranno diversi aspetti. Inizieremo comprendendo i concetti di underfitting e overfitting e la loro relazione con la decomposizione di bias e varianza in una funzione di perdita. Quindi, esploreremo metodi di convalida incrociata che ci consentono di confrontare i modelli in modo efficace. Successivamente, discuteremo delle tecniche per confrontare diversi algoritmi di apprendimento automatico e le loro prestazioni su set di dati specifici.

È importante notare che anche la selezione del modello, che implica la scelta di un algoritmo ben adattato, sarà discussa in modo più dettagliato. Esamineremo come differisce dalla valutazione del modello. Quindi, iniziamo il nostro viaggio con un'introduzione alla valutazione del modello e continuiamo a costruire la nostra conoscenza da lì.

Prima di approfondire il nuovo argomento, prendiamoci un momento per ricapitolare i nostri progressi in questo corso. Abbiamo iniziato con un'introduzione e coperto importanti aspetti computazionali come Python, NumPy e scikit-learn. Abbiamo anche esplorato i metodi basati sugli alberi, che hanno suscitato alcune discussioni interessanti sulla loro rilevanza nel settore.

Ora, mentre entriamo nella fase di valutazione del modello, esploreremo diversi sottoargomenti relativi a underfitting e overfitting. In questa lezione particolare (lezione otto), ci concentreremo sulla decomposizione del bias e della varianza e sulla sua connessione con l'overfitting e l'underfitting. Esamineremo in che modo le componenti di distorsione e varianza influiscono sulle prestazioni di generalizzazione di un modello.

Inoltre, esploreremo la decomposizione del bias e della varianza della perdita 0-1, che è più rilevante per i problemi di classificazione. Questa analisi ci fornirà una comprensione più profonda dell'overfitting e dell'underfitting nel contesto dei compiti di classificazione.

Per concludere questa lezione, toccheremo brevemente diversi tipi di bias nell'apprendimento automatico oltre al bias statistico discusso in precedenza.

Ora spostiamo la nostra attenzione sui concetti principali di overfitting e underfitting. Nell'apprendimento automatico, il nostro obiettivo finale è sviluppare modelli (regressione o classificazione) che dimostrino buone prestazioni di generalizzazione. Ciò significa che i modelli dovrebbero funzionare bene su dati invisibili, che di solito provengono dal set di test. Sebbene consideriamo anche le prestazioni sul set di test, serve come stima delle prestazioni di generalizzazione su dati invisibili.

In assenza di adattamento o addestramento del modello, ci aspettiamo che l'errore di addestramento sia simile all'errore di test. Tuttavia, quando adattiamo il modello al set di addestramento, spesso osserviamo che l'errore di addestramento è inferiore all'errore di test. Questo è il risultato dell'overfitting, in cui il modello diventa troppo aderente ai dati di addestramento, incluso il rumore, portando a una stima ottimistica delle prestazioni.

Al contrario, l'underfitting si verifica quando il modello non riesce a catturare i modelli sottostanti nei dati, con il risultato che sia gli errori di addestramento che quelli di test sono elevati. In questo caso manca il modello.

complessità sufficiente per rappresentare la vera relazione tra le caratteristiche e la variabile target.

Per comprendere meglio l'overfitting e l'underfitting, consideriamo il compromesso tra bias e varianza. Bias si riferisce all'errore introdotto dall'approssimazione di un problema del mondo reale con un modello semplificato. Un modello con bias elevato tende a semplificare eccessivamente i modelli sottostanti nei dati e può risultare in un underfitting. D'altra parte, la varianza si riferisce all'errore introdotto dalla sensibilità del modello alle fluttuazioni nei dati di addestramento. Un modello ad alta varianza cattura il rumore e le variazioni casuali nei dati di addestramento, portando all'overfitting.

Il compromesso bias-varianza può essere illustrato scomponendo l'errore del test atteso in tre componenti: l'errore irriducibile, il termine bias e il termine varianza. L'errore irriducibile rappresenta il rumore intrinseco nei dati che non può essere ridotto da alcun modello. Il termine bias misura l'errore introdotto dall'approssimazione di un problema del mondo reale con un modello semplificato e il termine varianza misura l'errore causato dalla sensibilità del modello alle fluttuazioni nei dati di addestramento.

Matematicamente, possiamo esprimere l'errore di test atteso come segue:

Errore previsto del test = Errore irriducibile + Bias^2 + Varianza

Idealmente, vogliamo trovare un equilibrio tra bias e varianza che riduca al minimo l'errore di test previsto. Tuttavia, la riduzione di un componente spesso porta ad un aumento dell'altro. Questo compromesso è cruciale nella selezione e nella valutazione del modello.

Nel contesto dei problemi di classificazione, possiamo anche esaminare la scomposizione bias-variance della perdita 0-1, che è una funzione di perdita comune utilizzata nei compiti di classificazione. La perdita 0-1 misura l'errore come percentuale di istanze classificate in modo errato. La scomposizione bias-variance della perdita 0-1 fornisce informazioni sulle fonti di errore nei modelli di classificazione.

Oltre al bias statistico, ci sono altri tipi di bias che possono influenzare i modelli di machine learning. Questi bias possono derivare da varie fonti, tra cui bias di campionamento, bias di misurazione e bias algoritmico. Comprendere questi pregiudizi è essenziale per costruire sistemi di machine learning equi e affidabili.

Nella prossima lezione, approfondiremo la validazione incrociata, una potente tecnica per stimare le prestazioni di generalizzazione di un modello. La convalida incrociata ci consente di valutare le prestazioni di un modello su dati invisibili simulando il processo di addestramento e test su diversi sottoinsiemi di dati. Esploreremo diversi tipi di metodi di convalida incrociata, come la convalida incrociata k-fold e la convalida incrociata stratificata, e discuteremo i loro vantaggi e limiti.

Questo è tutto per la lezione di oggi. Ti incoraggio a rivedere il materiale trattato e a venire preparato con qualsiasi domanda tu possa avere per la nostra prossima sessione. Grazie e buona giornata!

8.2 Intuition behind bias and variance (L08: Model Evaluation Part 1)
8.2 Intuition behind bias and variance (L08: Model Evaluation Part 1)
  • 2020.11.04
  • www.youtube.com
This video provides some intuition behind the terms bias and variance in the context of bias-variance decomposition and machine learning.-------This video is...
 

8.3 Scomposizione Bias-Variance dell'Errore al Quadrato (L08: Valutazione del Modello Parte 1)



8.3 Scomposizione Bias-Variance dell'Errore al Quadrato (L08: Valutazione del Modello Parte 1)

Nella lezione precedente, abbiamo acquisito alcune intuizioni su bias e varianza e abbiamo accennato brevemente alla scomposizione bias-varianza di una funzione di perdita. Ora, in questa lezione, approfondiremo la decomposizione bias-variance concentrandoci sulla perdita per errore al quadrato. Iniziare con la perdita dell'errore al quadrato rende più semplice e intuitivo prima di esplorare la sua relazione con l'overfitting e l'underfitting. Inoltre, discuteremo brevemente della scomposizione bias-variance della perdita 0-1, che è un argomento più controverso a cui sono dedicati lavori recenti. Tuttavia, esamineremo prima il caso dell'errore al quadrato poiché fornisce una comprensione più semplice.

Ricapitolando brevemente, il bias e la varianza sono stati trattati in modo più dettagliato nel video precedente, ma è utile dedicare un momento a ricapitolare l'ambientazione. Stiamo esaminando lo stimatore puntuale meno la previsione, che rappresenta l'obiettivo previsto per un dato modello e un set di addestramento specifico. L'aspettativa viene rilevata su diversi set di formazione tratti dalla stessa distribuzione o popolazione. Questa aspettativa rappresenta la previsione media per un dato punto dati nel set di test.

Il bias misura la distanza della previsione media dal vero valore target, mentre la varianza quantifica l'importo di cui ogni singola previsione si discosta dalla previsione media. Il termine di varianza è elevato al quadrato per ignorare il segno e concentrarsi sulla diffusione complessiva delle previsioni attorno alla media.

La perdita per errore al quadrato può essere rappresentata come (theta - theta hat)^2, dove theta è il valore reale e theta hat è il valore previsto per uno specifico punto dati. In questa lezione, ci concentreremo sulla decomposizione bias-variance della perdita per errore al quadrato, considerando solo i termini bias e varianza e ignorando il termine noise.

Per procedere con la scomposizione bias-variance, introduciamo alcune notazioni e impostazioni per lo scenario. Consideriamo una vera funzione che genera le etichette (y), e abbiamo un'ipotesi (h) come nostro modello, che approssima la vera funzione di generazione dei dati. Usiamo y hat per rappresentare una previsione. Con questi termini, possiamo esprimere la perdita per errore al quadrato come (y - y hat)^2. Per evitare confusione con il simbolo di aspettativa (E), indichiamo l'errore al quadrato come (s).

Ora, scomponiamo l'errore al quadrato in componenti di bias e varianza. Per raggiungere questo obiettivo, utilizziamo un trucco matematico di inserire e sottrarre l'aspettativa della previsione. In questo modo, espandiamo l'espressione quadratica e la separiamo in tre termini: (y^2, -2yy hat, y hat^2).

Successivamente, applichiamo l'aspettativa a entrambi i lati dell'equazione. Applicando l'aspettativa al primo termine si ottiene y^2, che rimane invariato poiché y è una costante. L'aspettativa del secondo termine, -2yy hat, è zero poiché stiamo sottraendo ripetutamente lo stesso valore (aspettativa di y hat) da se stesso. Per quanto riguarda il terzo termine, l'aspettativa di y hat^2 rappresenta il valore medio delle previsioni.

Dopo aver applicato l'aspettativa, ci rimangono due termini: la polarizzazione al quadrato e la varianza. Il bias al quadrato è (y - E[y hat])^2, che misura la differenza tra l'etichetta vera e la previsione media. La varianza è E[(y hat - E[y hat])^2], che quantifica la deviazione quadratica media delle singole previsioni dalla previsione media.

Per dimostrare l'eliminazione del termine -2yy hat quando si applica l'aspettativa, scomponiamo i passaggi. Applicando l'aspettativa a -2yy hat si ottiene 2E[yy hat]. Espandendo ulteriormente l'espressione, troviamo che l'aspettativa di yy hat è uguale a E[y]E[y hat] poiché y è una costante. Di conseguenza, l'aspettativa di -2yy hat si semplifica in -2E[y]E[y hat].

Sottraendo questo termine dall'errore al quadrato (s) otteniamo:

s = y^2 - 2yy cappello + y cappello^2 = y^2 - 2yy cappello + y cappello^2 - 2E[y]E[y cappello] + 2E[y]E[y cappello]

Ora riorganizziamo i termini:

s = (y - E[y cappello])^2 + 2(E[y]E[y cappello] - aa cappello)

Possiamo semplificare ulteriormente l'espressione riconoscendo che E[y]E[y hat] è un valore costante, indicato come c. Pertanto, abbiamo:

s = (y - E[y cappello])^2 + 2(c - aa cappello)

Infine, concentriamoci sul secondo termine, 2(c - yy hat). Questo termine può essere scomposto come segue:

2(c - yy cappello) = 2c - 2yy cappello

Il primo termine, 2c, è una costante e non dipende dalla previsione y hat. Il secondo termine, -2yy hat, rappresenta l'interazione tra la vera etichetta y e la previsione y hat.

Ora, possiamo riassumere la scomposizione bias-varianza della perdita per errore al quadrato come segue:

s = (y - E[y hat])^2 + 2c - 2yy hat

Il primo termine, (y - E[y hat])^2, corrisponde al quadrato bias. Misura la discrepanza tra la vera etichetta y e la previsione media E[y hat].

Il secondo termine, 2c, è una costante e rappresenta la polarizzazione al quadrato. Non è influenzato dalla scelta del pronostico e cappello.

Il terzo termine, -2yy hat, rappresenta la varianza. Cattura la variabilità delle singole previsioni y hat intorno alla loro media E[y hat]. È direttamente influenzato dalla scelta della previsione e cappello.

Pertanto, possiamo concludere che la perdita per errore al quadrato può essere scomposta in un termine di polarizzazione al quadrato, un termine di polarizzazione al quadrato costante e un termine di varianza.

Comprendere la scomposizione bias-variance ci aiuta a ottenere informazioni sul comportamento di un modello. Un bias elevato indica underfitting, in cui il modello non è in grado di catturare i modelli sottostanti nei dati. Una varianza elevata indica overfitting, in cui il modello è troppo sensibile ai dati di addestramento e non riesce a generalizzare bene ai dati invisibili.

Analizzando i componenti di bias e varianza, possiamo prendere decisioni informate sulla complessità del modello, sulle tecniche di regolarizzazione e sulle strategie di raccolta dei dati per ottimizzare le prestazioni dei nostri modelli.

Nella prossima lezione, estenderemo la decomposizione bias-variance alla perdita 0-1 e ne discuteremo le implicazioni.

8.3 Bias-Variance Decomposition of the Squared Error (L08: Model Evaluation Part 1)
8.3 Bias-Variance Decomposition of the Squared Error (L08: Model Evaluation Part 1)
  • 2020.11.04
  • www.youtube.com
In this video, we decompose the squared error loss into its bias and variance components.-------This video is part of my Introduction of Machine Learning cou...
 

8.4 Bias e varianza vs overfitting e underfitting (L08: Valutazione del modello parte 1)



8.4 Bias e varianza vs overfitting e underfitting (L08: Valutazione del modello parte 1)

In questo video, il mio obiettivo è stabilire un record per il video più breve di questo corso. Voglio mantenerlo conciso e non trascinare troppo a lungo l'argomento. Ho solo due diapositive, quindi non ci vorrà molto tempo. In questo video esploreremo la relazione tra la decomposizione bias-variance e i concetti di underfitting e overfitting.

Iniziamo osservando il grafico mostrato in precedenza in questa lezione. Si prega di notare che questo è un semplice schizzo e non basato su numeri reali. In pratica, la relazione tra questi termini può essere rumorosa quando si ha a che fare con set di dati del mondo reale. Il grafico illustra la perdita di errore al quadrato tracciata rispetto alla capacità del modello, che si riferisce alla sua complessità o capacità di adattarsi ai dati di addestramento.

La capacità si riferisce a quanto bene il modello può adattarsi al training set. Una capacità maggiore significa che il modello è più in grado di adattare i dati. Ad esempio, nei modelli parametrici come la regressione, la capacità è spesso determinata dal numero di parametri o termini. All'aumentare della capacità, l'errore di addestramento diminuisce perché un modello più complesso può adattarsi meglio ai dati di addestramento.

Tuttavia, avere un errore di addestramento basso non garantisce buone prestazioni sui nuovi dati. È possibile sovradimensionare i dati di addestramento adattandoli troppo da vicino, il che può portare a un aumento dell'errore sui nuovi dati, noto come errore di generalizzazione. L'errore di generalizzazione può essere stimato utilizzando un set di test indipendente. Inizialmente, all'aumentare della capacità, l'errore di generalizzazione migliora in una certa misura. Ma dopo aver raggiunto un certo punto, l'errore ricomincia ad aumentare, indicando un overfitting.

Il divario tra l'errore di addestramento e l'errore di generalizzazione rappresenta il grado di overfitting. All'aumentare della capacità del modello, il divario aumenta perché il modello si adatta troppo strettamente ai dati, incluso il rumore nei dati. Il grado di overfitting indica quanto il modello si adatta eccessivamente ai dati di addestramento e non riesce a generalizzare bene ai nuovi dati.

Ora, mettiamo in relazione questi concetti con bias e varianza. Nel grafico ho aggiunto i termini bias e varianza in rosso. All'aumentare della capacità del modello, aumenta anche la sua varianza. Ciò può essere osservato nel caso di alberi decisionali profondi rispetto ad alberi decisionali brevi. I modelli con varianza maggiore sono più inclini all'overfitting. Maggiore è la varianza, maggiore è il grado di overfitting, che è rappresentato dal divario tra l'errore di addestramento e l'errore di generalizzazione.

Al contrario, all'aumentare della varianza, il bias diminuisce. Un modello più complesso di solito ha una distorsione inferiore. Potrebbe sembrare che il grafico mostri il bias che va verso il basso e poi verso l'alto, ma questo è solo il risultato di un cattivo disegno. In realtà, il bias diminuisce asintoticamente all'aumentare della varianza quando aumenta la capacità del modello.

D'altra parte, quando il modello ha una capacità ridotta (come un modello semplice), si adatta in modo insufficiente ai dati, con conseguenti prestazioni scadenti sia sul set di addestramento che su quello di test. Questo è associato a un elevato pregiudizio. L'underfitting si verifica quando il modello è troppo semplicistico per acquisire i modelli sottostanti nei dati.

Per riassumere, l'elevata distorsione è correlata con l'underfitting, mentre l'alta varianza è correlata con l'overfitting. Nel prossimo video, esploreremo brevemente la scomposizione bias-variance della perdita 0-1, che è più rilevante per le attività di classificazione. Sebbene sia meno intuitivo rispetto alla scomposizione della perdita per errore al quadrato, fornisce approfondimenti sui componenti di distorsione e varianza in un contesto di classificazione.

8.4 Bias and Variance vs Overfitting and Underfitting (L08: Model Evaluation Part 1)
8.4 Bias and Variance vs Overfitting and Underfitting (L08: Model Evaluation Part 1)
  • 2020.11.04
  • www.youtube.com
This brief video discusses the connection between bias & variance and overfitting & underfitting.-------This video is part of my Introduction of Machine Lear...
 

8.5 Scomposizione Bias-Variance della perdita 0/1 (L08: Model Evaluation Part 1)


8.5 Scomposizione Bias-Variance della perdita 0/1 (L08: Model Evaluation Part 1)

In questa discussione, abbiamo approfondito la decomposizione bias-variance della perdita per errore al quadrato e la sua relazione con l'overfitting e l'underfitting. Ora sposteremo la nostra attenzione sulla scomposizione bias-variance della perdita 0/1, che è un po' più complessa a causa della sua natura a tratti. La perdita 0/1 assegna un valore pari a 0 se l'etichetta vera corrisponde all'etichetta prevista e 1 in caso contrario. L'analisi di questa funzione di perdita è più complicata poiché non è una funzione continua.

Per esplorare la scomposizione bias-variance nel contesto della perdita 0/1, faremo riferimento al lavoro di Pedro Domingo e Common Dieterich. L'articolo di Pedro Domingo, "The Unified Bias Variance Decomposition", mirava a unificare varie scomposizioni di bias-variance relative alla perdita 0/1. Diversi autori hanno proposto diverse scomposizioni, ma ognuna di esse presenta carenze significative.

In questa classe, ci concentreremo principalmente sull'intuizione dietro il ponte tra la decomposizione bias-variance e la perdita 0/1. Discuteremo brevemente il lavoro combinatorio del 1995 e la spiegazione di questo lavoro da parte di Pedro Domingo. Per una comprensione più dettagliata, è possibile fare riferimento ai documenti di riferimento.

Cominciamo rivisitando la perdita per errore al quadrato, che abbiamo definito come la differenza al quadrato tra il valore vero e il valore previsto. In precedenza, abbiamo esaminato l'aspettativa di questa perdita su diversi set di allenamento e l'abbiamo scomposta in termini di bias e varianza. Ora introdurremo una notazione generalizzata usando la funzione L per rappresentare la perdita e prendere l'aspettativa di questa funzione.

Quando abbiamo discusso la scomposizione bias-variance della perdita per errore al quadrato, l'abbiamo scomposta in termini bias e varianza. Il termine bias, indicato come Bias(Y), rappresenta la differenza tra la vera etichetta (Y) e la previsione media (E[Y_hat]). Il termine di varianza, indicato come Var(Y_hat), misura la variabilità delle previsioni attorno alla previsione media. Questi termini catturano rispettivamente quanto le previsioni deviano dall'etichetta vera e quanto si disperdono.

Ora definiremo un nuovo termine chiamato previsione principale. Nel caso della perdita dell'errore al quadrato, la previsione principale è la previsione media tra diversi set di addestramento. Tuttavia, quando si ha a che fare con la perdita 0/1, la previsione principale si ottiene prendendo la modalità delle previsioni, cioè la previsione più frequente. Questa distinzione è cruciale per comprendere la scomposizione bias-varianza nel contesto della classificazione.

Esploriamo come il bias e la varianza possono essere definiti in termini di perdita 0/1. Faremo riferimento alla versione ripulita della diapositiva precedente. Sul lato destro, introduciamo il termine bias. Negli articoli di Kong e Dieterich, il bias è definito come 1 se la previsione principale (E[Y_hat]) non è uguale alla vera etichetta (Y), e 0 altrimenti. Questa definizione cattura se la previsione principale corrisponde o meno alla vera etichetta.

Successivamente, concentriamoci sul caso in cui il bias è zero, a indicare che la previsione principale corrisponde all'etichetta vera. In questo scenario, la perdita è uguale alla varianza. Per definizione, la perdita rappresenta la probabilità che la previsione non corrisponda all'etichetta vera. Pertanto, possiamo interpretare la varianza come la probabilità che la previsione (Y_hat) non sia uguale alla previsione principale (E[Y_hat]). Questa probabilità riflette la variabilità nelle previsioni quando il bias è zero.

Ora, approfondiamo il caso in cui il pregiudizio è uno, che è leggermente più complicato. Iniziamo riscrivendo la perdita come uno meno la probabilità che la previsione corrisponda all'etichetta vera. Ciò equivale a uno meno la precisione. Considereremo due aspetti: quando Y non è uguale alla previsione principale e quando Y è uguale alla previsione principale.

Quando Y non è uguale alla previsione principale, la perdita è uguale a uno, indicando un errore di classificazione. In questo caso, il termine di varianza non contribuisce alla perdita poiché la previsione principale è diversa dall'etichetta vera e la variabilità nelle previsioni è irrilevante. L'intera perdita può essere attribuita al termine bias, che coglie il fatto che la previsione principale non corrisponde alla vera etichetta.

D'altra parte, quando Y è uguale alla previsione principale, la perdita è pari a uno meno la probabilità che tutte le altre previsioni siano diverse dalla previsione principale. Questa probabilità rappresenta la variabilità nelle previsioni quando il bias è uno. Pertanto, il termine di varianza tiene conto della perdita in questo caso, riflettendo l'incertezza nelle previsioni intorno alla previsione principale.

Per riassumere, nella scomposizione bias-variance della perdita 0/1, il termine bias cattura l'errore di classificazione errata quando la previsione principale non corrisponde all'etichetta vera. Il termine di varianza tiene conto della variabilità nelle previsioni quando la previsione principale corrisponde all'etichetta vera.

È importante notare che la scomposizione bias-variance per la perdita 0/1 è più sfumata e complessa rispetto alla perdita dell'errore al quadrato a causa della natura discreta della funzione di perdita. I termini di bias e varianza sono definiti in base al concetto di previsione principale e catturano diversi aspetti delle prestazioni della classificazione.

Comprendere il compromesso bias-varianza nel contesto della perdita 0/1 è fondamentale per valutare e migliorare i modelli di classificazione. Analizzando le componenti di bias e varianza, possiamo ottenere informazioni sulle fonti di errore e prendere decisioni informate per mitigare i problemi di underfitting o overfitting.

Se sei interessato a un'esplorazione più dettagliata della decomposizione bias-variance per la perdita 0/1, ti consiglio di leggere l'articolo di Pedro Domingo "The Unified Bias Variance Decomposition" e i relativi lavori di Kong e Dieterich. Questi documenti forniscono spiegazioni approfondite e formalismi matematici per la decomposizione.

Il compromesso bias-variance è un concetto fondamentale nell'apprendimento automatico che si riferisce alla capacità del modello di bilanciare tra underfitting e overfitting. Il termine bias rappresenta l'errore dovuto alle ipotesi o alle semplificazioni del modello, portando a uno scenario di underfitting in cui il modello è troppo semplice per catturare i modelli sottostanti nei dati. D'altra parte, il termine di varianza rappresenta l'errore dovuto alla sensibilità del modello a piccole fluttuazioni nei dati di addestramento, risultando in uno scenario di overfitting in cui il modello è troppo complesso e cattura il rumore piuttosto che modelli generalizzabili.

Nel caso della perdita 0/1, il termine bias cattura l'errore di errata classificazione quando la previsione principale è diversa dall'etichetta vera. Un errore elevato indica che il modello esegue costantemente previsioni errate e non è in grado di acquisire i veri modelli sottostanti nei dati. Ciò si verifica spesso quando il modello è troppo semplice o manca della complessità necessaria per catturare la complessità del problema.

Il termine di varianza, d'altra parte, cattura la variabilità nelle previsioni quando la previsione principale corrisponde all'etichetta vera. Riflette la sensibilità del modello a diversi campioni di dati di addestramento e l'instabilità delle sue previsioni. Una varianza elevata indica che il modello è eccessivamente sensibile a piccoli cambiamenti nei dati di addestramento ed è probabile che si adatti eccessivamente. Ciò significa che il modello può funzionare bene sui dati di addestramento ma non riesce a generalizzare a dati non visibili.

Idealmente, vogliamo trovare un modello che raggiunga un equilibrio tra bias e varianza, minimizzando entrambi i tipi di errore. Tuttavia, c'è spesso un compromesso tra i due. Diminuendo il bias si può aumentare la varianza e viceversa. Questo è noto come compromesso tra bias e varianza.

Per trovare il giusto equilibrio, possono essere impiegate varie tecniche. I metodi di regolarizzazione, come la regolarizzazione L1 o L2, possono aiutare a ridurre la complessità del modello e controllare la varianza. La convalida incrociata può essere utilizzata per valutare le prestazioni del modello su diversi sottoinsiemi di dati e identificare il potenziale overfitting. I metodi di ensemble, come il bagging o il boosting, possono anche essere impiegati per ridurre la varianza combinando più modelli.

Comprendere il compromesso tra bias e varianza è fondamentale per la selezione del modello e l'ottimizzazione degli iperparametri. Ci consente di valutare le prestazioni di generalizzazione del modello e di prendere decisioni informate per migliorarne l'accuratezza e l'affidabilità.

8.5 Bias-Variance Decomposition of the 0/1 Loss (L08: Model Evaluation Part 1)
8.5 Bias-Variance Decomposition of the 0/1 Loss (L08: Model Evaluation Part 1)
  • 2020.11.05
  • www.youtube.com
This video discusses the tricky topic of decomposing the 0/1 loss into bias and variance terms.-------This video is part of my Introduction of Machine Learni...
Motivazione: