XGBoost - 回归器

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

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

XGBoost 是构建监督回归模型的有用工具。可以通过了解其目标函数和基学习器来证明此陈述。

  • 目标函数包括损失函数和正则化项。它解释了实际值和预期值之间的差异,或者模型的输出与实际数据的差异程度。
  • XGBoost 中用于回归和二元分类的最流行的损失函数分别是 reg:linear 和 reg:logistics。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 框架在这个数据集上评估回归技术 −

# 必需的导入
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

# 加载数据
dataset = pd.read_csv("/Python/Datasets/HousingData.csv")
X, y = dataset.iloc[:, :-1], dataset.iloc[:, -1]

# 拆分数据集
train_X, test_X, train_y, test_y = train_test_split(X, y, test_size = 0.3, random_state = 123)

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

# 拟合模型
xgb_r.fit(train_X, train_y)

# 预测模型
pred = xgb_r.predict(test_X)

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

输出

这是上述模型的输出 −

RMSE :  4.963784

线性基础学习器

此代码使用线性增强器和 XGBoost 来预测房价。数据集被分成训练集和测试集加载,然后将每个集转换为 XGBoost 所需的 DMatrix 格式。预测准确率是通过在模型训练后计算均方根误差或 RMSE 来确定的。

# 必需的导入
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

# 加载数据
dataset = pd.read_csv("/Python/Datasets/HousingData.csv")
X, y = dataset.iloc[:, :-1], dataset.iloc[:, -1]

# 拆分数据集
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)

# 参数字典
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 计算
rmse = np.sqrt(MSE(test_y, pred))
print("RMSE : % f" %(rmse))

输出

以下模型的结果 −

RMSE : 6.101922

摘要

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