Aprendizes básicos lineares
Agora que você usou árvores como modelos base no XGBoost, vamos usar o outro tipo de modelo base que pode ser usado com XGBoost: um aprendiz linear. Esse modelo, embora não seja tão comum no XGBoost, permite criar uma regressão linear regularizada usando a poderosa API de aprendizado do XGBoost. Porém, por ser incomum, você precisa usar as funções próprias do XGBoost, que não são compatíveis com scikit-learn, para construir o modelo, como xgb.train().
Para isso, você deve criar o dicionário de parâmetros que descreve o tipo de booster que você quer usar (de forma semelhante a como você criou o dicionário no Capítulo 1 quando usou xgb.cv()). O par chave-valor que define o tipo de booster (modelo base) necessário é "booster":"gblinear".
Depois de criar o modelo, você pode usar os métodos .train() e .predict() do modelo como já fez antes.
Aqui, os dados já foram divididos em conjuntos de treino e teste, então você pode partir direto para criar os objetos DMatrix exigidos pela API de aprendizado do XGBoost.
Este exercício faz parte do curso
Extreme Gradient Boosting com XGBoost
Instruções do exercício
- Crie dois objetos
DMatrix:DM_trainpara o conjunto de treino (X_trainey_train) eDM_test(X_testey_test) para o conjunto de teste. - Crie um dicionário de parâmetros que defina o tipo de
"booster"que você vai usar ("gblinear") e também o"objective"que você vai minimizar ("reg:squarederror"). - Treine o modelo usando
xgb.train(). Você deve especificar argumentos para os parâmetros:params,dtrainenum_boost_round. Use5rounds de boosting. - Faça a predição dos rótulos no conjunto de teste usando
xg_reg.predict(), passandoDM_test. Atribua apreds. - Clique em "Enviar Resposta" para ver o RMSE!
Exercício interativo prático
Experimente este exercício completando este código de exemplo.
# 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))