Обработка категориальных признаков
Категориальные признаки (categorical features) - это признаки, принимающие одно из дискретных значений, такие как профессия человека или город, в котором он родился. Такие признаки очень часто встречаются на практике. Частным случаем категориальных признаков являются бинарные признаки (binary features), принимающие всего два значения, такие как семейное положение человека или индикатор, были ли у человека просрочки по кредитам.
Модель машинного обучения ожидает на входе вектор, состоящий только из вещественных признаков. Если бинарный признак мы можем представить в вещественном виде, закодировав категории цифрами 0 и 1, то в случае признака, описывающего несколько категорий, возможны различные варианты кодировок, которые мы рассмотрим далее.
Порядковое кодирование
В порядковом кодировании (ordinal encoding) катег ория заменяется её номером. Рассмотрим кодировку признака [профессия]. Пусть для простоты она принимает всего 4 возможных значения: программист, художник, дизайнер и системный администратор. В порядковом кодировании мы заменяем профессии их номерами:
значение | номер |
---|---|
программист | 0 |
художник | 1 |
дизайнер | 2 |
системный администратор | 3 |
Этот вид кодирования не рекомендуется применять на практике, поскольку метод машинного обучения впоследствии будет считать, что движение в направлении 0,1,2,3 будет соответствовать возрастанию какой-то реально существующей характеристики, которой в действительности нет, поскольку нумерация была произвольной. Также в нашем примере метод на основе близости численных значений будет считать, что программист ближе по смыслу к художнику, чем к системному администратору, что в действительности не так.
Кодирование частотами
При частотном кодировании (frequency encoding) значение каждой категории заменяется на частоту встречаемости этой категории. Пусть, например, у нас 7 человек, среди которых два программиста, три системных администратора, один дизайнер и художник. Для этого случая частотное кодирование будет выглядеть так:
значение | кодировка |
---|---|
программист | 2/7 |
системный администратор | 3/7 |
системный администратор | 3/7 |
дизайнер | 1/7 |
художник | 1/7 |
системный администратор | 3/7 |
программист | 2/7 |
Обратим внимание, что кодирование неоднозначно для дизайнера и художника, которые встретились одинаковое число раз.
Полезность кодировки определяется тем, насколько частота встречаемости категорий связана с целевой переменной.