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將自動對訓練資料集進行劃分,以產生訓練資料集和驗證資料集。
在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語句則用於定義訓練完成後模型的儲存位置。訓練文法的更多資訊請參見訓練文法。
使用模型預測資料
在完成xgboost.gbtree模型的訓練後,可以利用該模型進行樓價預測,相關的預測SQL如下:
SELECT * FROM boston.test TO PREDICT boston.predict.medv USING sqlflow_models.my_xgb_regression_model;其中,
SELECT則用於指定預測所需的資料集,TO PREDICT用於指明預測結果儲存的表,而USING語句用於指定所採用的模型,預測文法的更多資訊請參見預測文法。預測結束後,通過如下SQL查看預測結果。
SELECT * FROM boston.predict;