Dos formas de equivocarse
La diferencia entre precisión y exhaustividad resulta evidente si te dedicas a evaluar modelos de aprendizaje automático. Para los demás, no tanto.
Lo mejor es verlo con un ejemplo.
Supón que estás creando un sistema RAG y quieres recuperar información de tu almacén vectorial con gran fiabilidad. Una de las primeras preguntas es cuántos fragmentos debes recuperar, es decir, qué valor asignar a top_k.
Si recuperas 3 fragmentos, es probable que todos sean muy relevantes. Pero puedes dejar fuera fragmentos relevantes situados en la posición 4 o 10. Parte del material útil se queda fuera.
Podrías intentar resolverlo aumentando top_k a 50. Así recuperas todo lo relevante, pero también mucho material irrelevante. Eso aumenta la probabilidad de que el LLM devuelva información con “ruido”, aunque hayas recuperado todos los fragmentos relevantes del almacén vectorial.
Es un equilibrio entre precisión y exhaustividad, denominada recall en inglés.
Recuperar los 3 primeros resultados ofrece una precisión alta porque lo obtenido es muy relevante. Da en el blanco. Pero la exhaustividad es baja porque falta material.
En cambio, recuperar los 50 primeros ofrece una exhaustividad alta, porque has encontrado todo, pero menor precisión, porque también has recuperado mucho material inútil.
La precisión y la exhaustividad aparecen siempre que un sistema debe detectar algo. Su tarea es binaria: detectar X, verdadero, o no detectarlo, falso. Al hacerlo puede acertar o equivocarse.
Veremos esto con más detalle al hablar de la matriz de confusión.
Sí, puede resultar confuso. Por eso conviene entender primero por qué usamos precisión y exhaustividad. La respuesta breve es que medir solo la exactitud lleva a engaño.
Por qué la exactitud por sí sola engaña
Supón que un detector recibe 100 ejemplos. Diez contienen el evento que debe detectar. Pero el detector responde “no hay evento” en los 100 casos. Obtiene un 90 % en la prueba porque acierta en el 90 % de los casos sin evento.
Sin embargo, acierta en el 0 % de los eventos presentes que debería haber detectado.
Piensa en un guardia de seguridad en la entrada de un edificio. Si solo 1 de cada 100 visitantes es una amenaza, un guardia que deja pasar a todos “acierta el 99 %” al permitir la entrada a las personas adecuadas. Pero si medimos su éxito al mantener fuera a las personas inadecuadas, acierta el 0 %, porque su trabajo consiste precisamente en detectar al único visitante peligroso.
Cuando un conjunto de datos está muy sesgado hacia un resultado, un modelo que se limita a adivinar puede obtener una puntuación alta por casualidad y parecer exacto sobre el papel. Pero falla al predecir aquello que debía predecir.
Identifica el evento
Para aclararlo, me resulta útil no analizar precisión y exhaustividad hasta definir qué debe detectar el sistema. Ambas métricas dependen de la tarea.
Empieza por el caso de verdadero positivo.
Para un filtro de correo no deseado, el evento es “este correo es spam”. Para un detector de humo, es “hay humo”.
Ese es el evento que hay que señalar. Hasta aquí, bien.
¿Y si el sistema tiene dos tareas? Por ejemplo, en un modelo de voz a texto con detección automática de turnos, el evento puede ser tanto “el usuario ha empezado a hablar” como “el usuario ha dejado de hablar”. Dejar de hablar no equivale a haber terminado el turno. Cada evento necesita sus propias puntuaciones de precisión y exhaustividad.
Un positivo significa que el sistema afirma que el evento ha ocurrido. Es una etiqueta de la tarea de detección, no un juicio de valor.
| Hubo habla | No hubo habla | |
|---|---|---|
| El sistema detecta habla | Verdadero positivo (TP) | Falso positivo (FP) |
| El sistema no detecta habla | Falso negativo (FN) | Verdadero negativo (TN) |
Esta tabla se llama matriz de confusión. Recoge todos los resultados posibles de detección de un evento, comparando lo que ocurrió con lo que indicó el sistema.
Antes de elegir una métrica, responde a cuatro preguntas:
- ¿Qué evento debe detectar el sistema?
- ¿Qué cuenta como una activación del sistema?
- ¿Cómo sería un falso positivo?
- ¿Cómo sería un falso negativo?
Empieza por el denominador
Empezar por el denominador me ayudó a entender la diferencia entre precisión y exhaustividad.
Precisión
El denominador de la precisión incluye todo lo que el modelo predijo como positivo, tanto aciertos como errores. Verdaderos positivos más falsos positivos.
En el numerador contamos cuántas de esas predicciones fueron correctas, es decir, los verdaderos positivos.
La fórmula es:
precision = true positives / (true positives + false positives)
Considera el evento “ha empezado el habla”. Hay 100 muestras de audio. El filtro marca 80 como inicio de habla, pero solo 60 contienen realmente ese evento.
Hay 60 verdaderos positivos. Los falsos positivos son 80 - 60 = 20. Por tanto:
precision = 60 / (60 + 20) = 75%
Una precisión baja identifica erróneamente otros sonidos, o incluso el silencio, como habla.
La precisión es, por tanto, la proporción entre lo que el modelo acertó y la suma de lo que acertó y lo que marcó incorrectamente.
Exhaustividad
El denominador de la exhaustividad cuenta todos los eventos positivos que existen realmente, tanto detectados como omitidos. Verdaderos positivos más falsos negativos. Incluye todos los eventos reales, los haya encontrado el modelo o no.
El numerador es el mismo que en la precisión: contamos los verdaderos positivos.
recall = true positives / (true positives + false negatives)
La exhaustividad es la proporción entre lo que el modelo acertó y la suma de lo que acertó y lo que debería haber detectado, es decir, lo que excluyó por error.
En el mismo ejemplo de detección del habla hay 60 verdaderos positivos. Hay 0 falsos negativos porque el modelo detectó todos los eventos reales y algunos casos adicionales.
Obtenemos:
recall = 60 / (60 + 0) = 100%
Para entender mejor el valor de la exhaustividad, cambiemos el ejemplo. Hay 100 muestras de audio. El modelo marca 50 como inicio de habla, pero en realidad 60 contienen ese evento.
Hay 50 verdaderos positivos y 60 - 50 = 10 falsos negativos. Son 10 inicios de habla que el modelo no detectó.
Por tanto:
recall = 50 / (50 + 10) = 83%
precision = 50 / (50 + 0) = 100%
En este nuevo ejemplo, la precisión es del 100 % porque no hay falsos positivos.
Observa también la diferencia respecto a una medida sencilla de exactitud:
accuracy = (true positives + true negatives) / all samples
Usa la exactitud cuando todas las decisiones tengan un coste similar y el conjunto de evaluación represente la producción. Pero si el evento es poco frecuente o los dos tipos de error tienen costes distintos, informar mediante la matriz de confusión cambia por completo la lectura del rendimiento.
Si quieres profundizar en las fórmulas matemáticas y sus derivaciones, consulta el artículo completo de Wikipedia.
El equilibrio entre precisión y exhaustividad
Los ejemplos anteriores muestran un equilibrio real. Al aumentar una métrica, la otra tiende a disminuir.
El ejemplo inicial de recuperación explica por qué. Recuperar más documentos aumenta la exhaustividad, pero reduce la precisión. Recuperar menos aumenta la precisión, pero reduce la exhaustividad.
En la práctica, la mayoría de los modelos asignan una puntuación de confianza a sus detecciones, un número entre 0 y 1 que representa su grado de certeza. Un umbral es el límite que eliges: “marca como positivo todo lo que supere 0,7”.
Funciona como el control de sensibilidad de un audífono. Si la subes, oyes todas las conversaciones, pero también el aire acondicionado, el tráfico y el televisor del vecino. Si la bajas, solo oyes habla fuerte y clara, pero pierdes las voces suaves.
Al subir el umbral, el modelo produce menos falsos positivos. Aumenta la precisión.
Al bajarlo, detecta correctamente más casos y reduce los falsos negativos. Aumenta la exhaustividad.
Los modelos situados en la frontera de Pareto, como Ink-2 de Cartesia, equilibran estas compensaciones de forma óptima.
Aplicación a la voz con IA
La voz con IA incluye varias tareas de detección y predicción. No las evalúes todas con una sola cifra de exactitud.
La detección de actividad vocal, o VAD, determina si un intervalo de audio contiene habla. Un conjunto de prueba puede contener muchos más intervalos de silencio que de habla. Predecir siempre silencio parece exacto, aunque omita toda el habla. Mide la precisión y la exhaustividad del habla. Informa de la frecuencia con que el detector la identifica correctamente y de la frecuencia con que la omite.
La detección de turnos decide cuándo una persona toma o cede el turno de conversación. Los eventos de inicio y final necesitan métricas separadas. A continuación usamos dos eventos de turno de ASR de Ink-2.
turn_start: ¿ha empezado a hablar el usuario?
El evento objetivo es “el usuario ha empezado a hablar”. El sistema se activa cuando emite un evento turn_start.
- Falso positivo: emite
turn_startante ruido de teclado, conversaciones de fondo, sonido que se cuela en el micrófono o el propio audio del agente. - Falso negativo: el usuario empieza a hablar y el sistema no lo detecta.
Una precisión baja de turn_start hace que el sistema reaccione a audio ajeno al usuario. Si turn_start detiene la reproducción, los falsos positivos provocan interrupciones indebidas.
Una exhaustividad baja de turn_start puede impedir que el habla real llegue al resto del sistema.
turn_end: ¿ha terminado la persona de hablar?
El evento objetivo es “el usuario ha terminado su turno”. El sistema se activa cuando emite turn_end, tras lo que la aplicación puede responder.
- Falso positivo: emite
turn_endcuando el usuario tiene intención de continuar. - Falso negativo: el usuario ha terminado, pero el sistema sigue esperando.
Una precisión baja de turn_end puede cortar al usuario tras una pausa para pensar, corregir una frase o respirar. Una exhaustividad baja de turn_end produce silencios después de que haya terminado.
Para ambos eventos, define cuándo coincide una marca temporal predicha con una etiquetada. Antes de calcular las puntuaciones, define la persona objetivo, cómo etiquetar el habla superpuesta y el audio de fondo, y qué significa “haber terminado”.
Elige la métrica según el fallo
- Presenta por separado la precisión y la exhaustividad de
turn_startyturn_end. - Elige el umbral según el error que tenga mayor coste para el producto.
- Examina ejemplos de falsos positivos y falsos negativos, además de las puntuaciones agregadas.
- Usa la exactitud como contexto, no como toda la evaluación.
La próxima vez que un modelo anuncie un 90 % de exactitud, pregunta qué detectó, con qué frecuencia ocurrió ese evento y qué errores oculta la cifra.
