Как использовать Isolation Forest в Python

Я работаю над обнаружением выбросов в моем немаркированном наборе данных (данные не помечены как выбросы / выбросы), и я использую Isolation Forest в Python (библиотека scikit-learn).
Я хочу получить оценку аномальности данных в моем наборе данных, поэтому я использую следующий код:

      if_model = IsolationForest(max_samples=100)
if_model.fit(dataset)
anomaly_score = if_model.score_samples(dataset)

Однако у меня есть несколько вопросов:

  • Правильна ли предыдущая процедура или я должен разделить свой набор данных на две части, чтобы выполнить подгонку на наборе и получить оценку аномалии на другом наборе?
  • в чем польза метода predict? Как мне его использовать?

1 ответ

Решение
  • Чтобы ответить на ваш первый вопрос, вам не нужно разделять набор данных. Наборы тестов необходимы для контролируемых алгоритмов. Если у вас есть ожидаемый результат для каждой строки данных, вы можете сравнить вывод модели с ожидаемым результатом, чтобы оценить, насколько хорошо модель работает. Эти данные нельзя использовать для соответствия модели, или модель может хорошо соответствовать этим конкретным строкам данных без соответствия другим данным, и вы об этом не узнаете. Однако изолирующий лес - это неконтролируемый алгоритм. У вас нет списка аномальных строк, с которыми можно было бы сравнить результаты изолированного леса, поэтому нет смысла удерживать данные, чтобы убедиться, что модель работает.

  • Чтобы ответить на второй вопрос, predict дает ответ «да» или «нет» (1 или 0) относительно того, является ли каждая строка аномальной в виде массива. score_samplesвозвращает число, показывающее, насколько аномальна каждая строка, но не сообщает вам, является ли она аномальной или нет. См. Документацию по sklearn .

Другие вопросы по тегам