Logo de CursoIA
CursoIA Curso de Inteligencia Artificial

Aprendizaje supervisado, Unidad 7 — Funciones de pérdida y optimización, 7.1 — Medir el error ·

Pérdida en clasificación

Pérdida en clasificación

Introducción

En el contexto del aprendizaje supervisado, la pérdida (o costo) es una métrica crucial que mide cuánto mal predice un modelo. Es fundamental para entrenar modelos de clasificación, ya que ayuda a guiar los ajustes necesarios para minimizar dicha pérdida y mejorar la precisión del modelo. En este artículo, exploraremos las diferentes funciones de pérdida utilizadas en clasificación, su importancia y cómo evitar errores comunes al aplicarlas.

Explicación principal con ejemplos

Funciones de Pérdida Comunes en Clasificación

Existen varias funciones de pérdida que son particularmente útiles para problemas de clasificación binaria o multiclase. Las más comunes incluyen:

  • Cross Entropy Loss (Entropía Cruzada): Es la función de pérdida preferida por muchos algoritmos de aprendizaje profundo, ya que es fácil de derivar y funciona bien con el gradiente descendente.
import torch

# Ejemplo: Cross Entropy Loss para una clasificación binaria
y_true = [1, 0, 1, 1]  # Etiquetas reales (0 o 1)
y_pred = [[0.3], [0.7], [0.6], [0.4]]  # Predicciones probables

criterion = torch.nn.BCEWithLogitsLoss()
loss = criterion(torch.tensor(y_pred), torch.tensor(y_true, dtype=torch.float))
print(f"Cross Entropy Loss: {loss.item()}")
  • Hinge Loss (Perdida Hinge): Es utilizada principalmente en máquinas de soporte vectorial lineal (SVM). Mide la máxima diferencia entre las predicciones correctas e incorrectas.
# Ejemplo: Hinge Loss para una clasificación binaria
y_true = [1, 0, 1, 1]
y_pred = [[0.3], [-0.7], [0.6], [0.4]]

criterion = torch.nn.HingeEmbeddingLoss()
loss = criterion(torch.tensor(y_pred), torch.tensor(y_true))
print(f"Hinge Loss: {loss.item()}")
  • Logarithmic Loss (Perdida Logarítmica): Es una versión de la entropía cruzada para problemas con dos clases. Es útil en clasificaciones binarias.
# Ejemplo: Logarithmic Loss para una clasificación binaria
y_true = [1, 0, 1, 1]
y_pred = [[0.3], [0.7], [0.6], [0.4]]

criterion = torch.nn.BCELoss()
loss = criterion(torch.tensor(y_pred), torch.tensor(y_true, dtype=torch.float))
print(f"Logarithmic Loss: {loss.item()}")

Errores Típicos / Trampas

  1. Usar la misma función de pérdida para todos los problemas: No todas las funciones de pérdida son idóneas para cada tipo de problema. Por ejemplo, hinge loss es más adecuada para SVMs que para redes neuronales.
  1. Ignorar el balanceo de clases: Si tus datos están desequilibrados (por ejemplo, muchos más ejemplos de una clase que de otra), usar cross entropy sin ajustes puede llevar a un sesgo hacia la mayoría.
  1. No considerar la escala de las predicciones: Las funciones de pérdida no siempre son sensibles al rango del espacio de predicción. Por ejemplo, si tus predicciones están en el rango -100 a 100, hinge loss puede ser insensible a los cambios en los extremos.

Checklist accionable

  • Revisar y ajustar la función de pérdida según el problema: Elige una función que tenga sentido para tu tarea específica.
  • Verificar el balanceo de clases: Si las clases están desequilibradas, considera usar técnicas como reamostrado o ponderación.
  • Escalar las predicciones si es necesario: Asegúrate de que la escala no esté distorsionando tus pérdidas.
  • Monitorear el rendimiento durante el entrenamiento: Verifica cómo tu función de pérdida evoluciona con el tiempo para asegurarte de que está disminuyendo adecuadamente.

Cierre

Siguientes pasos

  1. Prueba varias funciones de pérdida: Experimenta con diferentes tipos de pérdidas y observa cómo afectan a la precisión del modelo.
  2. Analiza tu conjunto de datos: Comprueba si hay algún sesgo o desequilibrio en las etiquetas que pueda influir en tus pérdidas.
  3. Ajuste manual del modelo: Si una pérdida específica no da buenos resultados, ajusta el modelo manualmente para ver si mejora.

Siguiendo estos pasos y considerando cuidadosamente las funciones de pérdida adecuadas para tu tarea de clasificación, podrás mejorar significativamente la calidad de tus modelos de aprendizaje supervisado.

Contacto

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