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.
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.
Elige una respuesta y tu grado de seguridad.
Responde para desbloquear el experimento.
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.
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 az ≥ ln(t / (1 − t)). - Para
t = 0.5el lado derecho es 0, así que la frontera es la rectaw·x + b = 0. Parat = 0.3es−0.85: la misma dirección, desplazada hacia la clase 0. wfija la dirección de la frontera.tsolo la desliza.- Una respuesta errónea y segura cuesta mucho con la pérdida logarítmica, ya que
−ln pcrece sin límite cuandoptiende 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.
Descargar el notebook (.ipynb). Ábrelo en Jupyter o súbelo a Google Colab; descarga por sí solo los datos que falten.
Para profesionales
predict()siempre usa 0,5. Para usar otro umbral, tomapredict_probay compara tú mismo, como arriba, o envuelve el modelo enFixedThresholdClassifier(un umbral fijo) oTunedThresholdClassifierCV(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.
LogisticRegressionaplica 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.
¿Te ha sido útil?
¡Gracias! Nos ayuda a mejorar.
Profundiza en el Atlas
Entradas de la enciclopedia sobre las ideas de esta lección: