Apprenditori lineari di base
Ora che hai usato gli alberi come modelli di base in XGBoost, proviamo l’altro tipo di modello di base utilizzabile con XGBoost: un learner lineare. Questo modello, anche se meno usato in XGBoost, ti permette di creare una regressione lineare regolarizzata sfruttando la potente API di apprendimento di XGBoost. Tuttavia, proprio perché è meno comune, per costruirlo devi usare le funzioni native di XGBoost non compatibili con scikit-learn, come xgb.train().
Per farlo devi creare il dizionario dei parametri che descrive il tipo di booster che vuoi usare (in modo analogo a come hai creato il dizionario nel Capitolo 1 quando hai usato xgb.cv()). La coppia chiave-valore che definisce il tipo di booster (modello di base) di cui hai bisogno è "booster":"gblinear".
Dopo aver creato il modello, puoi usare i metodi .train() e .predict() del modello proprio come hai fatto in passato.
Qui i dati sono già stati suddivisi in insieme di addestramento e di test, quindi puoi passare subito a creare gli oggetti DMatrix richiesti dalla learning API di XGBoost.
Questo esercizio fa parte del corso
Extreme Gradient Boosting con XGBoost
Istruzioni dell'esercizio
- Crea due oggetti
DMatrix:DM_trainper il training set (X_trainey_train) eDM_test(X_testey_test) per il test set. - Crea un dizionario di parametri che definisca il tipo di
"booster"che userai ("gblinear") e l'"objective"che minimizzerai ("reg:squarederror"). - Addestra il modello usando
xgb.train(). Devi specificare gli argomenti per i seguenti parametri:params,dtrainenum_boost_round. Usa5round di boosting. - Predici le etichette sul test set usando
xg_reg.predict(), passandogliDM_test. Assegna apreds. - Premi "Invia risposta" per visualizzare l'RMSE!
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
# Convert the training and testing sets into DMatrixes: DM_train, DM_test
DM_train = ____
DM_test = ____
# Create the parameter dictionary: params
params = {"____":"____", "____":"____"}
# Train the model: xg_reg
xg_reg = ____.____(____ = ____, ____=____, ____=____)
# Predict the labels of the test set: preds
preds = ____
# Compute and print the RMSE
rmse = np.sqrt(mean_squared_error(y_test,preds))
print("RMSE: %f" % (rmse))