Isolation Forest
Алгоритм IsolationForest
используется для определения аномалий в данных.
Он "изолирует" наблюдения, случайно выбирая признак и затем случайно выбирая
значение между максимумом и минимумом признака, по которому он будет
разделять колонку. Чем больше наблюдение отличается, тем выше вероятность,
что оно будет "изолировано". Модель таким образом строит несколько деревьев,
по совокупности которых определяются аномальные точки в датасете. Алгоритм
возвращает бинарную колонку anomaly
и колонку outlierScore
c оценкой
вероятности того, что запись является аномальной.
Синтаксис команды
fit [isolation_forest | if]
[num_estimators=<num_estimators>]
[max_samples=<max_samples>]
[max_features=<max_features>]
[bootstrap=<bootstrap>]
[contamination=<contamination>]
from <features> [into <modelname>]
Параметры
Обязательные параметры:
- features — список полей, для которых требуется подсчитать IF оценку и
найти аномальные точки. Список задается перечислением, например:
from field1 field2
.
Опциональные параметры:
- num_estimators - количество деревьев в ансамбле. Значение по умолчанию
num_estimators=100
. - max_features - максимальное количество признаков, взятых из датасета для обучения одного дерева. Если параметр задаётся в интервале [0.0; 1.0], то он определяет долю от всех признаков. Если max_features задается целым числом >1, то он определяет точное количество признаков. Значение по умолчанию
max_features=1.0
. - max_samples - максимальное количество записей датасета для обучения одного дерева. Если параметр задаётся в интервале [0.0; 1.0], то он определяет долю от всех признаков. Если
max_samples
задается целым числом >1, то он определяет точное количество признаков. Значение по умолчаниюmax_samples=1.0
. - bootstrap - если
bootstrap=true
, то обучение каждого дерева проходит на подмножестве объектов в датасете, которое каждый раз выбирается случайно. Значение по умолчаниюbootstrap=false
. contamination - доля аномальных записей в датасете. Значение по умолчаниюcontamination=0.1
. - modelname — название модели, с которым она будет сохранена в кэше. Чтобы сохранить модель в постоянное хранилище моделей для дальнейшего использования, используйте команду save.
Пример использования
В демонстрационных данных с параметрами работы электрической сети определим наличие аномалий в значениях мощностей.
Текст запроса
| fsget path=demo_electrical_grid
| sample 0.1
| fields tau1, tau2, tau3, tau4, p1, p2, p3, p4, stab, stabf
| fit if from p1, p2, p3, p4 into if_model
| fields - if
| head 100
Описание запроса
- Команда
fsget
загружает данные из хранилища признаков. - Команда
sample 0.1
оставляет 10% от всех загруженных строк. Это сделано для ускорения обучения (всего в обучающей выборке 10 000 строк). - Команда
fields
оставляет только поля с длительностью переходного процесса (tau1
,tau2
,tau3
,tau4
), потребляемой и производимой мощностью(p1
,p2
,p3
,p4
), коэффициент стабильности (stab
) и оценку стабильности сети (stabf
). - Команда
fit
выполняет обучение модели isolation forest и временно сохраняет модель под названиемif_model
. - Команда
head 100
выводит первые 100 строк таблицы после обучения.
Результат запроса
После выполнения запроса будет создана дополнительные колонки outlierScore
и anomaly
, в которой будут записаны результаты поиска аномалий алгоритмом.
В результате выполнения запроса могут быть созданы дополнительные служебные поля с информацией об обученной модели или другими показателями.