IsolationForest#

класс sklearn.ensemble.IsolationForest(*, n_estimators=100, max_samples='auto', contamination='auto', max_features=1.0, bootstrap=False, n_jobs=None, random_state=None, verbose=0, warm_start=False)[источник]#

Алгоритм Isolation Forest.

Возвращает оценку аномальности каждого образца с использованием алгоритма IsolationForest

IsolationForest 'изолирует' наблюдения, случайным образом выбирая признак, а затем случайным образом выбирая значение разделения между максимальным и минимальным значениями выбранного признака.

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

Эта длина пути, усредненная по лесу таких случайных деревьев, является мерой нормальности и нашей функцией принятия решений.

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

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

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

Параметры:
n_estimatorsint, по умолчанию=100

Количество базовых оценщиков в ансамбле.

max_samples“auto”, int или float, по умолчанию=”auto”

Количество образцов для выборки из X для обучения каждого базового оценщика.

  • Если int, то нарисовать max_samples выборки.

  • Если float, то нарисовать max_samples * X.shape[0] выборки.

  • Если "auto", то max_samples=min(256, n_samples).

Если max_samples больше, чем количество предоставленных выборок, все выборки будут использованы для всех деревьев (без выборки).

contamination'auto' или float, по умолчанию='auto'

Уровень загрязнения набора данных, т.е. доля выбросов в наборе данных. Используется при обучении для определения порога на оценках образцов.

  • Если ‘auto’, порог определяется как в оригинальной статье.

  • Если float, загрязнение должно быть в диапазоне (0, 0.5].

Изменено в версии 0.22: Значение по умолчанию для contamination изменено с 0.1 на 'auto'.

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

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

  • Если int, то нарисовать max_features признаков.

  • Если float, то нарисовать max(1, int(max_features * n_features_in_)) признаков.

Примечание: использование числа с плавающей точкой меньше 1.0 или целого числа меньше количества признаков включит субдискретизацию признаков и приведёт к увеличению времени выполнения.

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

Если True, отдельные деревья обучаются на случайных подмножествах обучающих данных, выбранных с заменой. Если False, выполняется выборка без замены.

n_jobsint, default=None

Количество параллельно выполняемых задач для fit. None означает 1 если только не в joblib.parallel_backend контекст. -1 означает использование всех процессоров. См. Глоссарий для получения дополнительной информации.

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

Управляет псевдослучайностью выбора признака и значений разделения для каждого шага ветвления и каждого дерева в лесу.

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

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

Управляет подробностью вывода процесса построения дерева.

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

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

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

Атрибуты:
estimator_ExtraTreeRegressor экземпляр

Шаблон базового оценщика, используемый для создания коллекции обученных подоценщиков.

Добавлено в версии 1.2: base_estimator_ был переименован в estimator_.

estimators_список экземпляров ExtraTreeRegressor

Коллекция обученных суб-оценщиков.

estimators_features_list of ndarray

Подмножество выбранных признаков для каждого базового оценщика.

estimators_samples_list of ndarray

Подмножество выбранных выборок для каждого базового оценщика.

max_samples_int

Фактическое количество образцов.

offset_float

Смещение, используемое для определения решающей функции из исходных оценок. Мы имеем соотношение: decision_function = score_samples - offset_. offset_ определяется следующим образом. Когда параметр загрязнения установлен в “auto”, смещение равно -0.5, так как оценки нормальных объектов близки к 0, а оценки выбросов близки к -1. Когда предоставлен параметр загрязнения, отличный от “auto”, смещение определяется таким образом, чтобы получить ожидаемое количество выбросов (образцов с функцией решения < 0) при обучении.

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

n_features_in_int

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

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

feature_names_in_ndarray формы (n_features_in_,)

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

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

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

sklearn.covariance.EllipticEnvelope

Объект для обнаружения выбросов в наборе данных с гауссовым распределением.

sklearn.svm.OneClassSVM

Неконтролируемое обнаружение выбросов. Оценка поддержки многомерного распределения. Реализация основана на libsvm.

sklearn.neighbors.LocalOutlierFactor

Обнаружение выбросов без учителя с использованием локального фактора выбросов (LOF).

Примечания

Реализация основана на ансамбле ExtraTreeRegressor. Максимальная глубина каждого дерева установлена в ceil(log_2(n)) где \(n\) это количество образцов, используемых для построения дерева (см. [1] для получения дополнительных деталей).

Ссылки

[1]

