我打算在SparkML管道中使用经过训练的xgboost模型和tree_method ='exact',所以我需要使用XGBoost4J-Spark;但是文档说“分布式和外部存储器版本仅支持近似算法”。 (https://xgboost.readthedocs.io/en/latest//parameter.html)。无论如何要解决这个问题吗?
或者,我可以使用基于C的xgboost训练模型,以及如何将训练过的模型转换为XGBoostEstimator,这是一个SparkML估算器,可以无缝集成到SparkML管道中。有人遇到过这样的转换器吗?
我不介意在单个节点而不是群集上运行,因为我可以等待。
任何见解都表示赞赏。
答案 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