我有一个数据集有大量的缺失值(超过40%的缺失值)。在xgboost和H2o gradient boosting中生成一个模型-在这两种情况下都得到了一个像样的模型。然而,xgboost将此变量显示为模型的关键贡献者之一,但根据H2o,梯度提升该变量并不重要。xgboost会以不同的方式处理缺少值的变量吗?两个型号的所有配置都完全相同。
发布于 2017-06-22 01:09:56
这两种方法的缺失值处理和变量重要性都略有不同。两者都将缺失值视为信息(即,它们从中学习,而不是仅仅将其归因于一个简单的常量)。在树构建期间,根据它们各自的损失函数的增益来计算变量重要性。H2O使用平方误差,而XGBoost使用更复杂的基于梯度和hessian的方法。
您可以检查变量重要性在不同种子的不同运行之间的方差,以了解每个方法在变量重要性方面的稳定性。
PS。如果您有分类,那么最好将列作为H2O的一个因素,不需要自己进行编码。这可能会导致列的有效计数与XGBoost的数据集不同,因此对于列采样,情况将有所不同。
https://stackoverflow.com/questions/44668298
复制相似问题