¿Por qué necesitamos codificar variables categóricas de código ficticio?


22

No estoy seguro de por qué necesitamos codificar variables categóricas simuladas. Por ejemplo, si tengo una variable categórica con cuatro valores posibles 0,1,2,3, puedo reemplazarla por dos dimensiones. Si la variable tuviera el valor 0, tendría 0,0 en las dos dimensiones, si tuviera 3, tendría 1,1 en las dos dimensiones y así sucesivamente.

No estoy seguro de por qué necesitamos hacer esto.

Respuestas:


21

Suponga que sus cuatro categorías son los colores de los ojos (código): marrón (1), azul (2), verde (3), avellana (4): por el momento, se identifica heterocromía, violeta, rojo, gris, etc.

De ninguna manera (que puedo imaginar actualmente) podríamos decir que verde marrón, o que avellana azul como implican nuestros códigos, a pesar de que y .= 2 × 3 = 3 × 1 4 = 2 × 2=3×=2×3=3×14 4=2×2

Por lo tanto (a menos que, por alguna razón , deseemos que dicho significado se deslice en nuestros análisis), necesitamos usar algún tipo de codificación. La codificación ficticia es un ejemplo, que elimina tales relaciones de las historias estadísticas que queremos contar sobre el color de los ojos. La codificación de efectos y la codificación de Heckman son otros ejemplos.

Actualización: su ejemplo de dos variables para cuatro categorías no coincide con mi uso comprensivo del término "código ficticio", que generalmente implica reemplazar categorías (digamos 4) con variables ficticias (clasificación de observaciones por categoría):k - 1kk-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

Aquí la categoría 4 es la categoría de referencia, suponiendo que haya una constante en su modelo, como:

y=β0 0+β1re1+β2re2+β3re3+ε

donde es el valor medio de cuando categoría = 4, y los términos asociados con cada ficticio indican en qué cantidad cambia de para esa categoría. y β y β 0β0 0yβyβ0 0

Si no tiene un término constante ( ) en el modelo, entonces necesita un predictor "ficticio" más (quizás menos frecuentemente denominado "variables indicadoras"), en efecto, los dummies se comportan como la constante del modelo para cada categoría:β0 0

y=β1re1+β2re2+β3re3+β4 4re4 4+ε

Por lo tanto, esto trataría el tema de crear relaciones cuantitativas sin sentido entre los códigos de categoría que menciono al principio, pero ¿por qué no usar la codificación user12331 como sugiere? user12331-codificación candidato 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

tiene razón al señalar que uno puede representar 4 valores utilizando 2 variables binarias (es decir, dos bits). Desafortunadamente, un enfoque para esto (código1 para las categorías 1 y 2, y código2 para las categorías 3 y 4) deja la ambigüedad indicada por los signos de interrogación: ¿qué valores irían allí?

Bueno, ¿qué tal un segundo enfoque? Llámelo user12331-codificación candidato 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

¡Allí! No hay ambigüedad, ¿verdad? ¡Derecho! Desafortunadamente, todo lo que hace esta codificación es representar las cantidades numéricas 1–4 (o 0–3) en notación binaria , lo que deja intacto el problema de dar esas relaciones cuantitativas no deseadas a las categorías.

De ahí la necesidad de otro esquema de codificación.

β


55
Si bien esta respuesta demuestra la razón por la que no podemos usar una variable (es decir, que realmente necesitamos 'algún tipo de codificación'), no explica (todavía) por qué no podemos hacerlo con dos variables, como el OP sugiere en la pregunta.
Glen_b -Reinstate Monica

@Glen_b Gracias. Espero que mi actualización haya ayudado a abordar.
Alexis

2
Tenga en cuenta que 2 variables binarias son suficientes para representar 4 categorías [(0,0), (0,1), (1,0), (1,1)], pero no es la forma adecuada de código ficticio para el análisis. El OP parece estar codificando incorrectamente.
Ellis Valentiner

@ user12202013 Sí. Como en mi último ejemplo.
Alexis

¿Qué pasaría si tuviera que hacer una codificación binaria usando dos variables como lo sugiere OP, pero si el objetivo es la predicción, entonces un clasificador / regresor no lineal y no paramétrico funcionaría igual de bien?
tool.ish

1

Mi opinión sobre esta pregunta es que codificar los cuatro estados posibles con solo dos variables es menos expresivo con algunos algoritmos de aprendizaje automático que usar 4 variables.

Por ejemplo, imagine que desea hacer una regresión lineal y su mapeo verdadero mapea los valores 0,1 y 2 a 0 y el valor 3 a 1. Puede verificar rápidamente que no hay forma de aprender este mapeo con regresión lineal al codificar su variable categorial con solo dos binarios (solo trate de ajustar el plano correspondiente en su cabeza). Por otro lado, cuando usa una codificación 1-de-K, esto no sería un problema.


0

Su alternativa también es un código ficticio. Usted elige el código ficticio que mejor expresa la relación con su variable dependiente. Por ejemplo, el color podría expresarse como 1 de n, o podría convertirse en componentes numéricos rgb, o podría categorizar: girly / muddy / ... 1 de n básicamente significa que cada instancia se aprende por separado, lo cual es bueno si no hay una relación. ... pero cuando hay una relación, está desperdiciando sus datos ... debe estimar por separado el coeficiente para cada instancia de la categoría ... considere el trabajo como una variable categórica. Puede volver a clasificar como sector de mercado y antigüedad.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.