¿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. Después de todo, ¡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.
Nota: ¿Está comenzando su viaje de aprendizaje automático? Recomiendo tomar nuestro completo y popular Curso de aprendizaje automático aplicado!
Tabla de contenido
- ¿Qué es la codificación categórica?
- Diferentes enfoques de la codificación categórica
- Codificación de etiquetas
- Codificación One-Hot
- ¿Cuándo usar la codificación de etiquetas frente a la codificación en caliente?
¿Qué es la codificación categórica?
Por lo general, 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.
En la siguiente sección, tocaré diferentes formas de manejar variables categóricas.
Diferentes enfoques de la codificación categórica
Entonces, ¿cómo debemos manejar las variables categóricas? Resulta que existen múltiples formas de manejar las variables categóricas. En este artículo, discutiré las dos técnicas más utilizadas:
- Codificación de etiquetas
- Codificación One-Hot
Ahora, veámoslos en detalle.
Codificación de etiquetas
Codificación de etiquetas es una técnica de codificación popular para manejar variables categóricas. En esta 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:
Producción:
Comprender los tipos de datos de las funciones:
Producción:
Como puede ver aquí, 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.
Ahora, implementemos la codificación de etiquetas en Python:
Producción:
Como puede ver aquí, la codificación de etiquetas utiliza un orden alfabético. Por lo tanto, India se ha codificado con 0, EE. UU. Con 2 y Japón con 1.
Desafíos con la codificación de etiquetas
En el escenario anterior, los nombres de los países no tienen un orden ni rango. Pero, cuando se realiza la codificación de etiquetas, los nombres de los países se clasifican según los alfabetos. Debido a esto, existe una probabilidad muy alta de que el modelo capture la relación entre países como India <Japón <EE. UU.
¡Esto es algo que no queremos! Entonces, ¿cómo podemos superar este obstáculo? Aquí viene el concepto de Codificación One-Hot.
Codificación 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:
Producción:
Como puede ver aquí, se agregan 3 funciones nuevas ya que el país contiene 3 valores únicos: India, Japón y EE. UU. En esta 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 variableEn estadística y matemáticas, una "variable" es un símbolo que representa un valor que puede cambiar o variar. Existen diferentes tipos de variables, como las cualitativas, que describen características no numéricas, y las cuantitativas, que representan cantidades numéricas. Las variables son fundamentales en experimentos y estudios, ya que permiten analizar relaciones y patrones entre diferentes elementos, facilitando la comprensión de fenómenos complejos.... 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.
Por lo tanto, 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 (VIF):
- VIF = 1, muy menos multicolinealidad
- VIF <5, multicolinealidad moderada
- VIF> 5, multicolinealidad extrema (esto es lo que tenemos que evitar)
Calcule las puntuaciones VIF:
Producción:
En la salida, 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.
Ahora, dejemos caer una de las variables ficticias para resolver el problema de la multicolinealidad:
Producción:
¡Guau! VIF ha disminuido. Resolvimos el problema de la multicolinealidad. Ahora, 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. En la siguiente sección, 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. Pero aún así, 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, escuela secundaria)
- 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 finales
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: