Saltar al contenido

lección 4

El primer modelo (y la euforia del AUC)

Entrenar dos clasificadores y compararlos por AUC: el RandomForest gana. Pero el umbral 0,5 por defecto deja pasar a más de la mitad de los graves.

⏱ 55 min

## Miércoles, 9:30. Dos modelos sobre la mesa

La tabla de modelado está lista: una fila por lesión, los descriptores y el contexto como features, el desenlace como target. Hoy entrenas los primeros clasificadores. Vas a probar dos, porque comparar es parte del oficio: una regresión logística, que es simple, rápida y da probabilidades naturalmente bien calibradas; y un bosque aleatorio, que es más flexible y captura relaciones que la logística no ve. La forma de la lesión no es lineal —una lesión asimétrica y de borde irregular y de color heterogéneo es mucho peor que la suma de las tres cosas—, y un bosque capta esas combinaciones mejor que una recta.

Por qué el bosque ordena algo mejor. La logística traza una recta; el bosque dobla la frontera y capta que varias señales juntas pesan más que su suma. Eso le da un AUC un poco más alto, pero ordenar mejor no es decidir mejor, como verás.

Para comparar modelos de clasificación por su capacidad de ordenar por riesgo se usa el AUC, el área bajo la curva ROC. Mide algo concreto y útil: si coges una lesión grave y una benigna al azar, ¿con qué probabilidad el modelo le da más puntuación a la grave? Un AUC de 0,5 es tirar una moneda; un AUC de 1 es ordenar perfecto. Es una buena medida de cuánto sabe el modelo separar las dos clases, y por eso es lo primero que se mira. Pero fíjate en lo que mide y lo que no: mide el orden, no la decisión. No dice dónde pones la raya entre urgente y no urgente. Guarda esa distinción, porque es el corazón de la semana.

Lo que el AUC te dice y lo que no. Un AUC alto significa que el modelo ordena bien los casos por riesgo. Pero ordenar no es decidir: el umbral —dónde cortas entre urgente y no urgente— es una elección aparte, y es la que de verdad importa.

## La trampa del umbral por defecto

Cuando llamas a predict() en un clasificador, por debajo pasa algo que casi nadie mira: el modelo calcula una probabilidad con predict_proba() y luego la convierte en un sí o un no cortando por 0,5. Es decir, marca «grave» si cree que es más probable grave que benigno. Ese 0,5 viene de fábrica y parece neutral, pero no lo es: supone que equivocarte por un lado cuesta lo mismo que por el otro. En Dermia eso es falso, y lo sabes desde el lunes. Por eso Ignacio no te deja quedarte en el AUC: te pide la matriz de confusión con el umbral que vas a usar de verdad, para ver cuántos graves se escapan.

La matriz de confusión es la foto completa de los aciertos y errores de una regla de decisión. Para una lesión tiene cuatro casillas: verdaderos positivos (graves marcados urgente), falsos negativos (graves dejados pasar), falsos positivos (benignos marcados urgente) y verdaderos negativos (benignos en cita normal). De ahí sale el recall de la clase grave, que es la pregunta de Beatriz: de todos los graves, ¿a cuántos pescamos? Hoy vas a mirar esa matriz con el umbral 0,5, y el número que salga no te va a gustar. Pero no lo arregles todavía: míralo, encájalo, y guarda la conversación para mañana.

La foto que te deja Ignacio sobre la mesa. Al umbral de fábrica se escapan 172 de los 306 graves —más de la mitad— y apenas se generan 65 consultas de más. El modelo está siendo demasiado prudente para marcar urgente, justo al revés de lo que pide un triaje de salud.

Consejo de senior: en cuanto veas a alguien escribir modelo.predict(X) en un problema donde los errores no cuestan lo mismo, pregúntale «¿con qué umbral, y por qué ese?». Casi siempre la respuesta es «con el que viene por defecto», que es 0,5, que es como no haber decidido nada. La mitad de los modelos de clasificación mal usados del mundo fallan ahí, no en el algoritmo.

Regístrate para guardar tu progreso.