因此,从https://arxiv.org/pdf/1603.02754v3.pdf的算法 3 中可以看出,已确定最佳默认方向,缺失值将朝该方向移动。但是,或者我可能误解/错过了文章中的解释,它没有说明输入的确切内容。
例如,我将(父)节点 A(具有 50 个输入)拆分为节点 B 和节点 C。现在,在 50 个输入中,有 7 个缺失值。
其他 43 个输入相应地分为 B 和 C。我似乎理解的是,它将剩余的 7 个分配到 B 和 C 中,并确定哪一个给出更高的增益分数;那将是最佳方向。
但是,鉴于缺少 7 个值(这意味着我不知道这 7 个值是什么),将缺失值分配到任何子节点如何改变增益分数,或者更确切地说最小化损失函数?这似乎表明 Xgboost 正在为缺失值输入一些内容。我似乎无法找出 Xgboost 为这些缺失值输入的内容。我希望这个问题不是太模糊/笼统和简单。
编辑:我认为“缺失值”可能是一个模糊的术语。我的意思是(来自 wiki)“在统计中,缺失数据或缺失值是在没有为观察中的变量存储数据值时发生的。”
来自作者本人(https://github.com/dmlc/xgboost/issues/21),他说“ tqchen 在2014年8月13日评论xgboost自然接受稀疏特征格式,您可以直接将数据作为稀疏矩阵输入,并且仅包含非缺失值。
即未在稀疏特征矩阵中呈现的特征被视为“缺失”。XGBoost 将在内部处理它,您无需对其进行任何操作。”
和,
” tqchen 评论于 2014 年 8 月 13 日 在内部,XGBoost 将自动学习当一个值缺失时的最佳方向。等效地,这可以被视为自动“学习”基于减少的缺失值的最佳插补值是什么关于训练损失。”