Spec-Zone.ru › scikit-learn

GradientBoostingRegressor

classsklearn.ensemble.GradientBoostingRegressor(*, loss='squared_error', learning_rate=0.1, n_estimators=100, subsample=1.0, criterion='deprecated', min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_depth=3, min_impurity_decrease=0.0, init=None, random_state=None, max_features=None, alpha=0.9, verbose=0, max_leaf_nodes=None, warm_start=False, validation_fraction=0.1, n_iter_no_change=None, tol=0.0001, ccp_alpha=0.0)[исходный код]

Градиентный бустинг для регрессии.

Этот оценщик строит аддитивную модель последовательными этапами в прямом направлении; он позволяет оптимизировать произвольные дифференцируемые функции потерь. На каждом этапе дерево регрессии обучается на отрицательном градиенте заданной функции потерь.

HistGradientBoostingRegressor — значительно более быстрый вариант этого алгоритма для наборов данных среднего и большого размера (n_samples >= 10_000); он также поддерживает монотонные ограничения.

Подробнее см. в руководстве пользователя.

Параметры:
loss{‘squared_error’, ‘absolute_error’, ‘huber’, ‘quantile’}, default=’squared_error’

Функция потерь, подлежащая оптимизации. ‘squared_error’ обозначает квадратичную ошибку регрессии. ‘absolute_error’ обозначает абсолютную ошибку регрессии и является устойчивой функцией потерь. ‘huber’ сочетает обе функции. ‘quantile’ позволяет выполнять квантильную регрессию (для указания квантиля используйте alpha). Пример квантильной регрессии для построения интервалов предсказания с помощью loss='quantile' см. в разделе Интервалы предсказания для регрессии с градиентным бустингом.

learning_ratefloat, default=0.1

Скорость обучения уменьшает вклад каждого дерева в learning_rate. Между learning_rate и n_estimators существует компромисс. Значения должны находиться в диапазоне [0.0, inf).

n_estimatorsint, default=100

Число выполняемых этапов бустинга. Градиентный бустинг достаточно устойчив к переобучению, поэтому большое число этапов обычно обеспечивает более высокое качество. Значения должны находиться в диапазоне [1, inf).

subsamplefloat, default=1.0

Доля выборок, используемых для обучения отдельных базовых оценщиков. Если значение меньше 1.0, применяется стохастический градиентный бустинг. subsample взаимодействует с параметром n_estimators. Выбор subsample < 1.0 приводит к уменьшению дисперсии и увеличению смещения. Значения должны находиться в диапазоне (0.0, 1.0].

criterion{‘friedman_mse’, ‘squared_error’}, default=’friedman_mse’

Этот параметр не влияет на результат.

Добавлено в версии 0.18.

Устарело начиная с версии 1.9: criterion устарел и будет удалён в версии 1.11.

min_samples_splitint or float, default=2

Минимальное число выборок, необходимое для разделения внутреннего узла:

  • Если задано целое число, значения должны находиться в диапазоне [2, inf).
  • Если задано число с плавающей точкой, значения должны находиться в диапазоне (0.0, 1.0], а min_samples_split будет ceil(min_samples_split * n_samples).

Изменено в версии 0.18: Добавлена поддержка дробных значений.

min_samples_leafint or float, default=1

Минимальное число выборок, необходимое для того, чтобы узел был листом. Точка разделения на любой глубине будет рассматриваться, только если в каждой из левой и правой ветвей останется не менее min_samples_leaf обучающих выборок. Это может сглаживать модель, особенно в задаче регрессии.

  • Если задано целое число, значения должны находиться в диапазоне [1, inf).
  • Если задано число с плавающей точкой, значения должны находиться в диапазоне (0.0, 1.0), а min_samples_leaf будет ceil(min_samples_leaf * n_samples).

Изменено в версии 0.18: Добавлена поддержка дробных значений.

min_weight_fraction_leaffloat, default=0.0

Минимальная взвешенная доля общей суммы весов (для всех входных выборок), необходимая для того, чтобы узел был листом. Если sample_weight не задан, все выборки имеют одинаковый вес. Значения должны находиться в диапазоне [0.0, 0.5].

max_depthint or None, default=3

Максимальная глубина отдельных оценщиков регрессии. Максимальная глубина ограничивает число узлов в дереве. Настройте этот параметр для достижения наилучшего качества; оптимальное значение зависит от взаимодействия входных переменных. Если задано None, узлы расширяются, пока все листья не станут чистыми или пока все листья не будут содержать меньше выборок, чем min_samples_split. Если задано целое число, значения должны находиться в диапазоне [1, inf).

