GradientBoostingClassifier#

класс sklearn.ensemble.GradientBoostingClassifier(*, потеря='log_loss', learning_rate=0.1, n_estimators=100, subsample=1.0, критерий='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, 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) и поддерживает монотонные ограничения.

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

Параметры:
потеря{'log_loss', 'exponential'}, по умолчанию='log_loss'

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

learning_ratefloat, по умолчанию=0.1

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

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

n_estimatorsint, по умолчанию=100

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

subsamplefloat, по умолчанию=1.0

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

критерий{‘friedman_mse’, ‘squared_error’}, по умолчанию=‘friedman_mse’

Функция для измерения качества разделения. Поддерживаемые критерии: ‘friedman_mse’ для среднеквадратичной ошибки с оценкой улучшения по Фридману, ‘squared_error’ для среднеквадратичной ошибки. Значение по умолчанию ‘friedman_mse’ обычно является лучшим, так как может обеспечить лучшее приближение в некоторых случаях.

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

min_samples_splitint или float, по умолчанию=2

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

  • Если int, значения должны быть в диапазоне [2, inf).

  • Если float, значения должны быть в диапазоне (0.0, 1.0] и min_samples_split будет ceil(min_samples_split * n_samples).

Изменено в версии 0.18: Добавлены дробные значения.

min_samples_leafint или float, по умолчанию=1

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

  • Если int, значения должны быть в диапазоне [1, inf).

  • Если float, значения должны быть в диапазоне (0.0, 1.0) и min_samples_leaf будет ceil(min_samples_leaf * n_samples).

Изменено в версии 0.18: Добавлены дробные значения.

min_weight_fraction_leaffloat, по умолчанию=0.0

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

max_depthint или None, по умолчанию=3

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

min_impurity_decreasefloat, по умолчанию=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.

initоценщик или 'zero', по умолчанию=None

Объект-оценщик, используемый для вычисления начальных предсказаний. init должен предоставить fit и predict_proba. Если 'zero', начальные сырые предсказания устанавливаются в ноль. По умолчанию, DummyEstimator используется предсказание априорных вероятностей классов.

random_stateint, экземпляр RandomState или None, по умолчанию=None

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

max_features{'sqrt', 'log2'}, int или float, по умолчанию=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 приводит к уменьшению дисперсии и увеличению смещения.

Истинные (правильные) целевые значения. Требуется y_true > 0. max_features признаков.

verboseint, по умолчанию=0

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

max_leaf_nodesint, default=None

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

warm_startbool, по умолчанию=False

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

validation_fractionfloat, по умолчанию=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, по умолчанию=1e-4

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

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

ccp_alphaнеотрицательное число с плавающей точкой, 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 формы (n_features,)

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

oob_improvement_ndarray формы (n_estimators,)

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

oob_scores_ndarray формы (n_estimators,)

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

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

oob_score_float

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

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

train_score_ndarray формы (n_estimators,)

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

init_estimator

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

estimators_ndarray из DecisionTreeRegressor формы (n_estimators, n_trees_per_iteration_)

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

classes_ndarray формы (n_classes,)

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

n_features_in_int

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

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

feature_names_in_ndarray формы (n_features_in_,)

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

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

n_classes_int

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

Представление вероятностного распределения гауссовской смеси. Этот класс позволяет оценивать параметры распределения гауссовской смеси.int

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

Смотрите также

HistGradientBoostingClassifier

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

sklearn.tree.DecisionTreeClassifier

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

RandomForestClassifier

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

AdaBoostClassifier

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

Примечания

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

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

Возвращает:
X_leavesarray-like формы (n_samples, n_estimators, n_classes)

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

decision_function(X)[источник]#

Вычислить решающую функцию X.

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

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

Возвращает:
scorendarray формы (n_samples, n_classes) или (n_samples,)

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

fit(X, y, sample_weight=None, монитор=None)[источник]#

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

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

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

yarray-like формы (n_samples,)

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

sample_weightarray-like формы (n_samples,), по умолчанию=None

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

мониторвызываемый объект, по умолчанию=None

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

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

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

6332()[источник]#

Получить маршрутизацию метаданных этого объекта.

Пожалуйста, проверьте Руководство пользователя о том, как работает механизм маршрутизации.

Возвращает:
маршрутизацияMetadataRequest

A MetadataRequest Инкапсуляция информации о маршрутизации.

get_params(глубокий=True)[источник]#

Получить параметры для этого оценщика.

Параметры:
глубокийbool, по умолчанию=True

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

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

Имена параметров, сопоставленные с их значениями.

predict(X)[источник]#

Предсказать класс для X.

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

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

Возвращает:
yndarray формы (n_samples,)

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

predict_log_proba(X)[источник]#

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

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

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

Возвращает:
pndarray формы (n_samples, n_classes)

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

Вызывает:
AttributeError

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

predict_proba(X)[источник]#

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

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

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

Возвращает:
pndarray формы (n_samples, n_classes)

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

Вызывает:
AttributeError

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

score(X, y, sample_weight=None)[источник]#

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

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

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

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

yarray-like формы (n_samples,) или (n_samples, n_outputs)

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

sample_weightarray-like формы (n_samples,), по умолчанию=None

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

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

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

set_fit_request(*, монитор: 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.

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

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

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

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

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

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

set_params(**params)[источник]#

Установить параметры этого оценщика.

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

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

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

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

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

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 или None, по умолчанию=sklearn.utils.metadata_routing.UNCHANGED

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

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

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

staged_decision_function(X)[источник]#

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

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

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

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

Возвращает:
scoreгенератор ndarray формы (n_samples, k)

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

staged_predict(X)[источник]#

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

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

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

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

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

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

staged_predict_proba(X)[источник]#

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

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

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

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

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

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