ML Atlas

Machine learning desde cero · Lección 2.1 · 8 de 33 lecciones listas · 10 min

Clasificación: trazar una frontera

En pocas palabras

Un clasificador convierte medidas en una categoría. La regresión logística da una probabilidad y una frontera, mostradas con dos especies de pingüinos.

Calentamiento Dos preguntas de lecciones anteriores. Un minuto, y no bloquea la lección.
De la lección 1.6: Descenso de gradiente: aprender a pequeños pasos ¿Por qué se usa el descenso de gradiente en las redes neuronales en lugar de una fórmula exacta?

Ver la respuesta

Respuesta correcta: Porque casi nunca hay fórmula para los mejores parámetros, pero el gradiente sí se calcula

El descenso de gradiente solo necesita la pendiente de la pérdida en el punto actual, y esa se puede obtener incluso en modelos con miles de millones de parámetros.

De la lección 1.5: Regresión lineal: ajustar una recta ¿Por qué la regresión lineal eleva los residuos al cuadrado en lugar de simplemente sumarlos?

Ver la respuesta

Respuesta correcta: Para que los fallos por encima y por debajo no se anulen y los grandes pesen más

Los cuadrados siempre son positivos y crecen deprisa, así que la puntuación refleja cada fallo y castiga con fuerza los grandes.

Una bióloga en la Antártida mide el pico y las aletas de un pingüino. ¿De qué especie es? Esta pregunta es distinta de «¿cuánto avanzará la enfermedad?». La respuesta no es un número en una escala, sino una elección entre categorías. ¿Pueden las rectas y los pasos cuesta abajo de las lecciones anteriores con algo así? Pueden, con un giro ingenioso. Pruébalo tú mismo antes de leer la explicación.

Predice y comprueba El modelo distingue pingüinos Adelie de Chinstrap y el umbral de decisión por defecto es 0,5. ¿Qué umbral del control da la mayor exactitud: 0,1; 0,3; 0,5 o 0,9?
¿Qué tan seguro estás?

Experimento interactivo

Este experimento interactivo funciona en un navegador con JavaScript activado. El texto que lo rodea describe lo que muestra.

Ver la respuesta

Respuesta correcta: 0,3

Con el umbral 0,3 la exactitud es del 98,6 % (3 errores), con 0,5 solo del 96,8 % (7 errores), con 0,9 del 92,2 % y con 0,1 del 90,4 %. El 0,5 no es sagrado: el mejor umbral depende de la proporción de las clases y de qué error cuesta más.

Prueba esto

  • Mira primero la frontera. Busca los pingüinos que quedan en el lado equivocado: son los casos en los que el modelo se equivoca incluso con su mejor recta.
  • Mueve el control del umbral de probabilidad hacia un extremo y observa cómo la frontera se desplaza hacia una de las especies. Fíjate en que la recta se mueve, pero conserva su dirección.
  • Pon el umbral cerca de un extremo y cuenta cómo cambian los errores: ahora casi nunca se pasa por alto una especie, a costa de la otra.
  • Busca pingüinos cerca de la frontera y compáralos con los que están lejos. ¿Cuáles revisarías a mano?

La idea en pocas palabras

Predecir una categoría se llama clasificación. En esta lección usamos el conjunto de datos Palmer Penguins: 344 pingüinos de tres especies de islas cercanas a la estación Palmer, en la Antártida, cada uno con medidas del pico, de las aletas y del cuerpo. Para que todo quepa en un plano, tomamos dos especies y dos medidas, de modo que cada pingüino es un punto en un plano —una medida en horizontal y la otra en vertical— con su especie conocida.

Un clasificador tiene que dividir ese plano en dos regiones: «aquí la especie A, allí la especie B». La línea entre las regiones es la frontera de decisión. La regresión logística, a pesar de su nombre, es un modelo de clasificación, y su frontera es una recta.

El giro es que la regresión logística no responde solo «A» o «B». Responde con una probabilidad: «este pingüino es de la especie B con probabilidad 0,9». Piensa en el pronóstico del tiempo. Quien da el pronóstico dice «80 % de probabilidad de lluvia», y tú decides si eso basta para llevar paraguas. El modelo hace de meteorólogo; el umbral es tu regla del paraguas.

Por qué funciona

Primero el modelo calcula una puntuación igual que la regresión lineal: una suma ponderada de las características más una ordenada en el origen, z = w₁x₁ + w₂x₂ + b. Esa puntuación puede ser cualquier número, así que la función sigmoide la comprime al rango de 0 a 1:

p = 1 / (1 + e^(−z))

Una puntuación muy positiva da una probabilidad cercana a 1, una muy negativa da una probabilidad cercana a 0, y una puntuación exactamente igual a cero da 0,5. Los pingüinos lejos de la frontera reciben probabilidades seguras; los que están cerca reciben probabilidades próximas a un medio: el modelo duda, y lo dice.

Los pesos se aprenden con descenso de gradiente, como en la lección 4, pero con otra pérdida. En lugar del error cuadrático, el modelo usa la pérdida logarítmica (log loss, también llamada entropía cruzada). Apenas castiga una respuesta correcta y segura, y castiga con muchísima dureza una respuesta equivocada y segura. Eso empuja al modelo a estar seguro solo cuando los datos lo justifican.

Por último, el umbral convierte la probabilidad en una decisión: probabilidad por encima del umbral → especie B; por debajo → especie A. El valor por defecto habitual es 0,5, pero nada obliga a usarlo. Mover el umbral mueve la frontera. Como la probabilidad depende de la suma ponderada, cada umbral corresponde a una recta con la misma dirección, solo desplazada: la opinión del modelo sobre en qué dirección difieren las especies no cambia; solo cambia cuánta certeza exiges tú.

Error frecuente