min_impurity_decreasefloat, default=0.0

Узел будет разделён, если это разделение уменьшает неоднородность на величину, большую или равную данному значению. Значения должны находиться в диапазоне [0.0, inf).

Уравнение для взвешенного уменьшения неоднородности имеет следующий вид:

N_t / N * (impurity - N_t_R / N_t * right_impurity
                    - N_t_L / N_t * left_impurity)

где N — общее число выборок, N_t — число выборок в текущем узле, N_t_L — число выборок в левом дочернем узле, а N_t_R — число выборок в правом дочернем узле.

N, N_t, N_t_R и N_t_L относятся к взвешенной сумме, если передан sample_weight.

Добавлено в версии 0.19.

initestimator or ‘zero’, default=None

Объект оценщика, используемый для вычисления начальных предсказаний. init должен предоставлять методы fit и predict. Если задано ‘zero’, начальные значения предсказаний устанавливаются равными нулю. По умолчанию используется DummyEstimator, который предсказывает либо среднее значение целевой переменной (для loss=’squared_error’), либо квантиль для остальных функций потерь.

random_stateint, RandomState instance or None, default=None

Управляет случайным начальным значением, передаваемым каждому оценщику Tree на каждой итерации бустинга. Кроме того, управляет случайной перестановкой признаков при каждом разделении (подробнее см. раздел «Примечания»). Также управляет случайным разбиением обучающих данных для получения валидационного набора, если n_iter_no_change не равно None. Передайте целое число, чтобы обеспечить воспроизводимость результатов при нескольких вызовах функции. См. глоссарий.

max_features{‘sqrt’, ‘log2’}, int or float, default=None

Число признаков, рассматриваемых при поиске наилучшего разделения:

  • Если задано целое число, значения должны находиться в диапазоне [1, inf).
  • Если задано число с плавающей точкой, значения должны находиться в диапазоне (0.0, 1.0], а число признаков, рассматриваемых при каждом разделении, будет max(1, int(max_features * n_features_in_)).
  • Если задано значение «sqrt», то max_features=sqrt(n_features).
  • Если задано значение «log2», то max_features=log2(n_features).
  • Если задано None, то max_features=n_features.

Выбор max_features < n_features приводит к уменьшению дисперсии и увеличению смещения.

Примечание: поиск разделения не прекращается, пока не будет найдено хотя бы одно допустимое разбиение выборок узла, даже если для этого придётся фактически проверить более max_features признаков.

alphafloat, default=0.9

Альфа-квантиль функции потерь huber и функции квантильных потерь. Применяется только при loss='huber' или loss='quantile'. Значения должны находиться в диапазоне (0.0, 1.0).

verboseint, default=0

Включает подробный вывод. Если задано значение 1, периодически выводятся сведения о ходе обучения и качестве (чем больше деревьев, тем реже вывод). Если значение больше 1, сведения о ходе обучения и качестве выводятся для каждого дерева. Значения должны находиться в диапазоне [0, inf).

max_leaf_nodesint, default=None

Строит деревья с max_leaf_nodes в порядке наилучшего первого. Наилучшие узлы определяются относительным уменьшением неоднородности. Значения должны находиться в диапазоне [2, inf). Если задано None, число листовых узлов не ограничено.

warm_startbool, default=False

Если задано значение True, повторно используется результат предыдущего вызова fit и в ансамбль добавляются новые оценщики; в противном случае предыдущий результат просто сбрасывается. См. глоссарий.

validation_fractionfloat, default=0.1

Доля обучающих данных, выделяемая в валидационный набор для досрочного прекращения обучения. Значения должны находиться в диапазоне (0.0, 1.0). Используется только если n_iter_no_change задано целым числом.

Добавлено в версии 0.20.

n_iter_no_changeint, default=None

n_iter_no_change используется для определения необходимости досрочного прекращения обучения, если оценка на валидационных данных не улучшается. По умолчанию задано None, что отключает досрочное прекращение обучения. Если задано число, validation_fraction обучающих данных выделяется в качестве валидационных, а обучение прекращается, если оценка на валидационных данных не улучшается на протяжении всех предыдущих n_iter_no_change итераций. Значения должны находиться в диапазоне [1, inf). См. Досрочное прекращение обучения при градиентном бустинге.

Добавлено в версии 0.20.

tolfloat, default=1e-4

