XGBoost - 回归器



回归是XGBoost中使用的一种技术,用于预测连续数值。当目标变量显示连续输出时,通常将其用于预测销售额、房地产价格和股票价值。

  • 回归问题的结果可以是实数或连续的数字。两种常见的回归算法是决策树和线性回归。回归评估使用多种指标,例如均方误差 (MSE) 和均方根误差 (RMSE)。这些是XGBoost模型的一些主要组成部分,每个部分都有其关键功能。
  • RMSE指的是均方根误差的平方根。然而,MAE是实际值和预期值之间差异的绝对总和,由于数学误差,它不像其他指标那样常用。

XGBoost是构建监督回归模型的有用工具。通过了解其目标函数和基础学习器可以证明这一说法。

  • 目标函数包括损失函数和正则化项。它解释了实际值和预期值之间的差异,或者模型输出与真实数据相差多少。
  • XGBoost中回归和二元分类最常用的损失函数分别是reg:linear和reg:logistic。XGBoost是一种集成学习技术。集成学习需要训练和合并单个模型以获得单个预测。

XGBRegressor语法

Python中的XGBRegressor是XGBoost的回归专用版本,用于回归问题,目标是预测连续数值。

构建XGBRegressor模块的基本语法如下:

import xgboost as xgb

model = xgb.XGBRegressor(
   objective='reg:squarederror',
   max_depth=max_depth,
   learning_rate=learning_rate,
   subsample=subsample,
   colsample_bytree=colsample,
   n_estimators=num_estimators
)

参数

以下是XGBRegressor函数的参数:

  • objective 是一个必备参数,它决定了模型在回归任务中的用途。它设置为reg,这意味着它使用平方损失来计算回归问题中的误差。

  • max_depth 是一个可选参数,它表示每棵决策树可以达到的深度。较高的值允许树学习更多信息,但也可能导致过拟合。

  • learning_rate 是另一个可选参数。它控制模型在每一步学习的程度。较小的值可以通过减慢学习速度来防止过拟合。

  • subsample 是可选的,它指的是将用于创建每棵树的数据部分。使用较少的数据可以使模型更通用。

  • colsample_bytree 也是可选的,它控制用于创建每棵树的特征(列)数量。

  • n_estimators 是必需的,它告诉模型要创建多少棵树(提升轮数)。更多的树可以提高精度,但也使模型更复杂。

XGBRegressor示例

这段代码训练了一个机器学习模型,该模型使用XGBoost方法来预测房价。通过读取数据集并将其划分为训练集和测试集,它将训练模型。最后,通过计算均方根误差或RMSE来评估预测精度。

让我们在这个数据集上使用XGBoost框架评估回归技术:

# Required imports 
import numpy as np 
import pandas as pd 
import xgboost as xg 
from sklearn.model_selection import train_test_split 
from sklearn.metrics import mean_squared_error as MSE 

# Loading the data 
dataset = pd.read_csv("/Python/Datasets/HousingData.csv") 
X, y = dataset.iloc[:, :-1], dataset.iloc[:, -1] 

# Splitting the datasets
train_X, test_X, train_y, test_y = train_test_split(X, y, test_size = 0.3, random_state = 123) 

# Instantiation 
xgb_r = xg.XGBRegressor(objective ='reg:linear', n_estimators = 10, seed = 123) 

# Fitting the model 
xgb_r.fit(train_X, train_y) 

# Predict the model 
pred = xgb_r.predict(test_X) 

# RMSE Computation 
rmse = np.sqrt(MSE(test_y, pred)) 
print("RMSE : % f" %(rmse)) 

输出

以下是上述模型的输出:

RMSE :  4.963784

线性基学习器

这段代码使用线性提升器和XGBoost来预测房价。加载数据集,将其拆分为训练集和测试集,然后将每个集合转换为XGBoost所需的DMatrix格式。在模型训练后,通过计算均方根误差或RMSE来确定预测精度。

# Required imports 
import numpy as np 
import pandas as pd 
import xgboost as xg 
from sklearn.model_selection import train_test_split 
from sklearn.metrics import mean_squared_error as MSE 

# Loading the data 
dataset = pd.read_csv("/Python/Datasets/HousingData.csv") 
X, y = dataset.iloc[:, :-1], dataset.iloc[:, -1] 

# Splitting the datasets
train_X, test_X, train_y, test_y = train_test_split(X, y, 
					test_size = 0.3, random_state = 123) 

train_dmatrix = xg.DMatrix(data = train_X, label = train_y) 
test_dmatrix = xg.DMatrix(data = test_X, label = test_y) 

# Parameter dictionary 
param = {"booster":"gblinear", "objective":"reg:linear"} 

xgb_r = xg.train(params = param, dtrain = train_dmatrix, num_boost_round = 10) 
pred = xgb_r.predict(test_dmatrix) 

# RMSE Computation 
rmse = np.sqrt(MSE(test_y, pred)) 
print("RMSE : % f" %(rmse)) 

输出

以下是该模型的结果:

RMSE :  6.101922

总结

XGBoost是一个流行的回归问题解决框架。由于其高效的梯度提升和处理复杂数据集的能力,它非常适合精确预测连续数值的回归模型。由于其持续发展,XGBoost成为机器学习回归分析中的重要工具,这保证了它将在回归程序中处于领先地位。

广告
© . All rights reserved.