Una guida completa per potenziare gli algoritmi di machine learning



Questo blog è interamente incentrato su come funziona Boosting Machine Learning e su come può essere implementato per aumentare l'efficienza dei modelli di Machine Learning.

Con così tanti progressi nel campo della sanità, del marketing, degli affari e così via, è diventata una necessità di sviluppo più avanzato e complesso . Il potenziamento dell'apprendimento automatico è una di queste tecniche che può essere utilizzata per risolvere problemi del mondo reale complessi, basati sui dati. Questo blog è interamente focalizzato su come funziona Boosting Machine Learning e su come può essere implementato per aumentare l'efficienza dei modelli di Machine Learning.

Per avere una conoscenza approfondita dell'Intelligenza Artificiale e del Machine Learning, puoi iscriverti al live di Edureka con supporto 24 ore su 24, 7 giorni su 7 e accesso a vita.





Ecco un elenco di argomenti che verranno trattati in questo blog:

  1. Perché si usa il potenziamento?
  2. Cos'è il potenziamento?
  3. Come funziona l'algoritmo di potenziamento?
  4. Tipi di potenziamento
  5. Demo

Perché viene utilizzato il potenziamento?

Per risolvere problemi contorti abbiamo bisogno di tecniche più avanzate. Supponiamo che su un set di dati di immagini contenenti immagini di cani e gatti, ti sia stato chiesto di creare un modello in grado di classificare queste immagini in due classi separate. Come ogni altra persona, inizierai identificando le immagini utilizzando alcune regole, come indicato di seguito:



  1. L'immagine ha orecchie a punta: Cat

  2. L'immagine ha gli occhi a forma di gatto: Cat

  3. L'immagine ha arti più grandi: Cane



  4. L'immagine ha artigli affilati: Cat

  5. L'immagine ha una struttura della bocca più ampia: Cane

Tutte queste regole ci aiutano a identificare se un'immagine è un cane o un gatto, tuttavia, se dovessimo classificare un'immagine in base a una regola individuale (singola), la previsione sarebbe errata. Ciascuna di queste regole, individualmente, sono chiamate studenti deboli perché queste regole non sono abbastanza forti per classificare un'immagine come un gatto o un cane.

Pertanto, per assicurarci che la nostra previsione sia più accurata, possiamo combinare la previsione di ciascuno di questi studenti deboli utilizzando la regola della maggioranza o la media ponderata. Questo rende un modello di apprendimento forte.

Nell'esempio sopra, abbiamo definito 5 studenti deboli e la maggior parte di queste regole (cioè 3 studenti su 5 prevedono l'immagine come un gatto) ci fornisce la previsione che l'immagine è un gatto. Pertanto, il nostro risultato finale è un gatto.

Quindi questo ci porta alla domanda,

Cos'è il potenziamento?

Il potenziamento è una tecnica di apprendimento di insieme che utilizza una serie di algoritmi di apprendimento automatico per convertire lo studente debole in studenti forti al fine di aumentare la precisione del modello.

What-Is-Boosting-Boosting-Machine-Learning-Edureka

Che cosa sta aumentando - Potenziamento del machine learning - Edureka

Come ho già detto, il potenziamento è un metodo di apprendimento d'insieme, ma cos'è esattamente l'apprendimento d'insieme?

Cos'è Ensemble in Machine Learning?

L'insieme di apprendimento è un metodo utilizzato per migliorare le prestazioni del modello di Machine Learning combinando più studenti. Rispetto a un singolo modello, questo tipo di apprendimento costruisce modelli con maggiore efficienza e precisione. Questo è esattamente il motivo per cui i metodi di ensemble vengono utilizzati per vincere competizioni leader di mercato come la competizione per raccomandazioni Netflix, le competizioni Kaggle e così via.

Cos'è l'insieme di apprendimento - Promuovere l'apprendimento automatico - Edureka

Di seguito ho anche discusso la differenza tra Boosting e Bagging.

Boosting vs Bagging

L'apprendimento dell'insieme può essere eseguito in due modi:

  1. Insieme sequenziale, popolarmente noto come potenziamento , qui gli studenti deboli vengono prodotti in sequenza durante la fase di formazione. Le prestazioni del modello sono migliorate assegnando un peso maggiore ai campioni precedenti, classificati in modo errato. Un esempio di boosting è l'algoritmo AdaBoost.

  2. Insieme parallelo , popolarmente noto come insaccamento , qui gli studenti deboli vengono prodotti parallelamente durante la fase di formazione. Le prestazioni del modello possono essere migliorate addestrando parallelamente un numero di studenti deboli su set di dati bootstrap. Un esempio di insaccamento è la foresta casuale algoritmo.

In questo blog, mi concentrerò sul metodo Boosting, quindi nella sezione seguente capiremo come funziona l'algoritmo boosting.

Come funziona l'algoritmo di potenziamento?

Il principio di base alla base del funzionamento dell'algoritmo di potenziamento è generare più studenti deboli e combinare le loro previsioni per formare una regola forte. Queste regole deboli vengono generate applicando algoritmi di Machine Learning di base su diverse distribuzioni del set di dati. Questi algoritmi generano regole deboli per ogni iterazione. Dopo più iterazioni, gli studenti deboli vengono combinati per formare uno studente forte che predice un risultato più accurato.

