GradientBoostingRegressor
- classsklearn.ensemble.GradientBoostingRegressor(*, loss='squared_error', learning_rate=0.1, n_estimators=100, subsample=1.0, criterion='friedman_mse', 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)[source]
-
Градиентный бустинг для регрессии.
Этот оценщик строит аддитивную модель поэтапно; он позволяет оптимизировать произвольные дифференцируемые функции потерь. На каждом этапе регрессионное дерево подгоняется под отрицательный градиент данной функции потерь.
HistGradientBoostingRegressorявляется гораздо более быстрым вариантом этого алгоритма для средних и больших наборов данных (n_samples >= 10_000) и поддерживает монотонные ограничения.Подробнее в Руководстве пользователя.
- Параметры:
-
- loss{‘squared_error’, ‘absolute_error’, ‘huber’, ‘quantile’}, default=’squared_error’
-
Функция потерь, которую необходимо оптимизировать. ‘squared_error’ относится к квадратичной ошибке для регрессии. ‘absolute_error’ относится к абсолютной ошибке регрессии и является устойчивой функцией потерь. ‘huber’ представляет собой комбинацию двух. ‘quantile’ допускает квантильную регрессию (используйте
alphaдля указания квантиля). См. Prediction Intervals for Gradient Boosting Regression для примера, демонстрирующего квантильную регрессию для создания прогнозных интервалов с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’
-
Функция для измерения качества разбиения. Поддерживаемые критерии: «friedman_mse» для среднеквадратичной ошибки с оценкой улучшения по Фридману, «squared_error» для среднеквадратичной ошибки. Значение по умолчанию «friedman_mse» обычно является лучшим, поскольку в некоторых случаях может обеспечить лучшую аппроксимацию.
Добавлено в версии 0.18.
- min_samples_splitint or float, default=2
-
Минимальное количество выборок, необходимых для разбиения внутреннего узла:
- Если int, значения должны быть в диапазоне
[2, inf). - Если float, значения должны быть в диапазоне
(0.0, 1.0]иmin_samples_splitбудетceil(min_samples_split * n_samples).
Изменено в версии 0.18: Добавлены значения float для дробей.
- Если int, значения должны быть в диапазоне
- min_samples_leafint or float, default=1
-
Минимальное количество выборок, которые должны быть в узле листа. Точка разбиения на любой глубине будет рассматриваться только в том случае, если она оставит не менее
min_samples_leafобучающих выборок в каждой из левой и правой ветвей. Это может привести к сглаживанию модели, особенно в регрессии.- Если int, значения должны быть в диапазоне
[1, inf). - Если float, значения должны быть в диапазоне
(0.0, 1.0)иmin_samples_leafбудетceil(min_samples_leaf * n_samples).
Изменено в версии 0.18: Добавлены значения float для дробей.
- Если int, значения должны быть в диапазоне
- min_weight_fraction_leaffloat, default=0.0
-
Минимальная взвешенная доля от общей суммы весов (всех входных выборок), которая должна быть в узле листа. Выборки имеют одинаковый вес, если sample_weight не указан. Значения должны быть в диапазоне
[0.0, 0.5]. - max_depthint or None, default=3
-
Максимальная глубина отдельных оценок регрессии. Максимальная глубина ограничивает количество узлов в дереве. Настройте этот параметр для достижения наилучшей производительности; оптимальное значение зависит от взаимодействия входных переменных. Если None, то узлы разворачиваются до тех пор, пока все листья не станут чистыми или пока все листья не будут содержать менее min_samples_split выборок. Если int, значения должны быть в диапазоне
[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. Передайте целое число для воспроизводимого вывода при нескольких вызовах функции. См. Glossary. - max_features{‘sqrt’, ‘log2’}, int or float, default=None
-
Количество признаков, которые необходимо учитывать при поиске наилучшего разбиения:
- Если int, значения должны быть в диапазоне
[1, inf). - Если float, значения должны быть в диапазоне
(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признаков. - Если int, значения должны быть в диапазоне
- alphafloat, default=0.9
-
Альфа-квантиль функции потерь huber и функции потерь quantile. Только если
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, повторно используйте решение предыдущего вызова для подгонки и добавьте больше оценщиков к ансамблю, в противном случае просто сотрите предыдущее решение. См. the Glossary. - 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). См. Early stopping in Gradient Boosting.Добавлено в версии 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, если улучшение критерия идентично для нескольких разбиений, перечисленных во время поиска наилучшего разбиения. Для получения детерминированного поведения во время подгонки,random_stateдолжен быть зафиксирован.Ссылки
J. Friedman, Greedy Function Approximation: A Gradient Boosting Machine, The Annals of Statistics, Vol. 29, No. 5, 2001.
- 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...]) >>> reg.score(X_test, y_test) 0.4...
Для подробного примера использования
GradientBoostingRegressorдля подгонки ансамбля слабых предсказательных моделей, пожалуйста, обратитесь к Регрессия градиентного бустинга.- apply(X)[source]
-
Применить деревья в ансамбле к X, вернуть индексы листьев.
Добавлено в версии 0.17.
- Параметры:
-
- X{array-like, sparse matrix} of shape (n_samples, n_features)
-
Входные образцы. Внутренне его тип данных будет преобразован в
dtype=np.float32. Если предоставлена разреженная матрица, она будет преобразована в разреженнуюcsr_matrix.
- Возвращает:
-
- X_leavesarray-like of shape (n_samples, n_estimators)
-
Для каждой точки данных x в X и для каждого дерева в ансамбле вернуть индекс листа, в котором заканчивается x в каждом оценщике.
- propertyfeature_importances_
-
Важность признаков на основе чистоты.
Чем выше, тем важнее признак. Важность признака вычисляется как (нормализованное) общее уменьшение критерия, вызванное этим признаком. Это также известно как важность Джини.
Предупреждение: важность признаков на основе чистоты может быть вводящей в заблуждение для признаков с высокой кардинальностью (много уникальных значений). В качестве альтернативы см.
sklearn.inspection.permutation_importance.- Возвращает:
-
- feature_importances_ndarray of shape (n_features,)
-
Значения этого массива суммируются до 1, если только все деревья не являются деревьями с одним узлом, состоящими только из корневого узла, в этом случае это будет массив нулей.
- fit(X, y, sample_weight=None, monitor=None)[source]
-
Обучить модель градиентного бустинга.
- Параметры:
-
- X{array-like, sparse matrix} of shape (n_samples, n_features)
-
Входные выборки. Внутренне он будет преобразован в
dtype=np.float32и если предоставлена разреженная матрица, то в разреженнуюcsr_matrix. - yarray-like of shape (n_samples,)
-
Целевые значения (строки или целые числа в классификации, действительные числа в регрессии). Для классификации метки должны соответствовать классам.
- sample_weightarray-like of shape (n_samples,), default=None
-
Веса выборок. Если None, то выборки имеют одинаковый вес. Разбиения, которые создадут дочерние узлы с чистым нулевым или отрицательным весом, игнорируются при поиске разбиения в каждом узле. В случае классификации разбиения также игнорируются, если они приведут к тому, что любой отдельный класс будет иметь отрицательный вес в любом дочернем узле.
- monitorcallable, default=None
-
Монитор вызывается после каждой итерации с текущей итерацией, ссылкой на оценщик и локальными переменными
_fit_stagesв качестве именованных аргументовcallable(i, self, locals()). Если вызываемый объект возвращаетTrue, процедура подгонки прекращается. Монитор может использоваться для различных целей, таких как вычисление оценок, удерживаемых вне выборки, преждевременная остановка, интроспекция модели и создание снимков.
- Возвращает:
-
- selfobject
-
Обученный оценщик.
- get_metadata_routing()[source]
-
Получить маршрутизацию метаданных этого объекта.
Пожалуйста, проверьте Руководство пользователя о том, как работает механизм маршрутизации.
- Возвращает:
-
- routingMetadataRequest
-
A
MetadataRequestинкапсулирующий информацию о маршрутизации.
- get_params(deep=True)[source]
-
Получить параметры для этого оценщика.
- Параметры:
-
- deepbool, default=True
-
Если True, вернет параметры для этого оценщика и содержащихся вложенных объектов, которые являются оценщиками.
- Возвращает:
-
- paramsdict
-
Имена параметров, сопоставленные с их значениями.
- predict(X)[source]
-
Предсказать целевую переменную регрессии для X.
- Параметры:
-
- X{array-like, sparse matrix} of shape (n_samples, n_features)
-
Входные выборки. Внутренне он будет преобразован в
dtype=np.float32и если предоставлена разреженная матрица, то в разреженнуюcsr_matrix.
- Возвращает:
-
- yndarray of shape (n_samples,)
-
Предсказанные значения.
- score(X, y, sample_weight=None)[source]
-
Возвращает коэффициент детерминации предсказания.
Коэффициент детерминации \(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\) of
self.predict(X)относительноy.
Примечания
Оценка \(R^2\), используемая при вызове
scoreдля регрессора, используетmultioutput='uniform_average'начиная с версии 0.23, чтобы сохранить согласованность с значением по умолчаниюr2_score. Это влияет на методscoreвсех многовыходных регрессоров (за исключениемMultiOutputRegressor).
- set_fit_request(*, monitor:bool|None|str='$UNCHANGED$', sample_weight:bool|None|str='$UNCHANGED$') GradientBoostingRegressor[source]
-
Запрос метаданных, переданных в метод
fit.Обратите внимание, что этот метод актуален только в том случае, если
enable_metadata_routing=True(см.sklearn.set_config). Пожалуйста, см. Руководство пользователя о том, как работает механизм маршрутизации.Варианты для каждого параметра:
-
True: запрашиваются метаданные, и передаются вfit, если предоставлены. Запрос игнорируется, если метаданные не предоставлены. -
False: метаданные не запрашиваются, и мета-оценщик не будет передавать их вfit. -
None: метаданные не запрашиваются, и мета-оценщик выдаст ошибку, если пользователь предоставит их. -
str: метаданные должны быть переданы мета-оценщику с этим заданным псевдонимом вместо исходного имени.
Значение по умолчанию (
sklearn.utils.metadata_routing.UNCHANGED) сохраняет существующий запрос. Это позволяет изменять запрос для некоторых параметров, а не для других.Добавлен в версии 1.3.
Примечание
Этот метод актуален только в том случае, если этот оценщик используется в качестве под-оценщика мета-оценщика, например, используется внутри
Pipeline. В противном случае он не оказывает никакого эффекта.- Параметры:
-
- monitorstr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED
-
Маршрутизация метаданных для параметра
monitorвfit. - sample_weightstr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED
-
Маршрутизация метаданных для параметра
sample_weightвfit.
- Возвращает:
-
- selfobject
-
Обновлённый объект.
-
- set_params(**params)[source]
-
Установить параметры этого оценщика.
Метод работает как с простыми оценщиками, так и с вложенными объектами (такими как
Pipeline). Последние имеют параметры в форме<component>__<parameter>, так что можно обновлять каждый компонент вложенного объекта.- Параметры:
-
- **paramsdict
-
Параметры оценщика.
- Возвращает:
-
- selfэкземпляр оценщика
-
Экземпляр оценщика.
- set_score_request(*, sample_weight:bool|None|str='$UNCHANGED$') GradientBoostingRegressor[source]
-
Запрос метаданных, переданных в метод
score.Обратите внимание, что этот метод актуален только в том случае, если
enable_metadata_routing=True(см.sklearn.set_config). Пожалуйста, см. Руководство пользователя о том, как работает механизм маршрутизации.Варианты для каждого параметра:
-
True: запрашиваются метаданные, и передаются вscore, если предоставлены. Запрос игнорируется, если метаданные не предоставлены. -
False: метаданные не запрашиваются, и мета-оценщик не будет передавать их вscore. -
None: метаданные не запрашиваются, и мета-оценщик выдаст ошибку, если пользователь предоставит их. -
str: метаданные должны быть переданы мета-оценщику с этим заданным псевдонимом вместо исходного имени.
Значение по умолчанию (
sklearn.utils.metadata_routing.UNCHANGED) сохраняет существующий запрос. Это позволяет изменять запрос для некоторых параметров, а не для других.Добавлен в версии 1.3.
Примечание
Этот метод актуален только в том случае, если этот оценщик используется в качестве под-оценщика мета-оценщика, например, используется внутри
Pipeline. В противном случае он не оказывает никакого эффекта.- Параметры:
-
- sample_weightstr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED
-
Маршрутизация метаданных для параметра
sample_weightвscore.
- Возвращает:
-
- selfobject
-
Обновлённый объект.
-
- staged_predict(X)[source]
-
Предсказать целевую переменную регрессии на каждом этапе для X.
Этот метод позволяет отслеживать (т.е. определять ошибку на тестовом наборе) после каждого этапа.
- Параметры:
-
- X{array-like, sparse matrix} of shape (n_samples, n_features)
-
Входные образцы. Внутренне он будет преобразован в
dtype=np.float32, а если предоставлена разреженная матрица, то в разреженнуюcsr_matrix.
- Выходные данные:
-
- ygenerator of ndarray of shape (n_samples,)
-
Предсказанное значение входных образцов.
Примеры из галереи
© 2007–2025 The scikit-learn developers
Licensed under the 3-clause BSD License.
https://scikit-learn.org/1.6/modules/generated/sklearn.ensemble.GradientBoostingRegressor.html