为了使XGBoost能够使用我们的数据,我们需要将其转换为XGBoost能够处理的特定格式。这种格式称为DMatrix。这是一个非常简单的线性数字数组的数据转换为DMatrix格式:
1D_train = xgb.DMatrix(X_train, label=Y_train)
2D_test = xgb.DMatrix(X_test, label=Y_test)
定义XGBoost模型
既然我们的数据都加载了,我们就可以定义梯度升级集成的参数。我们在下面设置了一些最重要的项目,以帮助我们开始工作。对于更复杂的任务和模型,可以在XGBoost官方网站上获得完整的可能参数列表。
1param = {
2 'eta': 0.3,
3 'max_depth': 3,
4 'objective': 'multi:softprob',
5 'num_class': 3}
6
7steps = 20 # The number of training iterations
最简单的参数是max_depth(正在训练的决策树的最大深度)、objective(正在使用的损失函数)和num_class(数据集中类的数量)。eta算法需要特别注意。
根据我们的理论,梯度提升涉及到创建决策树并将其依次添加到一个集合模型中。创建新的树来纠正现有集合预测中的残余误差。
由于合奏的本质,即将多个模型组合在一起,形成一个本质上非常大、复杂的合奏,使得这种技术容易过度拟合。ETA参数使我们有机会防止这种过度拟合。
可以更直观地将eta视为学习率。eta不是简单地将新树的预测添加到整个权重中,而是将其与正在添加的残差相乘,以减少它们的权重。这有效地降低了整个模型的复杂性。
通常在0.1