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.
-
estimator_экземпляр
См. также
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экземпляр оценивателя
-
Экземпляр оценивателя.
Примеры из галереи
© 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