Logo de CursoIA
CursoIA Curso de Inteligencia Artificial

Modelos de clasificación, Unidad 4 — Clasificación basada en distancia, 4.2 — Métricas de distancia ·

Impacto del escalado

Impacto del escalado en clasificación basada en distancia

Introducción

En la clasificación basada en distancia, el escalado de las características juega un papel crucial. Las técnicas como k-Nearest Neighbors (k-NN) y métodos basados en distancias requieren que las características estén en una escala similar para funcionar eficientemente. Si algunas características tienen valores mucho más grandes o pequeños que otras, puede distorsionar la distancia entre los puntos y afectar negativamente el rendimiento del clasificador.

Explicación principal con ejemplos

El escalado se refiere a la transformación de las características para reducir su escala y hacerlas más homogéneas. Esto es especialmente importante en algoritmos que son sensibles a las diferencias de magnitud entre características, como k-NN.

Ejemplo: Escalado con Min-Max

Imagina un conjunto de datos donde una característica representa la edad (rango 18-90 años) y otra característica representa el ingreso anual en miles de euros (rango 20,000 a 250,000 euros). Si no se escalan estos valores, los ingresos tendrán mucho más impacto en la distancia que la edad.

# Ejemplo de datos sin escalamiento

edad = [18, 34, 65]
ingreso_anual = [20000, 75000, 250000]

# Calculando las distancias directamente
distancia_1 = abs(edad[0] - edad[1]) + abs(ingreso_anual[0] - ingreso_anual[1])
distancia_2 = abs(edad[0] - edad[2]) + abs(ingreso_anual[0] - ingreso_anual[2])

# Imprime las distancias
print(f"Distancia 1: {distancia_1}")
print(f"Distancia 2: {distancia_2}")

# Ahora escalando los datos

from sklearn.preprocessing import MinMaxScaler

scaler = MinMaxScaler()
datos_escalados = scaler.fit_transform([[edad[0], ingreso_anual[0]], [edad[1], ingreso_anual[1]], [edad[2], ingreso_anual[2]]])

# Calculando las distancias después del escalado
distancia_3 = abs(datos_escalados[0][0] - datos_escalados[1][0]) + abs(datos_escalados[0][1] - datos_escalados[1][1])
distancia_4 = abs(datos_escalados[0][0] - datos_escalados[2][0]) + abs(datos_escalados[0][1] - datos_escalados[2][1])

# Imprime las distancias escaladas
print(f"Distancia 3: {distancia_3}")
print(f"Distancia 4: {distancia_4}")

Ejemplo: Escalado con StandardScaler

Otra técnica popular es usar StandardScaler para transformar las características a una media de cero y una desviación estándar unitaria.

from sklearn.preprocessing import StandardScaler

scaler = StandardScaler()
datos_escalados = scaler.fit_transform([[edad[0], ingreso_anual[0]], [edad[1], ingreso_anual[1]], [edad[2], ingreso_anual[2]]])

# Calculando las distancias después del escalado
distancia_5 = abs(datos_escalados[0][0] - datos_escalados[1][0]) + abs(datos_escalados[0][1] - datos_escalados[1][1])
distancia_6 = abs(datos_escalados[0][0] - datos_escalados[2][0]) + abs(datos_escalados[0][1] - datos_escalados[2][1])

# Imprime las distancias escaladas
print(f"Distancia 5: {distancia_5}")
print(f"Distancia 6: {distancia_6}")

Errores típicos / trampas

  1. Omitir el escalado: Ignorar la escalabilidad de las características puede llevar a resultados sesgados, ya que algunas características pueden tener un impacto desproporcionado en la distancia.
  1. No utilizar escaladores adecuados: Usar escaladores incorrectos o no entender cómo afectan a los algoritmos puede resultar en malas decisiones. Por ejemplo, Min-Max escala a rango [0, 1], mientras que StandardScaler a una media de cero y desviación estándar unitaria.
  1. No validar después del escalado: No siempre es suficiente aplicar el escalado y esperar buenos resultados. Es importante validar si la escalabilidad mejora el rendimiento del modelo, ya que en algunos casos puede no hacer diferencia o incluso empeorar los resultados.

Checklist accionable

  1. Identifica las características con escala desigual: Asegúrate de que todas tus características estén en una misma escala.
  2. Aplica un escalador adecuado: Escoger el método correcto depende del tipo de datos y del algoritmo que se use.
  3. Valida el impacto del escalado: Verifica si el escalado mejora o empeora el rendimiento del clasificador.
  4. Normaliza los datos antes de entrenar: No apliques el escalador en los datos de prueba durante la validación.
  5. Monitorea el desempeño a largo plazo: Asegúrate de seguir monitoreando y ajustando tu modelo con el tiempo para evitar el drift.

Siguientes pasos

  • Aprende sobre otros algoritmos de clasificación basada en distancias: Familiarízate con otros métodos como k-means clustering, que también son afectados por la escalabilidad.
  • Integra técnicas avanzadas de escalado: Explora el uso de escaladores más complejos como RobustScaler o Normalizer.
  • Analiza casos reales: Practica aplicando estas técnicas en proyectos de clasificación reales para comprender mejor cómo interactúan con diferentes conjuntos de datos.

Mediante un entendimiento y aplicación adecuada del escalado, puedes mejorar significativamente el rendimiento de tus modelos de clasificación basada en distancia.

Contacto

Indica tu objetivo (ChatGPT, RAG, agentes, automatización) y tu stack (web/backend).