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成为机器学习回归分析中的重要工具,这保证了它将在回归程序中处于领先地位。