¿Qué es la codificación One-Hot? ¿Cuándo debería utilizar la codificación One-Hot en lugar de la codificación de etiquetas?
Estas son preguntas típicas de las entrevistas de ciencia de datos a las que todo aspirante a científico de datos debe conocer la respuesta. Depois de tudo, ¡a menudo tendrá que elegir entre los dos en un proyecto de ciencia de datos!
Las máquinas entienden números, no texto. Necesitamos convertir cada categoría de texto en números para que la máquina los procese usando ecuaciones matemáticas. ¿Alguna vez se preguntó cómo podemos hacer eso? ¿Cuáles son las diferentes formas?
Aquí es donde la codificación de etiquetas y la codificación One-Hot entran en escena. 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
- ¿Qué es la codificación categórica?
- Diferentes enfoques de la codificación categórica
- Codificação de rótulo
- Codificação One-Hot
- ¿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.
Esa es principalmente la razón por la que necesitamos convertir columnas categóricas en columnas numéricas para que un algoritmo de aprendizaje automático las entienda. Este proceso se llama codificación categórica.
La codificación categórica es un proceso de conversión de categorías en números.
Na próxima seção, tocaré diferentes formas de manejar variables categóricas.
Diferentes enfoques de la codificación categórica
Então, ¿cómo debemos manejar las variables categóricas? Resulta que existen múltiples formas de manejar las variables categóricas. Neste artigo, discutiré las dos técnicas más utilizadas:
- Codificação de rótulo
- Codificação One-Hot
Agora, veámoslos en detalle.
Codificação de rótulo
Codificação de rótulo es una técnica de codificación popular para manejar variables categóricas. Nesta técnica, a cada etiqueta se le asigna un número entero único según el orden alfabético.
Veamos cómo implementar la codificación de etiquetas en Python usando la biblioteca scikit-learn y también comprendamos los desafíos con la codificación de etiquetas.
Primero importemos las bibliotecas y el conjunto de datos necesarios:
Produção:
Comprender los tipos de datos de las funciones:
Produção:
Como você pode ver aqui, la primera columna, País, es la característica categórica ya que está representada por el tipo de datos de objeto y el resto son características numéricas, ya que están representadas por int64.
Agora, implementemos la codificación de etiquetas en Python:
Produção:
Como você pode ver aqui, la codificación de etiquetas utiliza un orden alfabético. Portanto, India se ha codificado con 0, EE. UU. Com 2 y Japón con 1.
Desafíos con la codificación de etiquetas
No cenário acima, los nombres de los países no tienen un orden ni rango. Mas, cuando se realiza la codificación de etiquetas, los nombres de los países se clasifican según los alfabetos. Devido a isto, existe una probabilidad muy alta de que el modelo capture la relación entre países como India <Japão <EE. UU.
¡Esto es algo que no queremos! Então, ¿cómo podemos superar este obstáculo? Aquí viene el concepto de Codificação One-Hot.
Codificação One-Hot
One-Hot Encoding es otra técnica popular para tratar variables categóricas. Simplemente crea características adicionales basadas en el número de valores únicos en la característica categórica. Cada valor único en la categoría se agregará como una característica.
One-Hot Encoding es el proceso de creación de variables ficticias.
En esta técnica de codificación, cada categoría se representa como un vector one-hot. Veamos cómo implementar la codificación one-hot en Python:
Produção:
Como você pode ver aqui, se agregan 3 funciones nuevas ya que el país contiene 3 valores únicos: Índia, Japón y EE. UU. Nesta técnica, resolvimos el problema de la clasificación ya que cada categoría está representada por un vector binario.
¿Puede ver algún inconveniente con este enfoque? Piense en ello antes de seguir leyendo.
Desafíos de la codificación One-Hot: trampa variávelEm estatística e matemática, uma "variável" é um símbolo que representa um valor que pode mudar ou variar. Existem diferentes tipos de variáveis, e qualitativo, que descrevem características não numéricas, e quantitativo, representando quantidades numéricas. Variáveis são fundamentais em experimentos e estudos, uma vez que permitem a análise de relações e padrões entre diferentes elementos, facilitando a compreensão de fenômenos complexos.... ficticia
One-Hot Encoding da como resultado una trampa de variable ficticia, ya que el resultado de una variable se puede predecir fácilmente con la ayuda de las variables restantes.
La trampa de variable ficticia es un escenario en el que las variables están altamente correlacionadas entre sí.
La trampa variable ficticia conduce al problema conocido como multicolinealidad. 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 factor 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 puntuaciones VIF:
Produção:
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:
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.
Cuándo usar una codificación de etiquetas frente a una codificación en caliente
Esta pregunta generalmente depende de su conjunto de datos y del modelo que desea aplicar. Mas mesmo assim, algunos puntos a tener en cuenta antes de elegir la técnica de codificación adecuada para su modelo:
Aplicamos codificación One-Hot cuando:
- La característica categórica es no ordinal (como los países de arriba)
- La cantidad de características categóricas es menor, por lo que la codificación one-hot se puede aplicar de manera efectiva
Aplicamos la codificación de etiquetas cuando:
- La característica categórica es ordinal (como Jr. kg, Sr. kg, escuela primaria, escola Secundária)
- El número de categorías es bastante grande ya que la codificación one-hot puede conducir a un alto consumo de memoria.
Notas finais
Según lo citado por Jeff Hawkins:
“La clave de la inteligencia artificial siempre ha sido la representación”.
La representación ha sido la clave para los desarrolladores y de vez en cuando están surgiendo nuevas técnicas para representar mejor los datos y mejorar la precisión y el aprendizaje de nuestro modelo.
Te animo a que sigas el siguiente curso para convertirte en un experto en aprendizaje automático: