Una variazione più efficace del framework di potenziamento del gradiente che include sia un risolutore di modelli lineari che i metodi di apprendimento degli alberi è chiamata potenziamento del gradiente estremo (XGBoost). È sviluppato sull'algoritmo di potenziamento del gradiente, che produce un insieme di modelli di previsione debole, spesso alberi decisionali, come modello di previsione. Le competizioni per l'apprendimento automatico spesso sono dotate di xgboost. È fondamentale comprendere le cause e i meccanismi alla base dell'operazione di successo di questo algoritmo. Impareremo gli alberi decisionali, il potenziamento del gradiente, XGBoost e la sua implementazione in questo articolo.
Cosa sono gli alberi decisionali?
Un algoritmo di computer chiamato algoritmo di albero decisionale crea un albero decisionale da un set di dati fornito. Il set di dati avrà attributi, a volte noti come caratteristiche o caratteristiche, e un attributo di classe. Target e risultato sono altre parole per le caratteristiche della classe. Questa caratteristica è ciò che speriamo di anticipare. L'algoritmo dell'albero decisionale crea un modello di albero decisionale. Un nodo radice, nodi fogliare e bordi costituiscono il modello di albero decisionale. L'algoritmo dell'albero decisionale è ricorsivo, il che significa che si chiama di nuovo e continua a elaborare i dati fino a quando non è soddisfatta una condizione di arresto.
Esempio di albero decisionale da Wikipedia
Cos'è il potenziamento del gradiente?
Per i problemi di regressione e classificazione, il potenziamento del gradiente è una tecnica di apprendimento automatico che genera un modello sotto forma di un gruppo di modelli di previsione deboli, spesso alberi decisionali. Simile ad altre tecniche di potenziamento, costruisce il modello nelle fasi, ma li generalizza consentendo l'ottimizzazione di qualsiasi funzione di perdita. Tre processi essenziali sono coinvolti nel potenziamento del gradiente:
- Ottimizzare una funzione di perdita è il primo passo che deve essere fatto. È richiesta una funzione di perdita differenziabile. In che modo un modello di apprendimento automatico si adatta ai dati per un particolare fenomeno è determinato dalla sua funzione di perdita.
- L'uso di uno studente debole è il secondo passo. Un albero decisionale funge da studente debole nei booster a gradiente. Gli alberi di regressione che producono valori reali per le divisioni e il cui output può essere aggiunto insieme sono specificamente utilizzati, consentendo l'aggiunta dell'output da modelli successivi per correggere i residui nelle previsioni dalla precedente iterazione.
- Il terzo passo prevede l'aggiunta di molti studenti deboli. Uno ad uno, vengono aggiunti alberi decisionali. Quando si aggiungono alberi, viene utilizzato un approccio di discesa per ridurre la perdita. Il componente gradiente dei booster a gradiente è quello. Nell'apprendimento automatico, l'ottimizzazione della discesa per gradiente viene spesso utilizzata per identificare i parametri collegati a un singolo modello che migliora una particolare funzione di perdita.
Cos'è XGBoost?
Un modulo Python per l'esecuzione del potenziamento del gradiente si chiama XGBoost (potenziamento del gradiente estremo). Gli alberi decisionali potenziati con gradiente fungono da fondamento. È un algoritmo di potenziamento che aumenta la robustezza e l'accuratezza del modello in varie piattaforme competitive come Kaggle. I migliori algoritmi per dati strutturati o tabulari di piccole e medie dimensioni si basano sugli alberi decisionali. La costruzione del modello con xgboost è rapida ed efficace.
Dove possiamo usare xgboost?
- In caso di un gran numero di osservazioni nei dati di addestramento.
- Il numero di funzionalità è inferiore al numero di osservazioni.
- Quando la metrica delle prestazioni del modello è in considerazione.
Implementazione in Sklearn
# Importazione delle librerie richieste
da Sklearn.set di dati Importa make_classification
da Sklearn.Model_Selection Import Train_Test_Split
Importa XGBoost
# Creazione del set di dati
X, y = make_classification (n_samples = 1000, n_features = 5, n_informative = 2, n_redundant = 0, random_state = 0, shuffle = false)
print ('Funzionalità sono', x [: 20])
print ('etichette sono', y [: 20])
# dividere i dati in treno e test
X_train, x_test, y_train, y_test = train_test_split (x, y, test_size = 0.2, random_state = 0)
# Creazione dell'istanza XGBoost
xgb_classifier = xgBoost.XGBClassifier ()
# Fondamento del modello sui dati del treno
xgb_classifier.fit (x_train, y_train)
# Fare le previsioni
Previsioni = xgb_classifier.prevedere (x_test)
# Stampa 20 previsioni
Print ("Previsioni sono", Previsioni [: 20])
Produzione
Le caratteristiche sono [[-1.66853167 -1.29901346 0.2746472 -0.60362044 0.70885958]
[-2.9728827 -1.08878294 0.42281857 -3.11685659 0.64445203]
[-0.59614125 -1.37007001 -1.91374267 0.66356158 -0.1540724]
[-1.06894674 -1.17505738 1.19361168 -0.09816121 -0.88661426]
[-1.30526888 -0.96592566 -0.14735366 1.05980629 0.02624662]
[-2.18261832 -0.97011387 -0.11433516 0.74355352 0.21035937]
[-1.24797892 -1.13094525 -0.00592741 1.36606007 1.55511403]
[-1.35308792 -1.06633681 0.61332623 -0.28595915 1.49691099]
[-1.13449871 -1.27403448 1.18311956 0.71889717 -1.21607658]
[-0.38457445 -1.08840346 0.1406719 -0.74367217 -0.15901225]
[-1.0106506 -0.52017071 0.24005693 0.10015941 -0.47517511]
[-0.58310155 -1.18236446 1.27295375 -1.69613127 0.73018353]
[-0.29760388 -1.45995253 -1.85748327 0.38259814 -0.88690433]
[-0.86057581 -1.01530275 0.87830376 0.08645252 0.24770638]
[-2.47091771 -1.21696663 -1.01827933 -0.65457013 0.20721739]
[-1.33090082 -1.01316175 0.58356993 2.92909624 0.22285832]
[0.74840002 -0.91748674 0.97603753 -1.55693393 -1.32989186]
[-1.05483466 -0.9320408 -0.35549477 -1.1974277 1.48639925]
[-2.19888276 -1.17327072 -0.41021869 1.38218189 1.48678247]
[-0.68305478 -0.94253787 0.04277972 0.50179975 -0.05609947]]
Le etichette sono [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
Le previsioni sono [1 1 1 0 0 1 0 0 1 0 1 0 1 0 0 0 1 0 0 0 0]
Conclusione
Abbiamo discusso dell'algoritmo XGBoost nell'apprendimento automatico. Questa è un'implementazione della tecnica di potenziamento del gradiente, che è ampiamente utilizzata nelle competizioni oggi. Abbiamo visto perché questo algoritmo funziona bene e cosa usa sotto il cofano. Infine, abbiamo anche esaminato l'implementazione di XGBoost in Python.