Зачем нам фиктивно кодировать категориальные переменные


22

Я не уверен, почему нам нужно кодировать категориальные переменные. Например, если у меня есть категориальная переменная с четырьмя возможными значениями 0,1,2,3, я могу заменить ее двумя измерениями. Если бы переменная имела значение 0, она имела бы 0,0 в двух измерениях, если бы она имела 3, она имела бы 1,1 в двух измерениях и так далее.

Я не уверен, почему мы должны это сделать?

Ответы:


21

Предположим, ваши четыре категории - это цвета глаз (код): коричневый (1), синий (2), зеленый (3), ореховый (4) - на данный момент гетерохромия игнорирует, фиолетовый, красный, серый и т. Д.

Ни в коем случае (что я могу себе представить) мы не имели бы в виду, что зеленый коричневый или карий = 2 × синий, как подразумевают наши коды, даже если 3 = 3 × 1 и 4 = 2 × 2 .знак равно3×знак равно2×3знак равно3×14знак равно2×2

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

Обновление: ваш пример двух переменных для четырех категорий не соответствует моему пониманию использования термина «фиктивный код», который обычно влечет за собой замену категорий (скажем, 4) на k - 1 фиктивных переменных (сортировка наблюдений по категориям):КК-1

id  category  dummy1 dummy2 dummy3
 1         1       1      0      0
 2         1       1      0      0
 3         2       0      1      0
 4         2       0      1      0
 5         3       0      0      1
 6         3       0      0      1
 7         4       0      0      0
 8         4       0      0      0

Здесь категория 4 является справочной категорией, предполагая, что в вашей модели есть константа, например:

Yзнак равноβ0+β1d1+β2d2+β3d3+ε

где - это среднее значение y, когда категория = 4, а термины β, связанные с каждым манекеном, указывают, на какую величину y изменяется от β 0 для этой категории.β0YβYβ0

Если у вас нет постоянного ( ) члена в модели, то вам нужен еще один «фиктивный» предиктор (возможно, реже называемый «индикаторными переменными»), в результате манекены будут вести себя как константы модели для каждой категории. :β0

Yзнак равноβ1d1+β2d2+β3d3+β4d4+ε

Таким образом, это позволило бы решить проблему создания бессмысленных количественных отношений между кодами категорий, которые я упомянул сначала, но почему бы не использовать кодирование user12331, как вы предлагаете? user12331-кодирование кандидата A:

id  category   code1  code2
 1         1       0      ?
 2         1       0      ?
 3         2       1      ?
 4         2       1      ?
 5         3       ?      0
 6         3       ?      0
 7         4       ?      1
 8         4       ?      1

Вы совершенно правы, отметив, что можно представить 4 значения, используя 2 двоичные переменные (т.е. двухбитовые). К сожалению, один подход к этому (code1 для категорий 1 и 2 и code2 для категорий 3 и 4) оставляет двусмысленность, обозначенную вопросительными знаками: какие значения будут идти туда ?!

Ну, а как насчет второго подхода, назовите его «user12331-кандидат в кодирование B»:

id  category   code1  code2
 1         1       0      0
 2         1       0      0
 3         2       0      1
 4         2       0      1
 5         3       1      0
 6         3       1      0
 7         4       1      1
 8         4       1      1

Там! Нет двусмысленности, верно? Правильно! К сожалению, все, что делает это кодирование, представляет числовые величины 1–4 (или 0–3) в двоичной записи , что оставляет нетронутой проблему присвоения этих нежелательных количественных соотношений категориям.

Следовательно, нужна другая схема кодирования.

β


5
Хотя этот ответ демонстрирует причину, по которой мы не можем использовать одну переменную (то есть, что нам действительно нужно «какое-то кодирование»), он (пока) не объясняет, почему мы не можем сделать это, скажем, с двумя переменными, так как ОП предлагает в вопросе.
Glen_b

@Glen_b Спасибо. Я надеюсь, что мое обновление помогло обратиться.
Алексис

2
Обратите внимание, что 2 двоичных переменных достаточно для представления 4 категорий [(0,0), (0,1), (1,0), (1,1)], но не является подходящим способом для фиктивного кода для анализа. OP, кажется, кодирует неправильно.
Эллис Валентинер

@ user12202013 Да. Как в моем последнем примере.
Алексис

Что, если бы я делал двоичное кодирование, используя две переменные, как предложено OP, но тогда, если целью является предсказание, то непараметрический, нелинейный классификатор / регрессор не будет работать одинаково хорошо?
tool.ish

1

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

Например, представьте, что вы хотите выполнить линейную регрессию, и ваше истинное отображение отображает значения от 0,1 и 2 до 0 и значение от 3 до 1. Вы можете быстро проверить, что нет способа выучить это отображение с помощью линейной регрессии при кодировании ваша категориальная переменная всего с двумя двоичными (просто попробуйте вписать соответствующую плоскость в вашу голову). С другой стороны, когда вы используете кодирование 1-Of-K, это не будет проблемой.


0

Ваша альтернатива также является фиктивным кодом. Вы выбираете фиктивный код, который наилучшим образом выражает отношение к вашей зависимой переменной. Например, цвет может быть выражен как 1 из n, или вы можете превратиться в числовые компоненты rgb, или вы можете классифицировать: girly / muddy / ... 1 из n в основном означает, что каждый экземпляр изучается отдельно, что хорошо, если нет взаимосвязи. ... но там, где есть связь, вы тратите свои данные ... вам нужно отдельно оценить коэффициент для каждого экземпляра категории ... рассматривать работу как категориальную переменную. Вы можете классифицировать как сектор рынка и стаж работы.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.