Spec-Zone.ru › scikit-learn

GradientBoostingClassifier

classsklearn.ensemble.GradientBoostingClassifier(*, loss='log_loss', 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, 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)[исходный код]

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

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

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

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

Параметры:
loss{‘log_loss’, ‘exponential’}, default=’log_loss’

Функция потерь, которую необходимо оптимизировать. ‘log_loss’ означает биномиальное и мультиномиальное отклонение, такое же, как в логистической регрессии. Это хороший выбор для классификации с вероятностными выходными данными. При функции потерь ‘exponential’ градиентный бустинг воспроизводит алгоритм AdaBoost.

learning_ratefloat, default=0.1

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

Пример влияния этого параметра и его взаимодействия с subsample см. в разделе Регуляризация градиентного бустинга.

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

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

  • Если значение имеет тип 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_proba. Если задано ‘zero’, начальные необработанные прогнозы устанавливаются в ноль. По умолчанию используется DummyEstimator, предсказывающий априорные вероятности классов.

random_stateint, RandomState instance or None, default=None

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

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

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.

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

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, n_trees_per_iteration_)

Набор обученных подоценивателей. n_trees_per_iteration_ равно 1 для бинарной классификации, в противном случае — n_classes.

classes_ndarray of shape (n_classes,)

Метки классов.

n_features_in_int

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

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

feature_names_in_ndarray of shape (n_features_in_,)

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

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

n_classes_int

Количество классов.

max_features_int

Выведенное значение max_features.

См. также

HistGradientBoostingClassifier

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

sklearn.tree.DecisionTreeClassifier

Классификатор на основе дерева решений.

RandomForestClassifier

Метаоцениватель, обучающий несколько классификаторов на основе деревьев решений на различных подвыборках набора данных и использующий усреднение для повышения точности прогнозирования и контроля переобучения.

AdaBoostClassifier

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

Примечания

При каждом разделении признаки всегда переставляются в случайном порядке. Поэтому найденное наилучшее разделение может различаться даже при одинаковых обучающих данных и 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.

Примеры

В следующем примере показано, как обучить классификатор градиентного бустинга со 100 пнями решений в качестве слабых моделей.

>>> from sklearn.datasets import make_hastie_10_2
>>> from sklearn.ensemble import GradientBoostingClassifier
>>> X, y = make_hastie_10_2(random_state=0)
>>> X_train, X_test = X[:2000], X[2000:]
>>> y_train, y_test = y[:2000], y[2000:]
>>> clf = GradientBoostingClassifier(n_estimators=100, learning_rate=1.0,
...     max_depth=1, random_state=0).fit(X_train, y_train)
>>> clf.score(X_test, y_test)
0.913
apply(X)[исходный код]

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

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

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

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

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

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

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

Вычисляет функцию принятия решения для X.

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

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

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

Функция принятия решения для входных выборок, соответствующая необработанным значениям, предсказанным деревьями ансамбля. Порядок классов соответствует порядку в атрибуте classes_. Регрессия и бинарная классификация возвращают массив формы (n_samples,).

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

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

Возвращает:
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,)

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

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

Предсказывает логарифмы вероятностей классов для X.

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

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

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

Логарифмы вероятностей классов для входных выборок. Порядок классов соответствует порядку в атрибуте classes_.

Вызывает исключения:
AttributeError

Если loss не поддерживает вычисление вероятностей.

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

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

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

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

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

Вероятности классов для входных выборок. Порядок классов соответствует порядку в атрибуте classes_.

Вызывает исключение:
AttributeError

Если loss не поддерживает вероятности.

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

Возвращает точность на предоставленных данных и метках.

В многометочной классификации это точность по подмножеству — строгая метрика, поскольку для каждой выборки требуется правильно предсказать весь набор меток.

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

Тестовые выборки.

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

Истинные метки для X.

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

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

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

Средняя точность self.predict(X) относительно y.

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

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

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

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

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

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

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

Параметры:
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)[исходный код]

Задаёт параметры этого оценщика.

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

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

Параметры оценщика.

Возвращает:
selfestimator instance

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

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

Настраивает, следует ли запрашивать передачу метаданных методу 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, or None, default=sklearn.utils.metadata_routing.UNCHANGED

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

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

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

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

Вычисляет функцию принятия решения для X на каждой итерации.

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

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

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

Генерирует:
scoregenerator of ndarray of shape (n_samples, k)

Функция принятия решения для входных выборок, соответствующая исходным значениям, предсказанным деревьями ансамбля. Классы соответствуют классам в атрибуте classes_. Регрессия и бинарная классификация — частные случаи, для которых выполняется k == 1; в остальных случаях — k==n_classes.

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

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

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

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

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

Генерирует:
ygenerator of ndarray of shape (n_samples,)

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

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

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

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

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

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

Генерирует:
ygenerator of ndarray of shape (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.GradientBoostingClassifier.html

Spec-Zone.ru

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