Quais algoritmos requerem codificação one-hot?

12

Eu nunca tenho certeza de quando usar a codificação one-hot para variáveis ​​categóricas não ordenadas e quando não usar . Eu o uso sempre que o algoritmo usa uma métrica de distância para calcular a similaridade. Alguém pode dar uma regra geral a respeito de quais tipos de algoritmos exigiriam que os recursos categóricos não ordenados fossem codificados de uma maneira quente e quais não?

cosmosa
fonte
2
Você está perguntando sobre a necessidade de codificar dados categóricos em algum tipo de "variáveis ​​de contraste" ou especificamente no tipo fictício (um quente)?
ttnphns
1
Essa pergunta é um tanto ampla, mas uma resposta simples que aborda a natureza da OHE pode esclarecer a confusão do OP. A existência de tais respostas implica que esta pergunta é responsável. Estou votando para deixar em aberto.
gung - Restabelece Monica
@ttnphns honestamente eu não sei o que você quer dizer com variável de contraste. Eu só estou familiarizado com manequim.
cosmosa
O Cosmos, fictício (= indicador = quente) é apenas uma das várias maneiras de codificar cariables categóricos nas análises. Essas maneiras são chamadas unitariamente de "variáveis ​​de contraste". Veja stats.meta.stackexchange.com/q/4669/3277 e stats.stackexchange.com/a/221868/3277
ttnphns
1
Eu acho que a lista completa que você pede será difícil de produzir.
Mdewey 01/07

Respostas:

6

A maioria dos algoritmos (regressão linear, regressão logística, rede neural, máquina de vetores de suporte etc.) requer algum tipo de codificação em variáveis ​​categóricas. Isso ocorre porque a maioria dos algoritmos aceita apenas valores numéricos como entradas.

Algoritmos que não requerem codificação são algoritmos que podem lidar diretamente com distribuições discretas conjuntas , como cadeia de Markov / rede Naive Bayes / Bayesiana, baseada em árvore, etc.

Comentários adicionais:

Haitao Du
fonte
Ainda não está claro se uma codificação ativa é necessária para a maioria dos algoritmos. Você acabou de dizer que a codificação é necessária. Mas é uma codificação quente?
Prometheus
4

Alguém pode dar uma lista de quais algoritmos exigiriam que os recursos categóricos fossem codificados com um código quente e quais não?

AFAIU, tem a ver mais com os dados particulares , menos com o algoritmo específico . Especificamente, depende se há alguma ordem significativa nas categorias ou não.

Considere dois casos. No primeiro você tem as categorias ruim, meh, bom , e no segundo você tem maçã, laranja, pêra . Há uma ordem natural no primeiro caso, porque o meh provavelmente está entre ruim e bom , mas provavelmente nada semelhante acontece em maçã, laranja, pêra .

Se você evitar a codificação one-hot no primeiro caso, estará "perdendo" as informações sobre o pedido. Se você usar a codificação one-hot para o segundo caso, estará atribuindo alguma ordem às categorias que não são naturalmente verdadeiras.

Faço isso sempre que o algoritmo usa uma métrica de distância para calcular a similaridade.

Por quê? Suponha que um dos recursos seja um categórico ruim, meh, bom , e você tenha três instâncias, 1, 2 e 3, onde eles são idênticos, exceto que 1 é ruim , 2 é meh e 3 é bom. Você provavelmente deseja expressar para o algoritmo que 1 é mais semelhante a 2 do que a 3.

Ami Tavory
fonte
2
Essa é uma boa resposta. Eu deveria ter esclarecido a questão para incluir também variáveis ​​categóricas não ordenadas. Nesse caso, deve sempre ser um codificado a quente?
cosmosa
@ cosmos1990 IMHO, como regra geral, para dados categóricos não ordenados, a codificação one-hot é o caminho a percorrer (ao contrário da atribuição de valores numéricos).
Ami Tavory
2

Nenhum algoritmo de aprendizado de máquina requer uma codificação quente. É um método para lidar com variáveis ​​categóricas. Variáveis ​​fictícias é outra. Tradicionalmente, variáveis ​​fictícias eram a solução preferida. Por exemplo, a função R lm () cria automaticamente variáveis ​​fictícias para dados categóricos. Se você estiver usando python e scikt-learn, acredito que muitos dos seus algos exigem codificação one-hot de variáveis ​​categóricas. Eu acredito que o tensorFlow também requer codificação one-hot. Essas são escolhas de como a variável é codificada. Não há razão para que variáveis ​​fictícias não possam ser usadas no código. Tudo isso tem a ver com a implementação real do código do algoritmo.

Como hxd1011 aponta, a questão da descrição da 'distância' entre variáveis ​​categóricas é uma questão delicada. Além das distâncias mencionadas, há também a distância de Jaccard. Alguns métodos de ML, particularmente os SVMs, são inadequados para dados categóricos e a adição de variáveis ​​categóricas pode / irá (ambos, você decidir) levar a modelos com poder preditivo muito baixo. A maioria dos modelos de conjunto lida com dados categóricos 'como estão' e não requer pré-processamento.

meh
fonte