F. T. Liu, K. M. Ting and Z. -H. Zhou. “Isolation forest.” 2008 Eighth IEEE International Conference on Data Mining (ICDM), 2008, стр. 413-422.

[2]

F. T. Liu, K. M. Ting and Z. -H. Zhou. «Обнаружение аномалий на основе изоляции.» ACM Transactions on Knowledge Discovery from Data (TKDD) 6.1 (2012): 1-39.

Примеры

>>> from sklearn.ensemble import IsolationForest
>>> X = [[-1.1], [0.3], [0.5], [100]]
>>> clf = IsolationForest(random_state=0).fit(X)
>>> clf.predict([[0.1], [0], [90]])
array([ 1,  1, -1])

Пример использования изолирующего леса для обнаружения аномалий см. в Пример IsolationForest.

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

Средний показатель аномалии X для базовых классификаторов.

Аномальный балл входной выборки вычисляется как средний аномальный балл деревьев в лесу.

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

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

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

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

Оценка аномальности входных образцов. Чем ниже, тем более аномальным. Отрицательные оценки представляют выбросы, положительные — нормальные точки.

Примечания

Метод decision_function может быть распараллелен путем установки контекста joblib. Это по своей сути НЕ использует n_jobs параметр, инициализированный в классе, который используется во время fit. Это связано с тем, что вычисление оценки может быть быстрее без параллелизации для небольшого количества выборок, например, для 1000 выборок или меньше. Пользователь может установить количество заданий в контексте joblib, чтобы контролировать количество параллельных заданий.

from joblib import parallel_backend

# Note, we use threading here as the decision_function method is
# not CPU bound.
with parallel_backend("threading", n_jobs=4):
    model.decision_function(X)
fit(X, y=None, sample_weight=None)[источник]#

Обучить оценщик.

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

Входные образцы. Используйте dtype=np.float32 для максимальной эффективности. Разреженные матрицы также поддерживаются, используйте sparse csc_matrix для максимальной эффективности.

yИгнорируется

Не используется, присутствует для согласованности API по соглашению.

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

Веса образцов. Если None, то образцы имеют одинаковый вес.

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

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

fit_predict(X, y=None, **kwargs)[источник]#

Выполнить подгонку на X и вернуть метки для X.

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

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

Входные образцы.

yИгнорируется

Не используется, присутствует для согласованности API по соглашению.

**kwargsdict

Аргументы, передаваемые в fit.

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

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

1 для нормальных объектов, -1 для выбросов.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Для каждого наблюдения указывает, следует ли его считать выбросом (+1) или нет (-1) в соответствии с обученной моделью.

Примечания

Метод predict может быть распараллелен путем установки контекста joblib. Это по сути НЕ использует n_jobs параметр, инициализированный в классе, который используется во время fit. Это связано с тем, что predict может быть быстрее без параллелизации для небольшого количества образцов, например, для 1000 образцов или меньше. Пользователь может установить количество заданий в контексте joblib, чтобы контролировать количество параллельных заданий.

from joblib import parallel_backend

# Note, we use threading here as the predict method is not CPU bound.
with parallel_backend("threading", n_jobs=4):
    model.predict(X)
score_samples(X)[источник]#

Противоположность оценки аномалии, определенной в оригинальной статье.

Аномальный балл входной выборки вычисляется как средний аномальный балл деревьев в лесу.

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

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

Входные образцы.

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

Оценка аномальности входных выборок. Чем ниже значение, тем более аномальным является объект.

Примечания

Метод функции оценки может быть распараллелен путем установки контекста joblib. Это по своей сути НЕ использует n_jobs параметр, инициализированный в классе, который используется во время fit. Это связано с тем, что вычисление оценки может быть быстрее без параллелизации для небольшого количества выборок, например, для 1000 выборок или меньше. Пользователь может установить количество заданий в контексте joblib, чтобы контролировать количество параллельных заданий.

from joblib import parallel_backend

# Note, we use threading here as the score_samples method is not CPU bound.
with parallel_backend("threading", n_jobs=4):
    model.score(X)
set_fit_request(*, sample_weight: bool | None | str = '$UNCHANGED$') IsolationForest[источник]#

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

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

Варианты для каждого параметра:

  • True: запрашиваются метаданные и передаются fit если предоставлено. Запрос игнорируется, если метаданные не предоставлены.

  • False: метаданные не запрашиваются, и мета-оценщик не передаст их в fit.

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

  • str: метаданные должны передаваться мета-оценщику с этим заданным псевдонимом вместо исходного имени.

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

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

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

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

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

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

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

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

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

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

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

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

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