Spec-Zone.ru › scikit-learn

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 для дробей.

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 для дробей.

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 признаков.

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.

  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...])
>>> 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

Spec-Zone.ru

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