XGBoost--5--代碼編寫基本流程--回歸


這一節主要介紹以下使用XGBoost算法再CPU/GPU版本下代碼的編寫基本流程,主要分為以下幾個部分:

  • 構造訓練集/驗證
  • 算法參數設置
  • XGBoost模型訓練/驗證
  • 模型預測

本節主要面對的任務場景是回歸任務,有關多分類的任務見:XGBoost–4–代碼編寫基本流程–分類

另外,除上述幾個部分外,會涉及到sklearn用於加載數據集以及最后的模型預測的評價指標計算;

導入使用到的庫:

import time
import xgboost as xgb
from sklearn.datasets import load_diabetes, load_boston
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error, mean_absolute_error
from libs.xgboost_plot import plot_training_merror

1. 構造數據集/驗證集

使用sklearn導入數據集,並進一步拆分成訓練集、驗證;

# 使用sklearn加載數據集
diabetes = load_boston()
data, labels = diabetes.data, diabetes.target

# 拆分數據集
x_train, x_test, y_train, y_test = train_test_split(data, labels, test_size=0.2, random_state=7)
print("x_train: {}, x_test: {}".format(x_train.shape, x_test.shape))

構造XGBoost算法需要的輸入格式:

dtrain = xgb.DMatrix(x_train, y_train)  # 訓練集
dtest = xgb.DMatrix(x_test, y_test)  # 驗證集
evals = [(dtrain, 'train'), (dtest, 'val')]  # 訓練過程中進行驗證

2. 算法參數設置

算法模型參數設置,詳情見:XGBoost Parameters

    params = {
        'tree_method': "gpu_hist",
        'booster': 'gbtree',
        'objective': 'reg:squarederror',
        'max_depth': 6,
        'eval_metric': 'mae',
        'eta': 0.01,
        'verbosity': 0,
        'gpu_id': 0
    }

簡單介紹以下:

  • tree_methodgpu_hist表示使用GPU運算,影響的可以使用hist利用CPU計算;
  • objective,目標函數
  • eval_metric: 訓練過程中的評估方法

3. XGBoost模型訓練/驗證

模型訓練、保存模型、繪制mae圖像;

s_time = time.time()
train_res = {}
model = xgb.train(params, dtrain, num_boost_round=300,
                  evals=evals,
                  evals_result=train_res)
print("模型訓練耗時: {}".format(time.time() - s_time))

# 模型保存
save_path = "./saved_model/model_regression.model"
model.save_model(save_path)

# train/val的merror繪圖
merror_img_path = "./test/error.png"
plot_training_merror(train_res, merror_img_path, type='mae')

4. 模型預測

模型預測,打印預測結果:

pred_data = model.predict(dtest)
res = mean_absolute_error(y_test, pred_data)
print(res)
...
[298]	train-mae:1.47924	val-mae:2.60373
[299]	train-mae:1.46995	val-mae:2.59919
模型訓練耗時: 1.8448662757873535
2.5991851900138103

5. 結語

XGBoost最最最最基本的回歸任務基本代碼編寫流程就是這樣了,當然了,這是最最最基本的了:

  • 構建數據集
  • 參數設置
  • 模型訓練、保存、預測;

同樣地,在實際的業務應用中,每一步都存在很多點值得深究;

例如,有一句話說特征工程的高度就決定了算法模型的精度,那么在構造數據集之前的特征工程的重要性不言而喻;

另外,在參數設置過程中,某些參數的使用對於訓練的過程也起到了至關重要的作用,例如樹深度、目標函數、評價方法、正則化項等等很多東西;

所以說,還是那句話,知其然知其所以然,本節僅僅用於說明在回歸任務中編寫XGBoost算法模型的基本流程,接下來一起向下深究,解決好我們所面對的實際任務。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM