Кодирование категориальных признаков: пошаговое руководство на python!

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

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

Существуют два типа категориальных признаков:

  • Порядковые характеристики
  • Номинальные характеристики

Порядковые характеристики:

  • Порядковые элементы - это элементы, которым присуще упорядочение.
  • Например: такие оценки, как "Хорошо", "Плохо".

Номинальные характеристики:

  • Номинальные элементы - это элементы, которые не имеют никакого внутреннего упорядочивания, в отличие от порядковых элементов.
  • Например: имена людей, пол, да или нет.

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

  • Категориальные признаки необходимо закодировать, прежде чем передавать их в модель, потому что многие алгоритмы машинного обучения не поддерживают категориальные признаки в качестве входных данных.
  • Алгоритмы машинного обучения и алгоритмы глубокого обучения будут поддерживать только числовые переменные / количественные переменные.

Методы порядкового кодирования

  • Кодирование метки или порядковое кодирование

Номинальные методы кодирования

  • Частотное кодирование
  • Целевое кодирование
  • Быстрое кодирование
  • Оставить одну кодировку
  • M-оценка кодирования

Загрузите необходимые библиотеки

Порядковое кодирование

1. Порядковое кодирование с использованием OrdinalEncoder в научно-учебном пособии.

OrdinalEncoder используется для присвоения числовых значений категориям в порядковых элементах.

2. Порядковое кодирование с использованием LabelEncoder в научно-учебном пособии.

LabelEncoder также даст тот же результат, что и OrdinalEncoder.

Номинальная кодировка

1. Кодирование частоты

При частотном кодировании каждая из категорий в функции заменяется частотами категорий.

Категория относится к каждому уникальному значению объекта.

  • Частота (категория) = количество значений в этой категории.
  • Размер (данные) = Размер всего набора данных.

Недостаток: если две категории имеют одинаковую частоту, их трудно различить.

2. Целевое кодирование

В целевой кодировке каждая из категорий заменяется средним значением целевой переменной. Целевое кодирование - один из наиболее часто используемых методов категориального кодирования в Kaggle.

  • Целевая кодировка = среднее (цель категории)

Недостаток: данные имеют тенденцию к перегрузке, если некоторые категории имеют малое количество вхождений.

3. Одноразовое кодирование

One Hot Encoding заменяет категории двоичными значениями. Количество объектов «N» создается, если уникальные значения в функции равны «N».

Недостатки:

  • Древовидные алгоритмы не могут применяться к данным с горячим кодированием, поскольку они создают разреженную матрицу.
  • Когда функция содержит слишком много уникальных значений, создается такое количество функций, что может привести к переобучению.

4. Оставьте единственную кодировку.

Leave One Out Encoding (LOOE) очень похожа на Target Encoding, но разница в том, что LOOE не учитывает текущую строку при вычислении среднего целевого.

Недостаток: имеет тенденцию чрезмерно соответствовать данным.

5. Кодирование M-оценки

M-Estimate Encoding также называется аддитивным сглаживанием, которое преодолевает недостатки целевого кодирования (переобучения), учитывая коэффициент сглаживания M для кодирования.

Найдите это сообщение в моем блокноте Kaggle: https://www.kaggle.com/srivignesh/categorical-feature-encoding-techniques

Ссылки:

[1] Патрисио Серда, Гаэль Вароко и Бальазс Кегль, Кодирование подобия для обучения с грязными категориальными переменными (2018).

Свяжитесь со мной в LinkedIn, Twitter!

Удачного машинного обучения !!

Спасибо!