XGBoost gbtree使用示例

XGBoost(Extreme Gradient Boosting)是一种高效的梯度提升树(Gradient Boosting Tree)算法,广泛应用于分类和回归问题。其gbtree模型专注于使用决策树作为基学习器。本文利用房价数据集对XGBoost模型进行训练,并应用训练好的XGBoost模型对房价进行预测。

准备数据

例如,使用boston数据集作为训练数据集,其数据结构如下所示:

列名

描述

数据类型

crim

城镇的人均犯罪率。

FLOAT

zn

面积超过25000平方英尺的住宅用地比例。

FLOAT

indus

每个城镇非零售商业用地面积比例。

FLOAT

chas

是否临近河道。

INT

nox

氮氧化物浓度(千万分之一)。

FLOAT

rm

每套住宅的平均房间数。

FLOAT

age

1940年之前建造的自住房比例。

FLOAT

dis

去往五个就业中心的平均距离。

FLOAT

rad

高速公路的距离。

INT

tax

10000美元的全额房产税率。

INT

ptratio

各城镇师生的比例。

FLOAT

b

非洲裔城镇居民的比例。

FLOAT

lstat

低收入人口的比例。

FLOAT

medv

自住房屋的平均价值。

FLOAT

训练模型

使用boston.train进行模型训练,并利用boston.test进行数据预测。在训练过程中,RDS SQLFlow将自动对训练数据集进行划分,以生成训练数据集和验证数据集。

  1. 搭建基于MySQLrds_sqlflow服务

  2. 通过SQLFlow客户端连接至rds_sqlflow服务

  3. RDS SQLFlow客户端的RDS SQLFlow命令行界面中,执行如下SQL训练模型。

    SELECT * FROM boston.train
    TO TRAIN xgboost.gbtree
    WITH
        objective="reg:squarederror",
        train.num_boost_round = 30
    COLUMN crim, zn, indus, chas, nox, rm, age, dis, rad, tax, ptratio, b, lstat
    LABEL medv
    INTO sqlflow_models.my_xgb_regression_model;

    其中,SELECT语句用于从boston.train表中提取训练数据,TO TRAIN明确指定所使用的模型为xgboost.gbtree,WITH语句则用于配置训练参数,COLUMN用于指定特征列,LABEL用于指定标签列,最后,INTO语句则用于定义训练完成后模型的存储位置。训练语法的更多信息请参见训练语法

使用模型预测数据

  1. 在完成xgboost.gbtree模型的训练后,可以利用该模型进行房价预测,相关的预测SQL如下:

    SELECT * FROM boston.test
    TO PREDICT boston.predict.medv
    USING sqlflow_models.my_xgb_regression_model;

    其中,SELECT则用于指定预测所需的数据集,TO PREDICT用于指明预测结果存储的表,而USING语句用于指定所采用的模型,预测语法的更多信息请参见预测语法

  2. 预测结束后,通过如下SQL查看预测结果。

    SELECT * FROM boston.predict;

相关文档

RDS Custom简介