Codificação categórica | Uma codificação quente vs. codificação de rótulo

Conteúdo

O que é a codificação One-Hot? Quando devo utilizar a codificação One-Hot em vez da codificação por etiquetas?

Estas são perguntas típicas em entrevistas de ciência de dados às quais todo aspirante a cientista de dados deve saber responder. Depois de tudo, Muitas vezes terá de escolher entre os dois num projeto de ciência de dados!

As máquinas entendem números, não texto. Precisamos converter cada categoria de texto em números para que a máquina os processe usando equações matemáticas. Alguma vez se perguntou como podemos fazer isso?? Quais são as diferentes formas??

one-hot-vs-label-encoder-5241870

É aqui que a codificação por etiquetas e a codificação One-Hot entram em cena. Discutiremos ambos en este artículo y entenderemos la diferencia entre ellos.

Observação: ¿Está comenzando su viaje de aprendizaje automático? Recomiendo tomar nuestro completo y popular Curso de aprendizaje automático aplicado!

Tabela de conteúdo

  1. ¿Qué es la codificación categórica?
  2. Different enfoques de la codificación categórica
    1. Codificação de rótulo
    2. Codificação One-Hot
  3. ¿Cuándo usar la codificación de etiquetas frente a la codificación en caliente?

¿Qué es la codificación categórica?

Em geral, cualquier conjunto de datos estructurados incluye varias columnas, una combinación de variables numéricas y categóricas. Una máquina solo puede entender los números. No puede entender el texto. Ese también es esencialmente el caso de los algoritmos de aprendizaje automático.

external-content-duckduckgo-com_-2447174

Esta é principalmente a razão pela qual precisamos converter colunas categóricas em colunas numéricas para que um algoritmo de aprendizagem automática as compreenda. Este processo chama-se codificação categórica.

A codificação categórica é um processo de conversão de categorias em números.

Na próxima seção, Vou abordar diferentes formas de lidar com variáveis categóricas.

Different enfoques de la codificación categórica

Então, Como devemos lidar com as variáveis categóricas? Acontece que existem múltiplas formas de lidar com variáveis categóricas. Neste artigo, Vou discutir as duas técnicas mais utilizadas:

  • Codificação de rótulo
  • Codificação One-Hot

Agora, Vamos vê-las em detalhe.

Codificação de rótulo

Codificação de rótulo É uma técnica de codificação popular para lidar com variáveis categóricas. Nesta técnica, A cada etiqueta é atribuído um número inteiro único de acordo com a ordem alfabética.

Vamos ver como implementar a codificação de etiquetas em Python usando a biblioteca scikit-learn e também compreender os desafios da codificação de etiquetas.

Primeiro, vamos importar as bibliotecas e o conjunto de dados necessários:

Produção:

table1png-6213443

Compreender os tipos de dados das variáveis:

Produção:

data2-4674121

Como você pode ver aqui, a primeira coluna, País, é a característica categórica, pois está representada pelo tipo de dado objeto e o resto são características numéricas, uma vez que estão representadas por int64.

Agora, vamos implementar a codificação de etiquetas em Python:

Produção:

table2-1-4460058

Como você pode ver aqui, a codificação de etiquetas utiliza uma ordem alfabética. Portanto, Índia foi codificada como 0, EE. UU. Com 2 e Japão como 1.

Desafios da codificação de etiquetas

No cenário acima, os nomes dos países não têm uma ordem ou hierarquia. Mas, quando se realiza a codificação de etiquetas, os nomes dos países são classificados de acordo com os alfabetos. Devido a isto, há uma probabilidade muito alta de o modelo captar a relação entre países como a Índia <Japão <EE. UU.

Isto é algo que não queremos! Então, como podemos superar este obstáculo? Aqui entra o conceito de Codificação One-Hot.

Codificação One-Hot

One-Hot Encoding é outra técnica popular para lidar com variáveis categóricas. Simplesmente cria características adicionais com base no número de valores únicos na variável categórica. Cada valor único na categoria será adicionado como uma característica.

