Menu
CoddyTech

Gradient Boosting

Fa parte della sezione Apprendimento supervisionato del percorso Machine Learning di Coddy. Lezione 43 di 58.

Una foresta fa crescere i suoi alberi uno accanto all’altro. Il gradient boosting li fa crescere uno dopo l’altro: ogni nuovo albero impara ciò che gli alberi precedenti continuano a sbagliare.

Qui adatta le vendite di un bar di smoothie, albero dopo albero:

Punti grigi per 40 giorni di vendite di smoothie rispetto alla temperatura, in aumento da circa 20 a 135. Una linea punteggiata dopo 1 albero è un gradino approssimativo e piatto, una linea tratteggiata dopo 3 alberi segue meglio i punti e una linea continua dopo 15 alberi passa attraverso i punti

Per la classificazione, il modello è GradientBoostingClassifier:

from sklearn.ensemble import GradientBoostingClassifier

boost = GradientBoostingClassifier(n_estimators=100, learning_rate=0.1, random_state=0)
boost.fit(X_train, y_train)

learning_rate determina quanta parte di ogni correzione mantenere. I passi piccoli sono prudenti, quindi servono più alberi.

challenge icon

Sfida

Medio

Un coltivatore di orchidee vuole sapere quali piante fioriranno. Il codice iniziale suddivide orchids.csv, valuta una foresta e legge un numero di alberi.

  1. Per ogni tasso in rates, addestra il boosting con quel numero di alberi (random_state=0) e stampa la sua accuratezza sul test.
  2. Stampa il tasso migliore. In caso di parità, mantieni quello precedente.

Per un altro coltivatore e 20:

Forest: 0.860
Boosting at rate 0.01: 0.600
Boosting at rate 0.1: 0.860
Boosting at rate 1.0: 0.900
Best rate for 20 trees: 1.0

Poi prova alcuni numeri di alberi: quando il boosting supera la foresta?

Provalo tu

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier, GradientBoostingClassifier

# Orchidee sugli scaffali di un coltivatore: fiorite quest'anno (1) oppure no (0)
orchids = pd.read_csv("orchids.csv")
X = orchids.drop(columns="bloomed")
y = orchids["bloomed"]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0)
trees = int(input())
rates = [0.01, 0.1, 1.0]

# Non modificare le righe seguenti: la foresta con cui fare il confronto
forest = RandomForestClassifier(n_estimators=100, random_state=0)
forest.fit(X_train, y_train)
print(f"Forest: {forest.score(X_test, y_test):.3f}")

# Scrivi il tuo codice qui sotto
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Apprendimento supervisionato

Esercitati da solo: Compilatore Python online