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)[исходный код]

Алгоритм Isolation Forest.

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

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

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

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

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

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

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

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

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

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

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

  • Если задано целое число, выбираются max_samples образцов.
  • Если задано число с плавающей точкой, выбираются max_samples * X.shape[0] образцов.
  • Если задано «auto», используется max_samples=min(256, n_samples).

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

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

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

  • Если задано ‘auto’, порог определяется так же, как в исходной статье.
  • Если задано число с плавающей точкой, contamination должно находиться в диапазоне (0, 0.5].

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

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

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

  • Если задано целое число, выбирается max_features признаков.
  • Если задано число с плавающей точкой, выбирается max(1, int(max_features * n_features_in_)) признаков.

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

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

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

n_jobsint, по умолчанию=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_список ndarray

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

estimators_samples_список 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

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

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

feature_names_in_ndarray формы (n_features_in_,)

Названия признаков, обнаруженных во время обучения. Определяется только в том случае, если 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 и Z. -H. Zhou. «Isolation forest». 2008 Eighth IEEE International Conference on Data Mining (ICDM), 2008, с. 413-422.

[2]

F. T. Liu, K. M. Ting и 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])

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

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

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

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

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

Параметры:
X{array-like, разреженная матрица} формы (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, разреженная матрица} формы (n_samples, n_features)

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

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

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

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

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

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

Обученный оцениватель.

fit_predict(X, y=None, **kwargs)[исходный код]

Обучает модель на X и возвращает метки для X.

Для выбросов возвращает -1, для внутренних наблюдений — 1.

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

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

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

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

**kwargsdict

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

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

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

1 для внутренних наблюдений, -1 для выбросов.

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

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

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

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

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

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

get_params(deep=True)[исходный код]

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

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

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

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

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

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

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

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

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

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

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

Примечания

Метод predict можно распараллелить, задав контекст joblib. При этом параметр n_jobs, инициализированный в классе и используемый во время fit, НЕ применяется. Это связано с тем, что для небольшого числа образцов, например 1000 или меньше, predict может работать быстрее без распараллеливания. Пользователь может задать число заданий в контексте 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, разреженная матрица} формы (n_samples, n_features)

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

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

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

Примечания

Метод score можно распараллелить, задав контекст 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.

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

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

set_params(**params)[исходный код]

Задать параметры этого оценивателя.

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

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

Параметры оценивателя.

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

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

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

Пример IsolationForest

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

Оценка оценивателей для обнаружения выбросов

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

Spec-Zone.ru

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