我不太确定在使用xgboost作为元学习者来学习合奏之前,我应该如何调整xgboost。
我是否应该包括预测矩阵(即。包含来自不同基础学习者的预测结果列的df ),还是我应该只包括原始特性?
我尝试过这两种方法,只使用“n_estimators”,并将F1评分作为交叉验证的标准。(学习率=0.1)
方法1:具有pred矩阵+原始特性:
n_estimators = 1 (this means only one tree is included in the model, is this abnormal? )
F1 Score (Train): 0.907975 (suggest overfitting)方法2:只具有原始特性:
n_estimators = 1
F1 Score (Train): 0.39对于这两种方法,我得到了非常不同的结果,这是有意义的,因为方法1的特征重要性图表明,第一级预测中的一个是最重要的。
我认为基础学习者的第一级预测应该包括在网格搜索中。有什么想法吗?
发布于 2020-05-05 14:44:58
您应该使用任何您希望它最终预测的数据来调优元估计器。这肯定包括基本模型预测(否则您实际上并不是集成),并且可能包括或可能不包括(一些)原始功能。
不过,一个重要的注意事项是:你不应该使用基本模型的“预测”来训练他们自己的训练数据;这些更准确地称为估计,而不是预测,因为基本模型已经获得了真相。一种常见的方法是通过对基本模型的交叉验证训练来训练元估计器。
如果基本模型相当好,那么xgboost模型可能只使用一棵树是合理的;它只需要调整来自基本模型的已经很好的预测。但是,考虑降低学习率或以其他方式增加正则化,看看更多的树是否能表现得更好。
发布于 2022-02-03 05:23:59
是的,您绝对可以使用基本模型预测作为元学习的输入。它可以对模型进行改进,并在竞争平台中得到了广泛的应用。
这种技术被称为堆叠技术,并容易过度拟合。如果你想为你的模型做堆叠,我建议使用样本外交叉验证分数,看看性能。
你应该试着遵循这个方法,它有助于限制过度拟合(阅读过度可能仍然会发生,但良好的设计减少了机会):

https://developer.ibm.com/articles/stack-machine-learning-models-get-better-results/
https://datascience.stackexchange.com/questions/32200
复制相似问题