将Azure的Boosted决策树回归与Python的GradientBoostingRegressor进行比较

时间:2017-08-22 18:01:19

标签: python azure scikit-learn regression decision-tree

我正在尝试将Azure Boosted Decision Tree Regression与scikit-learn GradientBoostingRegressor进行比较。这样做的目的是scikit-learn中的选项对于调整超量计等事情要好得多。例如,请参阅此tutorial.我将在Azure中构建我的生产版本,因为API处理非常好。

Azure具有以下超参数选项。 enter image description here

我认为这应该与GradientBoostingRegressor

中的设置相对应
'max_leaf_nodes': 175,
'min_samples_leaf': 5,
'learning_rate': 0.1, 
'n_estimators': 1500, 

我也设置了

'loss': 'ls'

因为我非常确定Azure使用最小二乘法。无论如何,我的输出略有不同。我使用Root Mean Squared Error作为我的评估指标。

Azure Test RMSE: 2222
scikit-learn Test RMSE: 2446

这可能不是什么问题,但我的训练错误存在较大差异。

Azure Train RMSE: 1684
scikit-learn Train RMSE: 2422

我不知道Azure使用什么功能来衡量分割的质量。在scikit-learn中,我尝试了标准均方误差和弗里德曼改进的误差。我得到了类似的答案。

另一个未知数是Azure中分类功能的处理。在scikit-learn中,我使用factorize()来实现Ordinal编码以及get_dummies()用于一个热编码。两种方法都给出了比Azure更接近彼此的结果。 Azure可能会使用" ="在一列中本地处理分类。决定而不是">"用于数值。我对该算法的理解是,如果Ordinal和One-Hot编码都得到类似的答案,那么这也会产生类似的结果。

我希望能够深入了解这些算法之间可能存在的差异。我知道XGBOOST有一些differences与损失函数和拆分方法有关。

0 个答案:

没有答案