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