Implementazione del potenziamento del gradiente in Python
Stai lavorando su un problema di regressione e cerchi un algoritmo efficiente per risolvere il tuo problema? Se sì, è necessario esplorare la regressione con potenziamento del gradiente (o GBR).
In questo articolo inizieremo con un'introduzione al gradient boosting per problemi di regressione, cosa lo rende così vantaggioso e i suoi diversi parametri. Quindi implementeremo il modello GBR in Python, lo utilizzeremo per la previsione e lo valuteremo.
Cominciamo.
Foto di Austin Neill/Unsplash
Prerequisiti
Per seguire questo articolo, avrai bisogno di esperienza con il codice Python e di una conoscenza principiante dell'apprendimento automatico. Opereremo partendo dal presupposto che tutti i lettori abbiano accesso a macchine sufficientemente potenti da poter eseguire il codice fornito.
Per istruzioni su come iniziare con il codice Python, ti consigliamo di provare questa guida per principianti per configurare il tuo sistema e prepararti a eseguire tutorial per principianti.
Introduzione alla regressione con potenziamento del gradiente
Il “potenziamento” nell’apprendimento automatico è un modo per combinare più modelli semplici in un unico modello composito. Questo è anche il motivo per cui il potenziamento è noto come modello additivo, poiché i modelli semplici (noti anche come studenti deboli) vengono aggiunti uno alla volta, mantenendo invariati gli alberi esistenti nel modello. Combinando modelli sempre più semplici, il modello finale completo diventa un predittore più forte. Il termine “gradiente” in “potenziamento del gradiente” deriva dal fatto che l’algoritmo utilizza la discesa del gradiente per ridurre al minimo la perdita.
Quando il gradient boost viene utilizzato per prevedere un valore continuo, ad esempio età, peso o costo, utilizziamo il gradient boost per la regressione. Questo non è lo stesso che usare la regressione lineare. Questa è leggermente diversa dalla configurazione utilizzata per la classificazione, quindi in questo articolo ci limiteremo alla regressione.
Gli alberi decisionali vengono utilizzati come studenti deboli nel potenziamento del gradiente. Decision Tree risolve il problema del machine learning trasformando i dati in una rappresentazione ad albero. Ogni nodo interno della rappresentazione dell'albero denota un attributo e ogni nodo foglia denota un'etichetta di classe. La funzione di perdita è generalmente l'errore quadrato (in particolare per problemi di regressione). La funzione di perdita deve essere differenziabile.
Inoltre, come la regressione lineare, abbiamo concetti di residui anche nella regressione con potenziamento gradiente. La regressione di potenziamento del gradiente calcola la differenza tra la previsione corrente e il valore target corretto noto.
Questa differenza è detta residua. Successivamente, la regressione con potenziamento del gradiente addestra un modello debole che associa le caratteristiche a quel residuo. Questo residuo previsto da un modello debole viene aggiunto all'input del modello esistente e quindi questo processo spinge il modello verso l'obiettivo corretto. La ripetizione ripetuta di questo passaggio migliora la previsione complessiva del modello.
Va inoltre notato che la regressione con gradiente boosting viene utilizzata per prevedere valori continui come il prezzo della casa, mentre la classificazione con gradiente boosting viene utilizzata per prevedere classi come se un paziente ha o meno una particolare malattia.
I passaggi di alto livello che seguiamo per implementare la regressione con potenziamento del gradiente sono i seguenti:
- Seleziona uno studente debole
- Utilizzare un modello additivo
- Definire una funzione di perdita
- Minimizzare la funzione di perdita
Foto di Jeremy Bishop/Unsplash
Confronto tra Gradient Boost e Ada Boost
Sia Gradient Boost che Ada Boost funzionano con gli alberi decisionali, tuttavia, gli alberi in Gradient Boost sono più grandi degli alberi in Ada Boost.
Sia il potenziamento del gradiente che il potenziamento di Ada ridimensionano gli alberi decisionali, tuttavia, il potenziamento del gradiente ridimensiona tutti gli alberi della stessa quantità a differenza del potenziamento di Ada.
Vantaggi dell'aumento del gradiente
Migliore precisione: la regressione con potenziamento gradiente generalmente fornisce una migliore precisione. Quando confrontiamo l'accuratezza di GBR con altre tecniche di regressione come la regressione lineare, GBR è per lo più sempre vincente. Questo è il motivo per cui GBR viene utilizzato nella maggior parte degli hackathon e delle competizioni online.
Meno pre-elaborazione: poiché sappiamo che la pre-elaborazione dei dati è uno dei passaggi fondamentali nel flusso di lavoro di apprendimento automatico e, se non la eseguiamo correttamente, ciò influisce sulla precisione del nostro modello. Tuttavia, la regressione con potenziamento gradiente richiede una preelaborazione minima dei dati, il che ci aiuta a implementare questo modello più rapidamente e con minore complessità. Sebbene la pre-elaborazione non sia obbligatoria in questo caso, dobbiamo notare che possiamo migliorare le prestazioni del modello dedicando tempo alla pre-elaborazione dei dati.
Maggiore flessibilità: la regressione con potenziamento del gradiente può essere utilizzata con molte funzioni di iperparametri e perdite. Ciò rende il modello altamente flessibile e può essere utilizzato per risolvere un’ampia varietà di problemi.
Dati mancanti: i dati mancanti sono uno dei problemi durante l'addestramento di un modello. La regressione con potenziamento del gradiente gestisce autonomamente i dati mancanti e non richiede che li gestiamo esplicitamente. Questa è chiaramente una grande vittoria rispetto ad altri algoritmi simili. In questo algoritmo i valori mancanti vengono trattati come contenenti informazioni. Pertanto, durante la costruzione dell'albero, le decisioni di suddivisione per nodo vengono prese minimizzando la funzione di perdita e trattando i valori mancanti come una categoria separata che può andare a sinistra o a destra.
Parametri di potenziamento del gradiente
Parliamo di alcuni parametri importanti utilizzati nella regressione con potenziamento del gradiente. Questi sono i parametri che potremmo voler ottimizzare per ottenere il miglior risultato dall'implementazione del nostro algoritmo.
Foto di Drew Patrick Miller/Unsplash
Numero di stimatori: è indicato come n_estimatori.
Il valore predefinito di questo parametro è 100.
Il numero di stimatori è fondamentalmente il numero di fasi di potenziamento che devono essere eseguite dal modello. In altre parole il numero di stimatori denota il numero di alberi nella foresta. Un numero maggiore di alberi aiuta ad apprendere meglio i dati. D'altra parte, un numero maggiore di alberi può comportare un tempo di addestramento più lungo. Quindi dobbiamo trovare il valore giusto ed equilibrato di n_estimators per prestazioni ottimali.
Profondità massima: è indicata come max_profondità.
Il valore predefinito di max_profondità è 3 ed è un parametro facoltativo.
La profondità massima è la profondità dello stimatore dell'albero decisionale nel regressore con potenziamento del gradiente. Dobbiamo trovare il valore ottimale di questo iperparametro per ottenere le migliori prestazioni. Ad esempio, il valore migliore di questo parametro può dipendere dalle variabili di input.
Tasso di apprendimento: è indicato come tasso_diapprendimento.
Il valore predefinito di learning_rate è 0,1 ed è un parametro facoltativo.
Il tasso di apprendimento è un iperparametro nell'algoritmo del regressore con potenziamento del gradiente che determina la dimensione del passo ad ogni iterazione mentre si sposta verso il minimo di una funzione di perdita.
Criterio: È indicato come criterio.
Il valore predefinito di criterion è friedman_mse ed è un parametro facoltativo.
il criterio viene utilizzato per misurare la qualità di una suddivisione per l'albero decisionale.
mse sta per errore quadratico medio.
Perdita: viene indicata come perdita.
Il valore predefinito di loss è ls ed è un parametro facoltativo.
Questo parametro indica la funzione di perdita da ottimizzare. Esistono varie funzioni di perdita come ls che sta per regressione dei minimi quadrati. La minima deviazione assoluta abbreviata come lad è un'altra funzione di perdita. Huber, una terza funzione di perdita è una combinazione della regressione dei minimi quadrati e della deviazione assoluta minima.
Sottocampione: è indicato come sottocampione.
Il valore predefinito di subsample è 1.0 ed è un parametro facoltativo.
Il sottocampione è la frazione di campioni utilizzati per adattare i singoli alberi di apprendimento. Se il sottocampione è inferiore a 1,0 ciò porta a una riduzione della varianza e a un aumento della distorsione.
Numero di iterazioni senza modifiche: è indicato con n_iter_no_change.
Il valore predefinito di subsample è None ed è un parametro facoltativo.
Questo parametro viene utilizzato per decidere se utilizzare l'arresto anticipato per terminare l'addestramento quando il punteggio di convalida non migliora con ulteriori iterazioni.
Se questo parametro è abilitato, metterà da parte la dimensione validation_fraction dei dati di training come convalida e terminerà il training quando il punteggio di convalida non migliora.
Ottenere i dati
Prima di iniziare a implementare il modello, dobbiamo ottenere i dati. Ho caricato qui i dati di esempio. Puoi scaricare i dati sul tuo locale se vuoi provare sul tuo computer.
Di seguito è riportato lo screenshot della descrizione dei dati. Come puoi vedere abbiamo due variabili x e y. x è una variabile indipendente e y è una variabile dipendente.
Dati di regressione con potenziamento del gradiente
Inseriremo questi dati come una linea la cui equazione sarà come y=mx+c
La m è la pendenza della linea simile e la c è l'intercetta y della retta.
Addestramento del modello GBR
È ora di implementare il modello. Come puoi vedere nel codice qui sotto, inizieremo con la definizione dei parametri n_estimators, max_ Depth, learning_rate e criterion. I valori di questi parametri sono rispettivamente 3, 3, 1 e mse. Abbiamo memorizzato i valori dei parametri in una variabile chiamata params.
Abbiamo importato ensemble da sklearn e stiamo utilizzando la classe GradientBoostingRegressor definita con ensemble.
Stiamo creando l'istanza, gradient_boosting_regressor_model, della classe GradientBoostingRegressor, passando i parametri definiti sopra, al costruttore.
Successivamente chiameremo il metodo fit sull'istanza del modello gradient_boosting_regressor_model.
Nella cella 21 di seguito puoi vedere che viene generato il modello GradientBoostingRegressor. Ci sono molti parametri come alfa, criterio, init, tasso di apprendimento, perdita, profondità massima, caratteristiche massime, nodi foglia massimi, diminuzione minima dell'impurità, divisione minima dell'impurità, foglia minima del campione, divisione media dei campioni, foglia minima della frazione di peso, n stimatori, n iter vengono visualizzati nessuna modifica, preordinamento, stato casuale, sottocampione, tol, frazione di convalida, avvio dettagliato e a caldo e i relativi valori predefiniti.
Implementazione della regressione con potenziamento del gradiente in Python
Valutazione del modello
Valutiamo il modello. Prima di valutare il modello è sempre una buona idea visualizzare ciò che abbiamo creato. Quindi ho tracciato x_feature rispetto alla sua previsione, come mostrato nella figura seguente. Questo ci consente di comprendere meglio il grado di adattamento del modello ai dati. E come si vede chiaramente dal diagramma qui sotto, sembra che abbiamo una buona situazione. Stiamo utilizzando la libreria pyplot per creare la trama seguente. Come puoi vedere nel codice seguente, ho prima impostato figsize. Successivamente utilizzando la funzione titolo dobbiamo impostare il titolo della trama. Quindi dobbiamo passare la funzionalità e l'etichetta alla funzione scatter. E infine usa la funzione plot per passare la caratteristica, la sua previsione corrispondente e il colore da utilizzare.
Visualizza il modello di regressione con potenziamento del gradiente
Dopo la visualizzazione di cui sopra, è il momento di scoprire come il modello migliore si adatta quantitativamente ai dati. sklearn ci fornisce metriche per valutare il modello in termini numerici.
Come puoi vedere di seguito, il punteggio di compatibilità del modello è di circa il 98,90%. Si tratta di un punteggio davvero buono, come previsto da un modello come Gradient Boosting Regression.
Trovare il modo in cui il modello migliore si adatta ai dati
Note finali
In questo tutorial abbiamo imparato cos'è la regressione con potenziamento del gradiente e quali sono i vantaggi del suo utilizzo. Abbiamo anche discusso vari iperparametri utilizzati nella regressione con potenziamento del gradiente. Successivamente abbiamo caricato i dati di esempio e addestrato un modello con i dati. Con il modello addestrato abbiamo cercato di visualizzare e quantificare la bontà del modello rispetto ai dati, ovvero oltre il 98%.
Foto di Bruce Mars/Unsplash
Grazie per aver letto! Buon apprendimento automatico :)