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?
12
Respostas:
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:
Uma codificação a quente é um dos métodos de codificação. Aqui está um bom recurso para codificação de variável categórica (não limitado a R). SISTEMAS DE CODIFICAÇÃO DE CONTRASTE R BIBLIOTECA PARA VARIÁVEIS CATEGORIA
Mesmo sem codificação, a distância entre os pontos de dados com variáveis discretas pode ser definida, como distância de hamming ou Distância de Levenshtein
fonte
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.
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.
fonte
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.
fonte