Hay dos errores comunes. El primero es tratar 0,5 como una ley. El umbral es una decisión sobre costos, no una parte del modelo; en medicina puedes aceptar muchas falsas alarmas para pasar por alto menos cánceres. El segundo es leer la probabilidad como certeza. Una probabilidad de 0,97 significa que el modelo espera equivocarse en unos tres de cada cien casos así, y solo si los datos nuevos se parecen a los de entrenamiento. Un pingüino de una población que el modelo nunca vio puede recibir una respuesta segura y equivocada.

Una frontera que acierta con la mayoría de los pingüinos suena bien, pero «la mayoría» esconde mucho: qué errores, cuántos y cuán graves. En la próxima lección abrimos la caja de los errores y aprendemos a contarlos bien.

Test

Tres preguntas para comprobar lo aprendido. Elige una respuesta o despliega la solución bajo cada pregunta. Con el teclado: las flechas eligen, Enter o Espacio confirma.

1. ¿Qué devuelve la regresión logística antes de aplicar cualquier umbral?
Ver la respuesta

Respuesta correcta: Una probabilidad entre 0 y 1 para una de las clases

La sigmoide convierte la suma ponderada en una probabilidad, y el umbral convierte esa probabilidad en una decisión.

2. Subes el umbral de 0,5 a 0,8. ¿Qué le pasa a la frontera?
Ver la respuesta

Respuesta correcta: Se desplaza en paralelo y menos pingüinos pasan a la clase de probabilidad alta

Cada umbral corresponde a una recta con la misma dirección; un umbral más estricto la desplaza para que solo pasen los casos seguros.

3. ¿Por qué la regresión logística usa la pérdida logarítmica en lugar del error cuadrático?
Ver la respuesta

Respuesta correcta: Porque castiga mucho lo equivocado pero seguro, lo que encaja con las probabilidades

La pérdida logarítmica crece de forma abrupta cuando la probabilidad asignada a la clase verdadera se acerca a cero, lo que desalienta la seguridad injustificada.

Ideas clave

  • La clasificación predice una categoría; la frontera de decisión separa las regiones de cada clase.
  • La regresión logística pasa una suma ponderada por la sigmoide para obtener una probabilidad.
  • El umbral convierte una probabilidad en una decisión y es una elección sobre costos, no un 0,5 fijo.
  • Cambiar el umbral desplaza la frontera de la regresión logística sin girarla.

Más a fondo: fórmula, código, práctica

Las matemáticas

El modelo calcula una puntuación z = w·x + b y la convierte en probabilidad con la sigmoide, p = 1 / (1 + e^(−z)). Se entrena minimizando la pérdida logarítmica L = −mean( y·ln p + (1 − y)·ln(1 − p) ), cuyo gradiente es simplemente mean((p − y)·x) para cada peso.

  • La predicción es la clase 1 cuando p ≥ t. Como la sigmoide es creciente, eso equivale a z ≥ ln(t / (1 − t)).
  • Para t = 0.5 el lado derecho es 0, así que la frontera es la recta w·x + b = 0. Para t = 0.3 es −0.85: la misma dirección, desplazada hacia la clase 0.
  • w fija la dirección de la frontera. t solo la desliza.
  • Una respuesta errónea y segura cuesta mucho con la pérdida logarítmica, ya que −ln p crece sin límite cuando p tiende a 0.
En código (Python)

El modelo del lab: Adelie contra Chinstrap según el largo y la profundidad del pico, estandarizados, evaluado con los mismos pingüinos en cuatro umbrales:

import pandas as pd
from sklearn.linear_model import LogisticRegression
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler

df = pd.read_csv("data/raw/penguins.csv")
df = df[df["species"].isin(["Adelie", "Chinstrap"])].dropna(subset=["bill_length_mm", "bill_depth_mm"])
X, y = df[["bill_length_mm", "bill_depth_mm"]], df["species"] == "Chinstrap"
model = make_pipeline(StandardScaler(), LogisticRegression()).fit(X, y)
p = model.predict_proba(X)[:, 1]  # probabilidad de Chinstrap
for t in [0.1, 0.3, 0.5, 0.9]:
    wrong = int(((p >= t) != y).sum())  # decir Chinstrap cuando p >= t
    print(f"threshold {t}: {wrong} mistakes, accuracy {1 - wrong / len(y):.1%}")

Resultado

threshold 0.1: 21 mistakes, accuracy 90.4%
threshold 0.3: 3 mistakes, accuracy 98.6%
threshold 0.5: 7 mistakes, accuracy 96.8%
threshold 0.9: 17 mistakes, accuracy 92.2%

El notebook enlazado bajo el resultado descarga los datos por sí solo. El mejor umbral aquí es 0,3, no el 0,5 por defecto.

Para profesionales
  • predict() siempre usa 0,5. Para usar otro umbral, toma predict_proba y compara tú mismo, como arriba, o envuelve el modelo en FixedThresholdClassifier (un umbral fijo) o TunedThresholdClassifierCV (un umbral elegido por validación cruzada), ambos en scikit-learn 1.5 o posterior.
  • Elige el umbral con datos de validación, no con las filas que informas. El 98,6 % de aquí se mide con los mismos pingüinos con los que se ajustó el modelo, así que es optimista.
  • Estandariza las variables. LogisticRegression aplica por defecto regularización L2 (C=1.0), y esa penalización depende de la escala de cada variable.
  • Compara la exactitud con la línea base de la clase mayoritaria y, cuando las clases están desbalanceadas o los costos difieren, mira por separado los dos tipos de error.
  • Una probabilidad solo es tan buena como los datos con los que se ajustó. Para un animal de otra población, una respuesta segura puede seguir siendo errónea.

Profundiza en el Atlas

Entradas de la enciclopedia sobre las ideas de esta lección: