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 больше, чем количество предоставленных образцов, все образцы будут использоваться для всех деревьев (без выборки).
- Если int, то извлекается
- 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 или целого числа меньше, чем количество признаков, позволит использовать выборку признаков и приведет к более длительному времени выполнения.
- Если int, то извлекаются
- 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_
ExtraTreeRegressorinstance -
Шаблон дочерней оценки, используемый для создания набора обученных под-оценок.
Добавлен в версии 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.
-
estimator_
См. также
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
-
Экземпляр оценщика.
Примеры из галереи
© 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