【发布时间】:2017-06-21 06:26:18
【问题描述】:
我的数据集有大量缺失值(缺失超过 40%)。在 xgboost 和 H2o 梯度提升中生成了一个模型——在这两种情况下都得到了一个不错的模型。但是,xgboost 将此变量显示为模型的关键贡献者之一,但根据 H2o Gradient Boosting,该变量并不重要。 xgboost 是否以不同的方式处理具有缺失值的变量。两种型号的所有配置都完全相同。
【问题讨论】:
我的数据集有大量缺失值(缺失超过 40%)。在 xgboost 和 H2o 梯度提升中生成了一个模型——在这两种情况下都得到了一个不错的模型。但是,xgboost 将此变量显示为模型的关键贡献者之一,但根据 H2o Gradient Boosting,该变量并不重要。 xgboost 是否以不同的方式处理具有缺失值的变量。两种型号的所有配置都完全相同。
【问题讨论】:
这两种方法的缺失值处理和变量重要性略有不同。两者都将缺失值视为信息(即,他们从缺失值中学习,而不只是用简单的常数进行估算)。变量重要性是根据树构建过程中它们各自损失函数的增益来计算的。 H2O 使用平方误差,而 XGBoost 使用基于梯度和 hessian 的更复杂的误差。
您可以检查的一件事是使用不同种子的不同运行之间变量重要性的方差,以了解每种方法在变量重要性方面的稳定性。
PS。如果您有分类,那么最好将该列作为 H2O 的一个因素,无需进行自己的编码。这可能导致与 XGBoost 的数据集不同的有效列数,因此对于列采样,情况会有所不同。
【讨论】: