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

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

Номинальный

Классика, это тип категориальной характеристики, о которой люди думают в первую очередь. Это подмножество не имеет внутреннего порядка. Допустим, вы написали опрос, в котором участников опрашивали об их любимой еде из вариантов: «бутерброд», «салат», «макароны» и «суп». Есть четыре варианта, но нет установленного порядка их описания, если вы специально не найдете один и не сообщите об этом участникам (может быть, самый углеводный?).

Чтобы подготовить данные для модели машинного обучения, их обычно очищают с помощью горячего кодирования. В нашем примере это расширит одну функцию до четырех отдельных (от любимая_еда до ff_sandwich, ff_salad, ff_pasta). , ff_soup), и вместо значения «бутерброд» четырем соответствующим значениям присваивается 1 или 0 в зависимости от того, был ли это ответ участника.

Дихотомический/бинарный

Бинарная функция ole. Эта категориальная функция имеет только две категории/опции. Ошибочно считают числовой признак очень и очень часто.

Примерами здесь могут быть свет, включенный или выключенный. Два варианта, другого варианта нет.

Путаница возникает, когда вместо того, чтобы писать «включен» или «выключен», свет представляется в виде двоичных чисел 1 (включен) и 0 (выключен). При первоначальной реакции, поскольку 1 и 0 являются числами, многие люди считают признак числовым и, таким образом, неправильно обращаются с ним при импутации признака.

Однако, если вы помните, что функция является категориальной, самый простой способ представить бинарную функцию в модели — это число 1, представляющее одно значение, и число 0, представляющее другое.

Порядковый номер

Это подмножество представляет категориальные признаки с определенным порядком, но часто нет количественной меры расстояния между различными категориями.

Например, категории «терпимо», «понравилось», «очень понравилось» имеют определенный порядок нарастания положительных эмоций. Однако насколько далеко в эмоциях от «нравится» до «очень нравится»?

Чтобы использовать эти значения в моделях, интуитивная реакция человека обычно такова: «О, раз у них все равно есть порядок, давайте присвоим им возрастающие номера: 4 (нравится), 3 (очень нравится), 2 (нравится), 1 (терпимо). ) и 0 (не понравилось)». Так поддерживается порядок.

Хотя иногда это лучший метод, разработчик данных сначала должен обосновать, что все категории находятся на одинаковом расстоянии друг от друга, чтобы эта логика сохранялась (т. е. «много» — это такое же расстояние от «немного», как и «немного» "от "никого").

Для получения дополнительной информации о том, как обрабатывать порядковые признаки, я нашел очень полезным Пять способов анализа порядковых переменных Карен Грейс-Мартин!

Циклический

Для этих функций существует ранг/порядок, но он зацикливается. Подумайте о круге ценностей.

Наиболее распространенная циклическая переменная, с которой вы столкнетесь, — это время. Не секунды с начала эпохи, а такие функции, как время дня или значение месяца.

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

Если число оставить необработанным со значениями от 0 до 23, модели будет трудно понять, что 23 так же близко к 0, как и к 22. Вместо этого, чтобы очистить циклические переменные, мы преобразуем функцию, чтобы наша модель могла быстро определить отношение. Это делается путем сопоставления значения со значениями sin/cos на окружности.

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

Выше показаны часы, очень похожие на предыдущие, но теперь значения (sin, cos) перечислены в разных точках по краю часов. Итак, мы видим, что 14-й час также находится в (-(3^.5)/2, 0,5), где sin — это значение x, а cos — это значение y. Значения часов начинаются с точки (1, 0) вместо (0, 1).

Изменив функцию hour на две функции, hour_sin и hour_cos, мы сообщаем модели относительное расстояние разных часов друг от друга, избегая проблема 23 часов.

Это также работает для часов в сочетании с минутами и секундами, потому что все эти значения имеют точки на часах. Другими циклическими примерами являются месяцы года и дни недели.

Чтобы получить нужные значения sin и cos, сначала умножьте значение на (2*pi/(max_value + 1)). Первое значение начинается с 0. Для часа дня max_value будет 23, для месяца года будет 11 (январь начинается с 0), для дня недели будет 6.

Затем вы можете использовать библиотеку Python, например math или numpy, для вычисления sin и cos. См. пример ниже от Дэвид Калеко.

Заворачивать

Теперь вы вооружены знаниями, необходимыми для правильной обработки этих категориальных значений! Удачного моделирования!