梯度提升模型(gradient boosting):它是目前在结构化数据中表现最好的模型。和随机森林类似,都是集成学习的方法。随机森林是将多个决策树的预测值取平均。梯度提升梯度是一种通过循环迭代将模型添加到集合中集成的方法。它首先用单个模型初始化集合,其预测可能非常稚拙的。(即使它的预测非常不准确,随后对集合的添加也会解决这些错误。)
迭代过程:
首先,我们使用当前模型集合为数据集中的每个观测生成预测。为了进行预测,我们将集合中所有模型的预测相加。
用这些预测计算损失函数(例如,均方误差)。
然后我们用损失函数来拟合一个新模型,确定这个模型的参数,使这个模型集成到集合中能带来损失的下降。(梯度提升中的‘梯度’指我们对损失函数使用梯度下降以确定新模型中的参数。)
最后将这个模型集成到集合中。
重复以上步骤。
例子:
在本例中,您将使用XGBoost库。XGBoost代表极端梯度增强,它是梯度增强的一种实现,它的几个附加特性侧重于性能和速度。(Scikit-Learning有另一个版本的梯度增强,但XGBoost有一些技术优势。)
假设我们已经导入了训练数据和验证数据:X_train, X_valid, y_train, and y_valid.。
from xgboost import XGBRegressor
my_model = XGBRegressor()
my_model.fit(X_train, y_train)
进行预测:
from sklearn.metrics import mean_absolute_error
predictions