Spec-Zone.ru › scikit-learn

IsolationForest

classsklearn.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)[source]

Алгоритм Isolation Forest.

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

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

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

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

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

Дополнительную информацию можно найти в Руководстве пользователя.

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

Параметры:
n_estimatorsint, default=100

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

max_samples“auto”, int or float, default=”auto”

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

  • Если int, то извлекается max_samples образцов.
  • Если float, то извлекается max_samples * X.shape[0] образцов.
  • Если “auto”, то max_samples=min(256, n_samples).

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

contamination‘auto’ or float, default=’auto’

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

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

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

max_featuresint or float, default=1.0

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

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

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

bootstrapbool, default=False

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

n_jobsint, default=None

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

random_stateint, RandomState instance or None, default=None

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

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

verboseint, default=0

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

warm_startbool, default=False

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

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

Атрибуты:
estimator_ExtraTreeRegressor instance

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

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

estimators_list of ExtraTreeRegressor instances

Набор обученных под-оценок.

estimators_features_list of ndarray

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

estimators_samples_list of ndarray

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

max_samples_int

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

offset_float

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

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

n_features_in_int

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

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

feature_names_in_ndarray of shape (n_features_in_,)

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

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

См. также

sklearn.covariance.EllipticEnvelope

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

sklearn.svm.OneClassSVM

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

sklearn.neighbors.LocalOutlierFactor

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

Примечания

Реализация основана на ансамбле ExtraTreeRegressor. Максимальная глубина каждого дерева установлена в ceil(log_2(n)), где \(n\) - количество образцов, используемых для построения дерева (см. (Liu et al., 2008) для получения дополнительной информации).

Ссылки

[1]

Liu, Fei Tony, Ting, Kai Ming и Zhou, Zhi-Hua. «Isolation forest». Data Mining, 2008. ICDM’08. Восьмая международная конференция IEEE.

[2]

Liu, Fei Tony, Ting, Kai Ming и Zhou, Zhi-Hua. «Isolation-based anomaly detection». ACM Transactions on Knowledge Discovery from Data (TKDD) 6.1 (2012): 3.

Примеры

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

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

decision_function(X)[source]

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

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

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

Параметры:
X{массив, разреженная матрица} формы (n_samples, n_features)

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

Возвращает:
scoresмассив формы (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)
propertyestimators_samples_

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

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

Примечание: список пересоздается при каждом вызове свойства для уменьшения занимаемой объектом памяти, не храня данные выборки. Таким образом, получение свойства может быть медленнее, чем ожидалось.

fit(X, y=None, sample_weight=None)[source]

Подгонка оценщика.

Параметры:
X{массив, разреженная матрица} формы (n_samples, n_features)

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

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

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

sample_weightмассив формы (n_samples,), по умолчанию=None

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

Возвращает:
selfобъект

Подготовленный оценщик.

fit_predict(X, y=None, **kwargs)[source]

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

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

Параметры:
X{массив, разреженная матрица} формы (n_samples, n_features)

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

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

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

**kwargsdict

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

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

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

1 для инлиров, -1 для выбросов.

get_metadata_routing()[source]

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

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

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

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

MetadataRouter, содержащий информацию о маршрутизации.

get_params(deep=True)[source]

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

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

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

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

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

predict(X)[source]

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

Параметры:
X{массив, разреженная матрица} формы (n_samples, n_features)

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

Возвращает:
is_inlierмассив формы (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)[source]

Обратная аномальная оценка, определённая в оригинальной статье.

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

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

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

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

Возвращает:
scoresndarray of shape (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[source]

Запрос метаданных, переданных методу fit.

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

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

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

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

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

Примечание

Этот метод актуален только если этот оценщик используется в качестве под-оценщика мета-оценщика, например, внутри Pipeline. В противном случае он не имеет эффекта.

Параметры:
sample_weightstr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED

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

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

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

set_params(**params)[source]

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

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

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

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

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

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

Примеры из галереи

Пример IsolationForest

Сравнение алгоритмов обнаружения аномалий для выявления выбросов на наборах данных-игрушках

Оценка оценщиков обнаружения выбросов

© 2007–2025 The scikit-learn developers
Licensed under the 3-clause BSD License.
https://scikit-learn.org/1.6/modules/generated/sklearn.ensemble.IsolationForest.html

Spec-Zone.ru

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