是否可以使用tree_method ='exact'训练XGBoost4J-Spark?

时间:2018-03-13 00:18:43

标签: apache-spark-mllib xgboost

我打算在SparkML管道中使用经过训练的xgboost模型和tree_method ='exact',所以我需要使用XGBoost4J-Spark;但是文档说“分布式和外部存储器版本仅支持近似算法”。 (https://xgboost.readthedocs.io/en/latest//parameter.html)。无论如何要解决这个问题吗?

或者,我可以使用基于C的xgboost训练模型,以及如何将训练过的模型转换为XGBoostEstimator,这是一个SparkML估算器,可以无缝集成到SparkML管道中。有人遇到过这样的转换器吗?

我不介意在单个节点而不是群集上运行,因为我可以等待。

任何见解都表示赞赏。

1 个答案:

答案 0 :(得分:0)

所以有这样的方式:

import ml.dmlc.xgboost4j.scala.XGBoost
val xgb1 = XGBoost.loadModel("xgb1")
import ml.dmlc.xgboost4j.scala.spark.XGBoostRegressionModel
val xgbSpark = new XGBoostRegressionModel(xgb1)

其中xgb1是使用基于C的xgboost训练的模型。但是有一个问题;他们的预测不匹配。我在github repo上报告了这个问题:https://github.com/dmlc/xgboost/issues/3190