Относительно загрязнения для изолированного леса,
Если вы тренируетесь для обычных случаев (все значения) , вы должны поставить нольдля загрязнения. Если вы не укажете это, загрязнение будет равно 0,1 (для версии 0.2).
Ниже приведен простой код, демонстрирующий это:
1 - Импорт библиотек
import numpy as np
import matplotlib.pyplot as plt
from sklearn.ensemble import IsolationForest
rng = np.random.RandomState(42)
2- Создать 2D-набор данных
X = 0.3 * rng.randn(1000, 2)
3- Обучить модель iForest и предсказать выбросы
clf = IsolationForest(random_state=rng, contamination=0)
clf.fit(X)
y_pred_train = clf.predict(X)
4- Печать # аномалий
print(sum(y_pred_train==-1))
Это даст вам 0 аномалий . Теперь, если вы измените загрязнение на 0,15, программа указывает 150 аномалий из того же набора данных, который у вас уже был (тот же из-за RandomState (42) ).
[Список литературы]:
1 Лю, Фэй Тони, Тин, Кай Мин и Чжоу, Чжи Хуа. "Изоляция леса". Data Mining, 2008. ICDM'08. Восьмая Международная конференция IEEE
2 Лю, Фэй Тони, Тинг, Кай Мин и Чжоу, Чжи Хуа. «Обнаружение аномалий на основе изоляции». Транзакции ACM по обнаружению знаний из данных (TKDD), (2012)