Python中的随机梯度增强和交叉验证?

2024-10-02 06:26:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试在scikit学习包中使用梯度增强来实现k-folds交叉验证,如下所示:

#Defining BRT model
BRTreg = sklearn.ensemble.GradientBoostingRegressor(learning_rate=0.01,
                                                    n_estimators=1000,
                                                    max_depth=5,
                                                    min_weight_fraction_leaf =0.05,
                                                    subsample=0.75)

#Including in 5-fold cross validation to examine performance
outputBRT = cross_validate(BRTreg, x_train, y_train.values.ravel(), 
                           cv=5, scoring=['neg_mean_squared_error', 'r2'],
                           return_estimator=True)

如上所示,我首先定义了一个BRT对象,然后将其作为交叉验证框架的一部分。我知道通过在样本选择中实现随机性可以提高性能,因此我将subsample参数设置为0.75(经过一些调整)。我刚才有一个简单的问题,关于这种随机性在交叉验证的实践中是如何工作的?有几种可能的情况:

1)对于按顺序生长的每棵树,75%的数据被采样并用于创建树。我知道后续的树是使用先前树的残差来生长的(直到达到指定的节点数),但这是否意味着每个树使用不同的75%?还是只有最初的树?你知道吗

2)每次折叠使用75%的数据?这与上述类似,但在CV框架中,这是否意味着(在本例中)75%的4个褶皱与75%的剩余褶皱进行了测试?或者每叠的75%被取下来然后合并在一起。如果是这种情况,那么假设样本在CV迭代之间发生变化?你知道吗

3)每次折叠使用75%的数据,并与剩余的25%进行测试,以给出误差估计?你知道吗

我知道这可能会因我感兴趣的错误类型而异(例如OOB错误与交叉折叠测试错误)。我对后者感兴趣。有人能解释一下sci工具包学习实现中最有可能出现的场景吗?你知道吗

非常感谢!你知道吗


Tags: 数据框架错误情况train交叉cv样本

热门问题