Допуск для досрочного прекращения обучения. Если функция потерь не улучшается как минимум на tol в течение n_iter_no_change итераций (если задано число), обучение прекращается. Значения должны находиться в диапазоне [0.0, inf).

Добавлено в версии 0.20.

ccp_alphanon-negative float, default=0.0

Параметр сложности, используемый для обрезки методом минимальной стоимости и сложности. Будет выбрано поддерево с наибольшей стоимостью сложности, меньшей ccp_alpha. По умолчанию обрезка не выполняется. Значения должны находиться в диапазоне [0.0, inf). Подробнее см. раздел Обрезка методом минимальной стоимости и сложности. Пример такой обрезки см. в разделе Постобрезка деревьев решений методом обрезки по стоимости сложности.

Добавлено в версии 0.22.

Атрибуты:
n_estimators_int

Число оценщиков, выбранное при досрочном прекращении обучения (если указано n_iter_no_change). В противном случае этому атрибуту присваивается n_estimators.

n_trees_per_iteration_int

Число деревьев, строящихся на каждой итерации. Для регрессоров оно всегда равно 1.

Добавлено в версии 1.4.0.

feature_importances_ndarray of shape (n_features,)

Важность признаков на основе неоднородности.

oob_improvement_ndarray of shape (n_estimators,)

Улучшение функции потерь на вневыборочных данных по сравнению с предыдущей итерацией. oob_improvement_[0] — это улучшение функции потерь на первом этапе по сравнению с оценщиком init. Доступно только при subsample < 1.0.

oob_scores_ndarray of shape (n_estimators,)

Полная история значений функции потерь на вневыборочных данных. Доступно только при subsample < 1.0.

Добавлено в версии 1.3.

oob_score_float

Последнее значение функции потерь на вневыборочных данных. Оно совпадает с oob_scores_[-1]. Доступно только при subsample < 1.0.

Добавлено в версии 1.3.

train_score_ndarray of shape (n_estimators,)

i-я оценка train_score_[i] — это значение функции потерь модели на итерации i для обучающей выборки. Если subsample == 1, это значение функции потерь на обучающих данных.

init_estimator

Оценщик, формирующий начальные предсказания. Задаётся аргументом init.

estimators_ndarray of DecisionTreeRegressor of shape (n_estimators, 1)

Набор обученных вложенных оценщиков.

n_features_in_int

Число признаков, обнаруженных во время вызова fit.

Добавлено в версии 0.24.

feature_names_in_ndarray of shape (n_features_in_,)

Названия признаков, обнаруженных во время вызова fit. Определяется только в том случае, если X имеет названия признаков, представленные строками.

Добавлено в версии 1.0.

max_features_int

Определённое значение max_features.

См. также

HistGradientBoostingRegressor

Дерево классификации с градиентным бустингом на основе гистограмм.

sklearn.tree.DecisionTreeRegressor

Дерево решений для регрессии.

sklearn.ensemble.RandomForestRegressor

Случайный лес для регрессии.

Примечания

При каждом разделении признаки всегда переставляются в случайном порядке. Поэтому найденное наилучшее разделение может различаться даже при одинаковых обучающих данных и max_features=n_features, если улучшение MSE одинаково для нескольких разделений, рассмотренных при поиске наилучшего разделения. Чтобы обеспечить детерминированное поведение во время обучения, необходимо зафиксировать random_state.

Литература

J. Friedman, Greedy Function Approximation: A Gradient Boosting Machine, The Annals of Statistics, Vol. 29, No. 5, 2001.

  1. Friedman, Stochastic Gradient Boosting, 1999

T. Hastie, R. Tibshirani and J. Friedman. Elements of Statistical Learning Ed. 2, Springer, 2009.

Примеры

>>> from sklearn.datasets import make_regression
>>> from sklearn.ensemble import GradientBoostingRegressor
>>> from sklearn.model_selection import train_test_split
>>> X, y = make_regression(random_state=0)
>>> X_train, X_test, y_train, y_test = train_test_split(
...     X, y, random_state=0)
>>> reg = GradientBoostingRegressor(random_state=0)
>>> reg.fit(X_train, y_train)
GradientBoostingRegressor(random_state=0)
>>> reg.predict(X_test[1:2])
array([-61.1])
>>> reg.score(X_test, y_test)
0.4...

Подробный пример применения GradientBoostingRegressor для обучения ансамбля слабых моделей прогнозирования см. в разделе Регрессия с градиентным бустингом.

