Ответ 1
Кажется, у вас много вопросов, позвольте мне постараться ответить один на один, насколько мне известно. - Как это устроено? → Он работает на том факте, что характер выбросов в любом наборе данных, который является выбросами, "мало и отличается", что довольно сильно отличается от типичного алгоритма на основе кластеризации или расстояния. На верхнем уровне это работает на логике, что выбросы делают меньше шагов, чтобы "изолировать" сравнение с "нормальной" точкой в любом наборе данных. Для этого это то, что делает IF. Предположим, у вас есть набор обучающих данных X с n точками данных, каждая из которых имеет m характеристик. В процессе обучения IF создает деревья изоляции (деревья двоичного поиска) для различных функций. Для обучения у вас есть 3 параметра для настройки, один - количество деревьев изоляции ('n_estimators' в sklearn_IsolationForest), второй - количество выборок ('max_samples' в sklearn_IsolationForest), а третий - количество объектов, которые нужно нарисовать из X для обучения каждого. базовая оценка (max_features в sklearn_IF). 'max_sample' - это число случайных выборок, которые он выберет из исходного набора данных для создания деревьев изоляции.
Во время фазы тестирования он находит длину пути тестируемой точки из всех обученных деревьев изоляции и находит среднюю длину пути. Чем больше длина пути, тем больше нормальная точка и наоборот. На основе средней длины пути. он вычисляет оценку аномалии, decision_function из sklearn_IF может быть использован, чтобы получить это. Для sklearn_IF, ниже балл, более аномальный образец. На основании оценки аномалии вы можете решить, является ли данный образец аномальным или нет, установив правильное значение загрязнения в объекте sklearn_IF. по умолчанию значение загрязнения составляет 0,1, которое можно настроить для определения порога. Количество загрязнения набора данных, т.е. доля выбросов в наборе данных.
Параметры настройки Обучение → 1. n_estimators, 2. max_samples, 3.max_features. Тестирование → 1. загрязнение