Обработка категориальных переменных в Isolation Forest

Вопрос или проблема

Isolation Forest широко используется для обнаружения выбросов/аномалий, когда у нас нет меток. Теория заключается в том, что выполнение случайных разбиений в случайных точках и подсчет количества разбиений, необходимых для изоляции признака, поможет определить, является ли экземпляр выбросом.

У меня есть категориальные признаки, и я не уверен, как с ними справляться:

  • Кодирование метками: неправильно представит данные в евклидовом пространстве.
  • One Hot Encoding: добавит больше признаков, и поскольку исходный код сначала выбирает столбцы, а затем значения, это даст нереалистичную вероятность моему алгоритму выбрать закодированные значения one hot.
  • Целевое кодирование не сработает, так как у нас нет цели.

Как правильно кодировать категориальные признаки в Isolation Forest?
Можем ли мы закодировать категориальные признаки в пространстве, которое подходит для алгоритма

Я нашел эту блок-схему от feature labs. Она помогает решить, какое кодирование использовать в зависимости от сценария.
enter image description here

Ответ или решение

Изоляционный лес (Isolation Forest) является популярным алгоритмом для обнаружения аномалий, особенно когда данные не размечены. Основной принцип его работы заключается в выполнении случайных разбиений данных и подсчете количества разбиений, необходимых для изоляции конкретного экземпляра. Чем меньше разбиений требуется для изоляции, тем более вероятно, что данный экземпляр является аномалией. Однако, эффективность Изоляционного леса в значительной степени зависит от того, как представлены данные, и работа с категориальными признаками требует особого внимания.

Теория

Категориальные признаки представляют собой значения, которые не имеют внутренней числовой структуры и не могут быть упорядочены естественным образом. Например, признак "цвет" может принимать значения "красный", "синий", "зеленый", но их нельзя расположить по величине в числовом пространстве. Поэтому непосредственно вводить такие данные в алгоритм, использующий евклидово расстояние, может создать искажения и неправильные выводы.

Представим три распространенных подхода для кодирования категориальных признаков: Label Encoding, One Hot Encoding и Target Encoding:

  1. Label Encoding: Этот метод присваивает уникальное целое число каждому категориальному значению. Однако такой подход может ввести ошибку в анализ, так как различия между числами будут интерпретироваться алгоритмом как имеющие значение, что неверно для категорий без естественного порядка.

  2. One Hot Encoding: Преобразует каждый категориальный признак в вектор с элементами, которые принимают значение 0 или 1. Хотя это устраняет проблему порядкового искажения, такое кодирование значительно увеличивает размерность данных, что может привести к проблемам с памятью и расчетами, особенно если число категорий велико.

  3. Target Encoding: Это метод, который заменяет категориальные признаки статистикой целевой переменной. В контексте задачи без меток этот метод неприменим, так как отсутствует целевая переменная для вычисления среднего.

Применение

Так как ни один из традиционных методов кодирования не подходит оптимально для работы с Изоляционным лесом, необходимо рассмотреть альтернативные подходы и применить их к задаче аномалий:

Гибридные и обобщенные методы кодирования:

  1. Embeddings: Нейронные сети могут использоваться для преобразования категориальных переменных в плотные вектора фиксированной длины. Этот метод уже нашел успешное применение в обработке естественного языка и может быть адаптирован для категориальных признаков. Embeddings позволяют сохранять некоторую информацию о взаимосвязи между категориями, занимая при этом меньше памяти по сравнению с One Hot Encoding.

  2. Frequency Encoding: Этот подход заключается в использовании частоты появления той или иной категории в данных. Таким образом, каждая категория представляется числом, которое отражает, насколько часто она встречается в датасете. Это может быть полезно для анализа Изоляционным лесом, так как редкие категории могут больше соответствовать аномалиям.

  3. Entropy Encoding: Позволяет оценить "неопределенность" информации, содержащейся в категориальном признаке, и может быть использован как дополнительный признак, отражая различия в распределении категорий.

Примеры и дополнительные подходы

Как пример, представим себе датасет, содержащий информацию о покупках в интернет-магазине. Один из признаков – "категория продукта". Вместо использования традиционных one-hot кодирования или label кодирования, мы можем применить frequency encoding, чтобы отразить, как часто каждая категория продукта появляется в истории покупок. Это более эффективно учитывает различия в частоте использования, чем случайное разбиение.

Также полезной может оказаться комбинация разных методов, например, использование combination encoding, который объединяет возможности frequency encoding и target encoding (если есть частичная разметка данных).

Заключение и рекомендации

На основе приведенного анализа, предлагаем следующий подход для работы с категориальными переменными в Изоляционном лесу без меток:

  1. Начните с анализа данных: Определите уникальные и часто встречающиеся категории.

  2. Выберите метод кодирования на основе характера данных: Если категории редки и уникальны, рассмотрите использование frequency encoding. Если необходима возможность обучать модель с учетом некоторых взаимосвязей, рассмотрите использование embeddings.

  3. Проведите оценку и тестирование: Протестируйте несколько методов на подвыборках данных для оценки их эффективности в обнаружении аномалий.

Следуя данным рекомендациям, можно повысить эффективность и точность алгоритма Изоляционного леса при работе с категориальными признаками.

Оцените материал
Добавить комментарий

Капча загружается...