AUC b/w Apache-Spark's GBT和sklearn的差异



我尝试了GBDT,既有Python的sklearn,也有Spark的本地独立MLlib实现,该实现具有二进制分类问题的默认设置。在这两种情况下,我保持了numIterations,loss函数相同。这些特征都是真实的、连续的。然而,MLLib实现中的AUC与sklearn相比有很大差距。这些是sklearn分类器的参数:

GradientBoostingClassifier(
    init=None, learning_rate=0.001, loss='deviance',max_depth=8,
    max_features=None, max_leaf_nodes=None, min_samples_leaf=1, 
    min_samples_split=2, min_weight_fraction_leaf=0.0, 
    n_estimators=100, random_state=None, subsample=1.0, 
    verbose=0, warm_start=False) 

我想检查是否有办法在MLlib中计算和设置这些参数,或者MLlib是否也采用相同的设置(这是非常标准的)。

任何计算差异的指针都会有所帮助。

scikit-learn和Spark MLlib之间的可自定义参数集和默认值都不同。特别是Spark中的默认学习读数为0.1,最大深度为3。

然而,更重要的是实现合理缩放所需的算法变化。可能最重要的是连续变量的装箱。因此,即使输入参数乍一看或多或少相同,也不太可能得到相同的结果。

另请参阅:Spark MLLib中的可扩展分布式决策树。

相关内容

  • 没有找到相关文章

最新更新