apply(X)[исходный код]

Применяет деревья ансамбля к X и возвращает индексы листьев.

Добавлено в версии 0.17.

Параметры:
X{array-like, sparse matrix} of shape (n_samples, n_features)

Входные выборки. Внутри dtype будет преобразован к dtype=np.float32. Если передана разреженная матрица, она будет преобразована в разреженную csr_array.

Возвращает:
X_leavesarray-like of shape (n_samples, n_estimators)

Для каждой точки данных x из X и каждого дерева ансамбля возвращает индекс листа, в который попадает x в каждом оценщике.

fit(X, y, sample_weight=None, monitor=None)[исходный код]

Обучает модель градиентного бустинга.

Параметры:
X{array-like, sparse matrix} of shape (n_samples, n_features)

Входные выборки. Внутри данные будут преобразованы к dtype=np.float32, а если передана разреженная матрица — к разреженной csr_array.

yarray-like of shape (n_samples,)

Целевые значения (строки или целые числа в задаче классификации, вещественные числа в задаче регрессии). В задаче классификации метки должны соответствовать классам.

sample_weightarray-like of shape (n_samples,), default=None

Веса выборок. Если задано None, все выборки имеют одинаковый вес. При поиске разделения в каждом узле игнорируются варианты, в которых вес дочернего узла равен нулю или отрицателен. В задаче классификации также игнорируются разделения, при которых вес какого-либо отдельного класса в одном из дочерних узлов становится отрицательным.

monitorcallable, default=None

После каждой итерации monitor вызывается с текущей итерацией, ссылкой на оценщик и локальными переменными _fit_stages в качестве именованных аргументов callable(i, self, locals()). Если вызываемый объект возвращает True, процесс обучения останавливается. Monitor можно использовать для разных задач, например для вычисления оценок на отложенных данных, досрочного прекращения обучения, интроспекции модели и создания снимков состояния.

Возвращает:
selfobject

Обученный оценщик.

get_metadata_routing()[исходный код]

Возвращает маршрутизацию метаданных этого объекта.

Информацию о работе механизма маршрутизации см. в руководстве пользователя.

Возвращает:
routingMetadataRequest

Объект MetadataRequest, содержащий сведения о маршрутизации.

get_params(deep=True)[исходный код]

Возвращает параметры этого оценщика.

Параметры:
deepbool, default=True

Если значение равно True, возвращает параметры этого оценщика и содержащихся в нём подобъектов, которые являются оценщиками.

Возвращает:
paramsdict

Названия параметров и соответствующие им значения.

predict(X)[исходный код]

Предсказывает целевые значения регрессии для X.

Параметры:
X{array-like, sparse matrix} of shape (n_samples, n_features)

Входные выборки. Внутри данные будут преобразованы к dtype=np.float32, а если передана разреженная матрица — к разреженной csr_array.

Возвращает:
yndarray of shape (n_samples,)

Предсказанные значения.

score(X, y, sample_weight=None)[исходный код]

Возвращает коэффициент детерминации на тестовых данных.

Коэффициент детерминации \(R^2\) определяется как \((1 - \frac{u}{v})\), где \(u\) — сумма квадратов остатков ((y_true - y_pred)** 2).sum(), а \(v\) — общая сумма квадратов ((y_true - y_true.mean()) ** 2).sum(). Наилучшая возможная оценка равна 1.0; она также может быть отрицательной (поскольку модель может работать сколь угодно плохо). Константная модель, всегда предсказывающая ожидаемое значение y без учёта входных признаков, получит оценку \(R^2\), равную 0.0.

Параметры:
Xarray-like of shape (n_samples, n_features)

Тестовые выборки. Для некоторых оценщиков это может быть предварительно вычисленная матрица ядра или список универсальных объектов формы (n_samples, n_samples_fitted), где n_samples_fitted — число выборок, использованных при обучении оценщика.

yarray-like of shape (n_samples,) or (n_samples, n_outputs)

Истинные значения для X.

sample_weightarray-like of shape (n_samples,), default=None

Веса выборок.

Возвращает:
scorefloat

\(R^2\) для self.predict(X) относительно y.

Примечания

Оценка \(R^2\), используемая при вызове score для регрессора, начиная с версии 0.23 использует multioutput='uniform_average', чтобы соответствовать значению по умолчанию для r2_score. Это влияет на метод score всех регрессоров с несколькими выходами (кроме MultiOutputRegressor).

