[与python不同,缺失值由XGBoost算法在内部处理,在SPARK中构建XGBoost模型时,缺失值隐式转换为0.0(float ?!)。这个可以吗 ?实际值可能为0.0。我们如何确定这不会干扰模型预测能力?
这里假设xgboost将缺失值估算为0,这是错误的。实际上,在缺失值的情况下,它会注意到在树生长时NA朝向更高的增益分割方向。
例如,如果拆分时未考虑缺失值,则将其确定为变量var1
(范围[0,1])的值为0.5,则它会考虑var1缺失值<0.5和> 0.5来计算增益。对于任何分割方向,它都会获得更大的增益,它将缺失值归因于具有该分割方向。因此,缺失值现在的范围为[0,0.5]或[0.5,1],但没有分配给它的实际值(即估算值)。
有关此主题的更多详细信息,请参阅论文https://arxiv.org/pdf/1603.02754v3.pdf