One-Hot Encoding é o processo de criação de variáveis fictícias.

Nesta técnica de codificação, cada categoria é representada como um vetor one-hot. Vamos ver como implementar a codificação one-hot em Python:

Produção:

tabela3-1-4833612

Como você pode ver aqui, adicionam-se 3 novas funções uma vez que o país inclui 3 valores únicos: Índia, Japão e EUA. UU. Nesta técnica, resolvemos o problema da classificação, uma vez que cada categoria é representada por um vetor binário.

Consegue ver algum inconveniente neste método? Pense nisso antes de continuar a ler.

Desafios da codificação One-Hot: armadilha variável fictícia

A codificação One-Hot resulta numa armadilha de variável fictícia, uma vez que o resultado de uma variável pode ser facilmente previsto com a ajuda das restantes variáveis.

A armadilha de variável fictícia é um cenário em que as variáveis estão fortemente correlacionadas entre si.

A armadilha de variável fictícia leva ao problema conhecido como multicolinearidade. La multicolinealidad ocurre cuando existe una dependencia entre las características independientes. La multicolinealidad es un problema grave en los modelos de aprendizaje automático como la regresión lineal y la regresión logística.

Portanto, para superar el problema de la multicolinealidad, debe descartarse una de las variables ficticias. Aquí demostraré prácticamente cómo se introduce el problema de la multicolinealidad después de realizar la codificación one-hot.

Una de las formas habituales de comprobar la multicolinealidad es el fator de inflación de varianza (VIVAZ):

  • VIF = 1, muy menos multicolinealidad
  • VIVAZ <5, multicolinealidad moderada
  • VIVAZ> 5, multicolinealidad extrema (esto es lo que tenemos que evitar)

Calcule las pontuações VIF:

Produção:

dum-3712283

Na saída, podemos ver que las variables ficticias que se crean usando la codificación one-hot tienen VIF por encima de 5. Tenemos un problema de multicolinealidad.

Agora, dejemos caer una de las variables ficticias para resolver el problema de la multicolinealidad:

Produção:

dum2-1434462

Uau! VIF ha disminuido. Resolvimos el problema de la multicolinealidad. Agora, el conjunto de datos está listo para crear el modelo.

Le recomendaría que lea Profundizando en el análisis de regresión con supuestos, gráficos y soluciones para comprender los supuestos de la regresión lineal.

Hemos visto dos técnicas diferentes: Label y One-Hot Encoding para manejar variables categóricas. Na próxima seção, hablaré sobre cuándo preferir la codificación de etiquetas frente a la codificación One-Hot.

Quando usar uma codificação de etiquetas em vez de uma codificação one-hot

Esta questão geralmente depende do seu conjunto de dados e do modelo que pretende aplicar. Mas mesmo assim, Alguns pontos a ter em conta antes de escolher a técnica de codificação adequada para o seu modelo:

Aplicamos codificação One-Hot quando:

  1. A característica categórica é não ordinal (como os países acima)
  2. A quantidade de características categóricas é menor, pelo que a codificação one-hot pode ser aplicada de forma eficaz

Aplicamos a codificação de etiquetas quando:

  1. A característica categórica é ordinal (como Jr. kg, Sr. kg, escola primária, escola Secundária)
  2. O número de categorias é bastante grande, já que a codificação one-hot pode conduzir a um elevado consumo de memória.

Notas finais

Segundo citado por Jeff Hawkins:

A chave da inteligência artificial sempre foi a representação.

A representação tem sido a chave para os desenvolvedores e, de vez em quando, surgem novas técnicas para representar melhor os dados e melhorar a precisão e o aprendizado do nosso modelo.

Incentivo-te a seguir o seguinte curso para te tornares um especialista em aprendizagem automática:

Assine a nossa newsletter

Nós não enviaremos SPAM para você. Nós odiamos isso tanto quanto você.

Datapeaker