set_fit_request(*, monitor:bool|None|str='$UNCHANGED$', sample_weight:bool|None|str='$UNCHANGED$') → GradientBoostingRegressor[исходный код]

Настройте, следует ли запрашивать передачу метаданных методу fit.

Обратите внимание, что этот метод имеет значение только в том случае, если данный оцениватель используется как подоцениватель внутри метаоценивателя, а маршрутизация метаданных включена с помощью enable_metadata_routing=True (см. sklearn.set_config). О том, как работает механизм маршрутизации, см. в Руководстве пользователя.

Для каждого параметра доступны следующие варианты:

  • True: метаданные запрашиваются и передаются в fit, если они предоставлены. Если метаданные не предоставлены, запрос игнорируется.
  • False: метаданные не запрашиваются, и метаоцениватель не будет передавать их в fit.
  • None: метаданные не запрашиваются, и метаоцениватель выдаст ошибку, если пользователь их предоставит.
  • str: метаданные следует передавать метаоценивателю с указанным псевдонимом вместо исходного имени.

Значение по умолчанию (sklearn.utils.metadata_routing.UNCHANGED) сохраняет существующий запрос. Это позволяет изменить запрос для одних параметров, не меняя его для других.

Добавлено в версии 1.3.

Параметры:
monitorstr, True, False или None, по умолчанию sklearn.utils.metadata_routing.UNCHANGED

Маршрутизация метаданных для параметра monitor в fit.

sample_weightstr, True, False или None, по умолчанию sklearn.utils.metadata_routing.UNCHANGED

Маршрутизация метаданных для параметра sample_weight в fit.

Возвращает:
selfобъект

Обновленный объект.

set_params(**params)[исходный код]

Задайте параметры этого оценивателя.

Метод работает как с простыми оценивателями, так и с вложенными объектами (например, Pipeline). Параметры последних имеют вид <component>__<parameter>, что позволяет обновлять каждый компонент вложенного объекта.

Параметры:
**paramsdict

Параметры оценивателя.

Возвращает:
selfэкземпляр оценивателя

Экземпляр оценивателя.

set_score_request(*, sample_weight:bool|None|str='$UNCHANGED$') → GradientBoostingRegressor[исходный код]

Настройте, следует ли запрашивать передачу метаданных методу score.

Обратите внимание, что этот метод имеет значение только в том случае, если данный оцениватель используется как подоцениватель внутри метаоценивателя, а маршрутизация метаданных включена с помощью enable_metadata_routing=True (см. sklearn.set_config). О том, как работает механизм маршрутизации, см. в Руководстве пользователя.

Для каждого параметра доступны следующие варианты:

  • True: метаданные запрашиваются и передаются в score, если они предоставлены. Если метаданные не предоставлены, запрос игнорируется.
  • False: метаданные не запрашиваются, и метаоцениватель не будет передавать их в score.
  • None: метаданные не запрашиваются, и метаоцениватель выдаст ошибку, если пользователь их предоставит.
  • str: метаданные следует передавать метаоценивателю с указанным псевдонимом вместо исходного имени.

Значение по умолчанию (sklearn.utils.metadata_routing.UNCHANGED) сохраняет существующий запрос. Это позволяет изменить запрос для одних параметров, не меняя его для других.

Добавлено в версии 1.3.

Параметры:
sample_weightstr, True, False или None, по умолчанию sklearn.utils.metadata_routing.UNCHANGED

Маршрутизация метаданных для параметра sample_weight в score.

Возвращает:
selfобъект

Обновленный объект.

staged_predict(X)[исходный код]

Предсказывает целевое значение регрессии для X на каждом этапе.

Этот метод позволяет выполнять мониторинг (например, определять ошибку на тестовой выборке) после каждого этапа.

Параметры:
X{массивоподобный объект, разреженная матрица} формы (n_samples, n_features)

Входные выборки. Внутри они будут преобразованы в dtype=np.float32, а если передана разреженная матрица — в разреженный csr_array.

Выдает:
yгенератор ndarray формы (n_samples,)

Предсказанное значение для входных выборок.

Примеры из галереи

Влияние сложности модели

Ранняя остановка в градиентном бустинге

Интервалы предсказания для регрессии с градиентным бустингом

Регрессия с градиентным бустингом

Отдельные предсказания регрессоров и регрессора голосования

© 2007–2026 The scikit-learn developers
Licensed under the 3-clause BSD License.
https://scikit-learn.org/1.9/modules/generated/sklearn.ensemble.GradientBoostingRegressor.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API