Стохастическое повышение градиента и перекрестная проверка в Python? - PullRequest
0 голосов
/ 18 октября 2019

Я пытаюсь реализовать перекрестную проверку k-кратных значений с использованием повышения градиента в пакете scikit-learn, как показано ниже:

#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 изатем включил его как часть структуры перекрестной проверки. Я понимаю, что производительность повышается благодаря внедрению случайности в выборку, и поэтому я установил параметр подобразца на 0,75 (после некоторой настройки). У меня просто был быстрый вопрос о том, как эта стохастичность работает на практике с перекрестной проверкой? Существует несколько возможных сценариев:

1) Для каждого отдельного дерева, выращенного в последовательности, 75% данных отбираются и используются для создания дерева. Я понимаю, что последующие деревья выращиваются с использованием остатков предыдущих деревьев (пока не будет достигнуто указанное количество узлов), но означает ли это, что каждое дерево использует разные 75%? Или только исходное дерево?

2) 75% данных используются за раз? Это похоже на вышеизложенное, но означает ли это, что в рамках CV это (в данном случае) 75% из 4 сгибов тестируются против 75% от оставшегося сгиба? Или что 75% каждого сгиба берется и затем объединяется. Если это так, предположительно, выборка изменяется между итерациями CV?

3) 75% данных используются за раз и проверяются по сравнению с оставшимися 25%, чтобы дать оценку ошибки?

Я понимаю, что это может варьироваться в зависимости от того, какая ошибка меня интересует (например, ошибка OOB против ошибки перекрестного теста). Я заинтересован в последнем. Может ли кто-нибудь пролить свет на то, какой сценарий наиболее вероятен в реализации Sci-Kit Learn?

Большое спасибо заранее!

...