scala - Spark 中的 XGBoost 模型 --> 缺失值处理

标签 scala apache-spark machine-learning xgboost

与Python不同的是,缺失值由XGBoost算法在内部处理,在SPARK中构建XGBoost模型时,缺失值会隐式转换为0.0(浮点?!)。这个可以吗 ?有些实际值可能是 0.0。我们如何确定这不会干扰模型的预测能力?

最佳答案

您在这里假设 xgboost 将缺失值归咎于 0 是错误的。实际上,在缺失值的情况下,它会在生长树时记录 NA 朝向更高增益分割方向。

例如,如果在不考虑缺失值的情况下进行分割,则将变量 var1 的(范围 [0,1])值 0.5 确定为 0.5,则计算增益时考虑 var1 缺失值 < 0.5且 > 0.5。对于任何分割方向,它都会获得更多增益,它会归因于缺失值以具有该分割方向。因此,缺失值现在具有范围 [0,0.5] 或 [0.5,1],但没有分配给它的实际值(即估算)。

有关此主题的更多详细信息,请参阅论文 https://arxiv.org/pdf/1603.02754v3.pdf

关于scala - Spark 中的 XGBoost 模型 --> 缺失值处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58397077/

相关文章:

scala - Spark异常: Cannot load main class from JAR file:/root/master

python - 将 StringIndexer 应用于 PySpark Dataframe 中的多个列

python - Pyspark 中的 None/== vs Null/isNull?

python - 模块未找到错误: No module named 'numpy.testing.nosetester'

scala - 使用 "Prolog in Scala"查找可用的类型类实例

scala - Playframework 2.0 中用于身份验证和授权的 LDAP

java - 序列化对象时包含外部变量

apache-spark - 使用模式创建数据框时出现 java.lang.ClassCastException

machine-learning - CountVectorizer MultinomialNB ValueError : dimension mismatch

algorithm - 数据挖掘和基于文本的分析的模式识别