Por que precisamos codificar variáveis ​​categóricas

22

Não sei por que precisamos codificar variáveis ​​categóricas. Por exemplo, se eu tenho uma variável categórica com quatro valores possíveis 0,1,2,3, posso substituí-la por duas dimensões. Se a variável tivesse valor 0, teria 0,0 na duas dimensões, se tivesse 3, teria 1,1 na duas dimensões e assim por diante.

Não sei por que precisamos fazer isso?

user12331
fonte

Respostas:

21

Suponha que suas quatro categorias sejam as cores dos olhos (código): marrom (1), azul (2), verde (3), cor de avelã (4) - indicando heterocromia, violeta, vermelho, cinza etc. no momento.

De maneira alguma (que eu possa imaginar no momento), queremos dizer que verde marrom, ou que avelã azul como nossos códigos implicam, mesmo que e .= 2 × 3 = 3 × 1 4 = 2 × 2=3×=2×3=3×14=2×2

Portanto (a menos que, por algum motivo , desejemos que esse significado entre em nossas análises), precisamos usar algum tipo de codificação. A codificação fictícia é um exemplo, que elimina esses relacionamentos das histórias estatísticas que queremos contar sobre a cor dos olhos. Codificação de efeitos e codificação de Heckman são outros exemplos.

Atualização: seu exemplo de duas variáveis ​​para quatro categorias não corresponde ao meu entendimento do uso do termo "código fictício", que normalmente implica a substituição de categorias (digamos 4) por variáveis ​​fictícias (classificação de observações por categoria):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

Aqui a categoria 4 é a categoria de referência, assumindo que há uma constante no seu modelo, como:

y=β0 0+β1d1+β2d2+β3d3+ε

onde é o valor médio de quando categoria = 4, e os termos associados a cada manequim indicam pela quantidade que muda de para essa categoria. y β y β 0β0 0yβyβ0 0

Se você não tiver um termo constante ( ) no modelo, precisará de mais um preditor "fictício" (talvez denominado "variáveis ​​indicadoras" com menos frequência)). Com efeito, os manequins se comportam como constantes do modelo para cada categoria:β0 0

y=β1d1+β2d2+β3d3+β4d4+ε

Portanto, isso contornaria a questão da criação de relações quantitativas sem sentido entre os códigos de categoria mencionados anteriormente, mas por que não usar a codificação user12331 como você sugere? candidato A de codificação 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

Você está certo em apontar que um pode representar 4 valores usando 2 variáveis ​​binárias (isto é, dois bits). Infelizmente, uma abordagem para isso (código1 para as categorias 1 e 2 e código2 para as categorias 3 e 4) deixa a ambiguidade indicada pelos pontos de interrogação: que valores iriam para lá ?!

Bem, que tal uma segunda abordagem, chame-a de candidato B de codificação user12331:

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

Lá! Sem ambiguidade, certo? Direita! Infelizmente, tudo o que essa codificação faz é representar as quantidades numéricas 1 a 4 (ou 0 a 3) na notação binária , o que deixa intacto o problema de atribuir esses relacionamentos quantitativos indesejados às categorias.

Daí a necessidade de outro esquema de codificação.

Vou terminar com a ressalva de que os vários esquemas de codificação são mais ou menos uma questão ou estilo (ou seja, o que é que se quer um específico para dizer ) a menos que a pessoa também inclui termos de interação com as categorias no modelo. Em seguida, a codificação fictícia induzirá uma heterocedasticidade artificial e influenciará os erros padrão; portanto, convém manter a codificação de efeito nesse caso (pode haver outros sistemas de codificação que mantêm um seguro nessa circunstância, mas eu não os conheço).β

Alexis
fonte
5
Embora essa resposta demonstre o motivo pelo qual não podemos usar uma variável (ou seja, precisamos de 'algum tipo de codificação'), ela ainda não explica por que não podemos fazê-lo com duas variáveis, como o OP sugere na pergunta.
Glen_b -Reinstate Monica
@Glen_b Obrigado. Espero que minha atualização tenha ajudado a resolver.
Alexis13
2
Observe que 2 variáveis ​​binárias são suficientes para representar 4 categorias [(0,0), (0,1), (1,0), (1,1)], mas não é a maneira apropriada de codificar códigos para análise. O OP parece estar codificando incorretamente.
Ellis Valentiner
@ user12202013 Sim. Como no meu último exemplo.
Alexis11
E se eu fizesse uma codificação binária usando duas variáveis, conforme sugerido pelo OP, mas se o objetivo for previsão, um classificador / regressor não-paramétrico e não-linear não funcionaria tão bem?
tool.ish
1

Minha opinião sobre esta questão é que codificar os quatro estados possíveis com apenas duas variáveis ​​é menos expressivo em alguns algoritmos de aprendizado de máquina do que usar 4 variáveis.

Por exemplo, imagine que você deseja fazer regressão linear e seu mapeamento verdadeiro mapeia os valores 0,1 e 2 a 0 e o valor 3 a 1. Você pode verificar rapidamente se não há como aprender esse mapeamento com regressão linear ao codificar sua variável categorial com apenas duas binárias (tente encaixar o plano correspondente em sua cabeça). Por outro lado, quando você usa uma codificação 1-de-K, isso não seria um problema.

Tobias
fonte
0

Sua alternativa também é um código fictício. Você escolhe o código fictício que melhor expressa o relacionamento com sua variável dependente. Por exemplo, a cor pode ser expressa como 1 de n, ou você pode se transformar em componentes numéricos de RGB, ou pode categorizar: feminino / lamacento / ... 1 de n significa basicamente que cada instância é aprendida separadamente, o que é bom se não houver relacionamento. .. mas onde existe um relacionamento em que você está desperdiçando seus dados .. você precisa estimar separadamente o coeficiente para cada instância da categoria ... considere o trabalho como uma variável categórica. Você pode se categorizar como setor de mercado e antiguidade.

seanv507
fonte