Come funziona Boosting Algorithm - Boosting Machine Learning - Edureka

Ecco come funziona l'algoritmo:

Passo 1: L'algoritmo di base legge i dati e assegna lo stesso peso a ciascuna osservazione campione.

Passo 2: Vengono identificate false previsioni fatte dallo studente di base. Nella successiva iterazione, queste false previsioni vengono assegnate al successivo studente di base con un peso maggiore su queste previsioni errate.

Passaggio 3: Ripetere il passaggio 2 finché l'algoritmo non è in grado di classificare correttamente l'output.

Pertanto, l'obiettivo principale di Boosting è per concentrarsi maggiormente sulle previsioni non classificate.

Ora che sappiamo come funziona l'algoritmo di boosting, capiamo i diversi tipi di tecniche di boosting.

Tipi di potenziamento

Ci sono tre modi principali attraverso i quali può essere effettuato il potenziamento:

struttura dei dati e algoritmo in java
  1. Potenziamento adattivo o AdaBoost

  2. Aumento gradiente

  3. XGBoost

Discuterò le basi dietro ciascuno di questi tipi.

Boosting adattivo

  • AdaBoost viene implementato combinando diversi studenti deboli in un unico studente forte.

  • Gli studenti deboli in AdaBoost prendono in considerazione una singola funzione di input e disegnano un singolo albero decisionale diviso chiamato moncone decisionale. Ogni osservazione viene valutata allo stesso modo mentre si estrae il primo moncone decisionale.

  • I risultati del primo moncone decisionale vengono analizzati e se le osservazioni vengono classificate in modo errato, vengono assegnati pesi maggiori.

  • Dopo questo, viene tracciato un nuovo moncone decisionale considerando le osservazioni con pesi maggiori come più significative.

  • Anche in questo caso, se le osservazioni vengono classificate in modo errato, viene attribuito un peso maggiore e questo processo continua finché tutte le osservazioni non rientrano nella classe corretta.

  • Adaboost può essere utilizzato sia per la classificazione che per i problemi basati sulla regressione, tuttavia, è più comunemente usato per scopi di classificazione.

Aumento gradiente

Anche il Gradient Boosting si basa sull'apprendimento sequenziale dell'insieme. Qui gli studenti di base vengono generati in modo sequenziale in modo tale che lo studente di base attuale sia sempre più efficace del precedente, cioè il modello complessivo migliora sequenzialmente ad ogni iterazione.

La differenza in questo tipo di boost è che i pesi per i risultati erroneamente classificati non vengono incrementati, invece, il metodo Gradient Boosting cerca di ottimizzare la funzione di perdita dello studente precedente aggiungendo un nuovo modello che aggiunge studenti deboli al fine di ridurre la funzione di perdita.

L'idea principale qui è superare gli errori nelle previsioni dello studente precedente. Questo tipo di potenziamento ha tre componenti principali:

  1. Funzione di perdita che deve essere migliorato.

  2. Studente debole per calcolare previsioni e formare studenti forti.

  3. Un Modello additivo che regolarizzerà la funzione di perdita.

Come AdaBoost, anche Gradient Boosting può essere utilizzato sia per la classificazione che per i problemi di regressione.

XGBoost

XGBoost è una versione avanzata del metodo di potenziamento del gradiente, significa letteralmente eXtreme Gradient Boosting. XGBoost sviluppato da Tianqi Chen, rientra nella categoria DMLC (Distributed Machine Learning Community).

Lo scopo principale di questo algoritmo è aumentare la velocità e l'efficienza del calcolo. L'algoritmo Gradient Descent Boosting calcola l'output a una velocità inferiore poiché analizzano in sequenza il set di dati, pertanto XGBoost viene utilizzato per aumentare o aumentare notevolmente le prestazioni del modello.

XGBoost - Potenziare l'apprendimento automatico - Edureka

XGBoost è progettato per concentrarsi sulla velocità di calcolo e sull'efficienza del modello. Le caratteristiche principali fornite da XGBoost sono:

  • Parallelamente crea alberi decisionali.

  • Implementazione di metodi di calcolo distribuito per la valutazione di modelli ampi e complessi.

  • Utilizzo dell'elaborazione out-of-core per analizzare enormi set di dati.

  • Implementazione dell'ottimizzazione della cache per utilizzare al meglio le risorse.

Quindi questi eranoi diversi tipi di algoritmi di Boosting Machine Learning. Per rendere le cose interessanti, nella sezione seguente eseguiremo una demo per vedere come gli algoritmi di boost possono essere implementati in Python.

Potenziare l'apprendimento automatico in Python

Breve disclaimer: userò Python per eseguire questa demo, quindi se non conosci Python, puoi consultare i seguenti blog:

  1. Come imparare Python 3 da zero - Una guida per principianti

Ora è il momento di sporcarti le mani e iniziare a scrivere codice.

