machnine-learning

Эмбеддинг категориальных признаков

12 января 2023 г.

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

Эмбеддинг категориальных признаков - это процесс представления категориальных данных в виде векторов (или чисел). В машинном обучении часто встречаются категориальные данные, такие как тексты, адреса, имена и т.д. Категориальные данные не могут быть непосредственно использованы в алгоритмах машинного обучения, поскольку они являются нечисловыми.

Простое кодирование

Самым простым примером эмбеддинга категориальных переменных является использование объекта с несколькими категориями, например "тип фруктов", и преобразование каждой категории в числовое значение. Например, "яблоко" может быть 1, "банан" может быть 2 и так далее. Это числовое представление позволяет использовать категориальную информацию алгоритмами машинного обучения, которые могут находить взаимосвязи между переменными и целевыми значениями. Т.е. мы должны преобразовать нечисловые переменные в числа.

Пример числового кодирования категориальной переменной

One-hot кодирование

Другой наиболее распространенный метод - one-hot encoding. Этот метод называется "one-hot", потому что он создает отдельный двоичный столбец для каждой уникальной категории в данных. Если категория наблюдения и категория нового двоичного столбца совпадают, то ставится единица, если нет, то ноль. Например, если набор данных имеет три категории - "красный", "зеленый" и "синий" - будут созданы три отдельных столбца, в каждом из которых будет 1 в строках, соответствующих цвету наблюдения, и 0 во всех остальных строках. Это позволяет вводить категориальные данные в модели машинного обучения.

Пример one-hot encoding

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

Эмбеддинг

Эмбеддинги — это возможность уменьшения размерности таких признаков.

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

Например, мы могли бы представить дни недели с помощью 4 чисел:

Пример представления дней недели в виде векторов

Здесь дни недели, которые идут друг за другом "похожи", но сильно отличаются, если между ними разрыв (понедельник и суббота, например). Это игрушечный пример, но на практике мы получаем аналогичные наборы, которые сохраняют информацию и взаимосвязи между категориями.

Таким образом, вместо 7ми новых столбцов, соответствующим дням недели, мы можем представить дни недели всего 4мя столбцами.

Выводы

В этой статье я попытался простым языком объяснить способы обработки категориальных данных для целей построения ML-моделей. Использование эмбедингов - отличный способ представить категориальные переменные и уменьшить размерность категорий. В следующих постах я рассмотрю реализацию каждого метода такого кодирования на языке python.


Вернуться