如何在AdaBoostRegressor中处理randomstate?

时间:2019-12-10 06:45:33

标签: machine-learning scikit-learn

在scikit学习中,AdaBoostRegressor使用AdaBoost.R2算法。该算法的第一步是根据更新的权重自举样本。引导程序意味着它从训练集中选择样本进行替换。这样,它可以达到将目标更多地集中在那些分类错误的样本上的目的,因为这些样本将具有更大的权重,并且在引导过程中更有可能被选择。

但是,它有两个问题。

首先,这种随机性会使结果有很大不同。就像,如果我设置参数n_estimator = 1并使用DecisionTreeRegressor作为基础学习者,它将得到与直接使用DecisionTreeRegressor相同的结果,而直接使用random_state则结果是不同的。设置不同的DecisionTreeRegressor也将得到不同的结果。这意味着它不健壮。我想知道是否有解决方案来减少不稳固性。我知道算法本身是正确的。

第二,实际上,sample_weight具有参数AdaBoostRegressor,这意味着它可以根据样本权重直接学习假设,而无需进行引导。我知道作为一个框架,sample_weight可能会涉及更多的基础学习者,而这些学习者没有使用此引导抽样的AdaBoostClassifier。但是,这带来了一个新问题。为什么_boost不使用这种引导采样方法?

参考sklearn中weight_boosting.py中的{{1}}函数。

0 个答案:

没有答案