Dichiarazione problema: Studiare un set di dati sui funghi e costruire un modello di Machine Learning in grado di classificare un fungo come velenoso o meno, analizzandone le caratteristiche.

Descrizione set di dati: Questo set di dati fornisce una descrizione dettagliata di campioni ipotetici secondo 23 specie di funghi con branchie. Ogni specie è classificata come funghi commestibili o non commestibili (velenosi).

Logica: Costruire un modello di Machine Learning utilizzando uno degli algoritmi di Boosting per prevedere se un fungo è commestibile o meno.

programma java per connettersi al database mysql

Passaggio 1: importare i pacchetti richiesti

da sklearn.ensemble import AdaBoostClassifier da sklearn.preprocessing import LabelEncoder da sklearn.tree import DecisionTreeClassifier importa panda come pd # Importa la funzione train_test_split da sklearn.model_selection importa train_test_split #Import scikit-learn metrics module per l'accuratezza del calcolo sklearn

Passaggio 2: importare il set di dati

# Carica nel dataset dati = pd.read_csv ('C: //Users//NeelTemp//Desktop//mushroomsdataset.csv')

Passaggio 3: elaborazione dei dati

#Definisci i nomi delle colonne dataset.columns = ['target', 'cap-shape', 'cap-surface', 'cap-color', 'bruises', 'odor', 'gill-attachment', 'gill-spacing ',' gill-size ',' gill-color ',' stalk-shape ',' stalk-root ',' stalk-surface-above-ring ',' stalk-surface-below-ring ',' stalk-color -above-ring ',' stalk-color-below-ring ',' veil-type ',' veil-color ',' ring-number ',' ring-type ',' spore-print-color ',' popolation ',' habitat '] per l'etichetta in dataset.columns: dataset [label] = LabelEncoder (). fit (dataset [label]). transform (dataset [label]) # Visualizza le informazioni sul set di dati print (dataset.info ( )) Int64 Indice: 8124 voci, da 6074 a 686 Colonne dati (totale 23 colonne): destinazione 8124 int32 non nullo forma del cappuccio 8124 int32 non nullo superficie del cappuccio 8124 non nullo int32 colore del cappuccio 8124 non nullo int32 contusioni 8124 non nullo int32 odore 8124 non nullo int32 attacco branchia 8124 non nullo int32 spaziatura branchia 8124 non nullo int32 dimensione branchia 8124 non nullo int32 colore branchia 8124 non nullo int32 a forma di gambo 8124 non nullo int32 stalk-root 8124 non null int32 gambo-superficie-sopra-anello 8124 non nullo int32 gambo-superficie-sotto-anello 8124 non nullo int32 gambo-colore-sopra-anello 8124 non nullo int32 gambo-colore-sotto-anello 8124 non nullo int32 velo- tipo 8124 non nullo int32 velo-colore 8124 non nullo int32 numero anello 8124 non nullo int32 tipo ad anello 8124 non nullo int32 impronta sporale a colori 8124 non nullo int32 popolazione 8124 non nullo int32 habitat 8124 non nullo null int32 dtypes: int32 (23) utilizzo della memoria: 793,4 KB

Passaggio 4: giunzione dei dati

X = dataset.drop (['target'], axis = 1) Y = dataset ['target'] X_train, X_test, Y_train, Y_test = train_test_split (X, Y, test_size = 0.3)

Passaggio 5: crea il modello

model = DecisionTreeClassifier (criterio = 'entropy', max_depth = 1) AdaBoost = AdaBoostClassifier (base_estimator = model, n_estimators = 400, learning_rate = 1)

Nello snippet di codice sopra, abbiamo implementato l'algoritmo AdaBoost. La funzione 'AdaBoostClassifier' accetta tre parametri importanti:

  • base_estimator: lo stimatore di base (discente debole) è alberi decisionali per impostazione predefinita
  • n_estimator: questo campo specifica il numero di studenti di base da utilizzare.
  • learning_rate: questo campo specifica il tasso di apprendimento, che abbiamo impostato sul valore predefinito, ovvero 1.
#Fit the model with training data boostmodel = AdaBoost.fit (X_train, Y_train)

Passaggio 6: valutazione del modello

#Valuta l'accuratezza del modello y_pred = boostmodel.predict (X_test) predictions = metrics.accuracy_score (Y_test, y_pred) #Calculating the accuratezza in percentuale print ('The precision is:', predictions * 100, '%') The accurate è: 100,0%

Abbiamo ricevuto una precisione del 100% che è perfetta!

Quindi, con questo, arriviamo alla fine di questo blog Boosting Machine Learning. Se desideri saperne di più sull'apprendimento automatico, puoi leggere questi blog:

Se desideri iscriverti a un corso completo su Intelligenza Artificiale e Machine Learning, Edureka ha un che ti renderà esperto in tecniche come l'apprendimento supervisionato, l'apprendimento non supervisionato e l'elaborazione del linguaggio naturale. Include la formazione sugli ultimi progressi e approcci tecnici in Intelligenza Artificiale e Machine Learning come Deep Learning, Modelli grafici e Reinforcement Learning.