SkillGridAprende informática practicando

La exactitud no basta

Por qué un 99 por ciento de exactitud puede ser un modelo inútil, qué demuestra de verdad un conjunto de prueba reservado y qué dos números ganan a la exactitud cuando una respuesta es rara.

14 min · 45 XP

La exactitud es la proporción de filas en las que el modelo acertó. Es el primer número al que todos recurren, es fácil de explicar y, por sí solo, es uno de los números más engañosos de todo el campo. Aquí está la trampa, y no necesita ningún modelo complicado. Es una prueba médica para una enfermedad rara en una ciudad de mil personas.

disease screening, 1000 people, 10 are ill

model: always answer no

correct: 990 healthy people
wrong:   10 ill people missed

accuracy = 990 / 1000 = 99 percentUn modelo que no hace absolutamente nada, y saca 99 por ciento.

Ese modelo responde que no a todas las personas. No ha aprendido nada, nunca encontrará a un solo enfermo y aun así saca 99 por ciento, porque la enfermedad es rara y las personas sanas son la mayoría. La exactitud premia en silencio a la clase mayoritaria. En cuanto una respuesta es mucho más común que la otra, un modelo perezoso que siempre da la respuesta común parece excelente sobre el papel y no vale nada en la práctica.

Ahora la segunda trampa, y va de honestidad, no de rareza. Un modelo se puede comprobar en las mismas filas de las que aprendió, igual que a un estudiante se le podría devolver la hoja con las respuestas todavía escritas. Claro que la puntuación es alta. El número que de verdad quieres viene de filas que el modelo nunca encontró. Por eso, antes de entrenar, divides la tabla: una parte entrena al modelo, el resto se sella y se abre una sola vez, al final. Esa parte sellada es el conjunto de prueba.

Training rowsModelHeld-back rowshere are examples with labelsadjust until misses are smalltraining scorescore on these same rows94 percentthe exam nobody has seen200 rows it never met71 percent

Probar con los datos de entrenamiento no es un descuido pequeño, es tirar la medición entera. Si ajustas el modelo, miras la puntuación de prueba y vuelves a ajustar, el conjunto de prueba deja poco a poco de ser desconocido y empieza a ser memorizado. Por eso los profesionales dividen los datos en tres partes: entrenamiento, validación para el ajuste y un conjunto de prueba que se toca exactamente una vez. Si lo tocas más, su número deja de significar nada.

spam filter, 100 emails, 20 are spam

+----------------+----------------+----------------+
|                | says spam      | says inbox     |
+----------------+----------------+----------------+
| is spam        | 16             | 4              |
| is not spam    | 3              | 77             |
+----------------+----------------+----------------+

accuracy  = (16 + 77) / 100 = 93 percent
precision = 16 / 19         = 84 percent
recall    = 16 / 20         = 80 percentCada predicción de un filtro de spam cae en exactamente una de estas cuatro casillas.

Las cuatro casillas son la matriz de confusión, y los dos números útiles se leen directamente de ella. La precisión pregunta: de todo lo que el modelo marcó como spam, qué parte era spam de verdad? Una precisión baja significa que se está destruyendo correo legítimo, que es justo la queja que escriben los usuarios. El recall pregunta: de todo el spam que existía, qué parte atrapó el modelo? Un recall bajo significa que el spam sigue llegando, y de eso nadie se queja. Los dos describen el mismo modelo y responden a preguntas completamente distintas.

Los dos números tiran en direcciones opuestas, y un solo mando mueve ambos. Haz el filtro más estricto y la precisión sube mientras el recall baja: menos falsas alarmas, más spam que se cuela. Hazlo más permisivo y ocurre lo contrario. No hay ajuste que maximice los dos, así que la pregunta real nunca es cuál es la mejor puntuación, sino cuánto cuesta cada tipo de error aquí. Bloquear una oferta de trabajo es un desastre; dejar pasar un anuncio es un encogimiento de hombros.

same test, two thresholds

+----------------+-----------+-----------+
| threshold      | precision | recall    |
+----------------+-----------+-----------+
| strict         | high      | low       |
| loose          | low       | high      |
+----------------+-----------+-----------+

ask instead: what does a miss cost here?Un umbral y dos números que se mueven en direcciones contrarias.

Práctica

  1. Una prueba de cribado para una enfermedad rara informa 99 por ciento de exactitud en una ciudad de 1000 personas. Solo 10 tienen la enfermedad. Un colega dice que el asunto está prácticamente resuelto. Qué deberías comprobar primero?

    Pistas
    • Calcula cuántas personas de esa ciudad tienen realmente la enfermedad antes de juzgar la exactitud.
    • Un modelo que siempre responde no acierta casi siempre y no ayuda a nadie de la clase rara.
  2. Relaciona cada número del filtro de spam con lo que mide de verdad.

    Pistas
    • La precisión pregunta por los correos sobre los que actuó el filtro; el recall pregunta por el spam que existía.
    • De 20 correos de spam, 4 se quedaron en la bandeja de entrada: ese número pertenece al recall.
  3. Ordena los pasos de una evaluación honesta.

    1. 1Pedir al modelo predicciones para las filas selladas
    2. 2Calcular precision y recall frente a las etiquetas reales de esas filas
    3. 3Entrenar el modelo solo con la parte de entrenamiento
    4. 4Dividir la tabla en una parte de entrenamiento y otra de prueba, y sellar la de prueba
    Pistas
    • Las filas reservadas deben sellarse antes de que el modelo empiece a aprender, si no la división no demuestra nada.
    • No puedes comparar dos modelos hasta que los dos hayan dado un número sobre las mismas filas reservadas.