Herramientas de usuario

Herramientas del sitio


clase:iabd:pia:2eval:tema08.otras-metricas

Diferencias

Muestra las diferencias entre dos versiones de la página.


clase:iabd:pia:2eval:tema08.otras-metricas [2025/11/03 11:37] (actual) – creado - editor externo 127.0.0.1
Línea 1: Línea 1:
 +====== 8.f Otras métricas ======
 +Veamos ahora otras métricas de clasificación.
 +
 +===== Top-N-Accuracy =====
 +En problemas de clasificación en los que hay muchísimos clases a clasificar , se puede usar otra métrica llamada **Top-N Accuracy**. Veamos en que consiste.
 +
 +El problema de clasificación de ImageNet hay 1000 posibles clases a clasificar. En ese caso cuando decimos que un "gato" es un "gato" es que la clase gato tiene la mayor probabilidad. Veamos un ejemplo con 10 objetos.
 +
 +^ Clase ^ Probabilidad ^
 +| Casa |  0.06 |
 +| Botella |  0,04 |
 +| Farola |  0,15 |
 +| Gato |  0,34 |
 +| Perro |  0,28 |
 +| Niño |  0,04 |
 +| Adulto |  0,02 |
 +| Bicicleta |  0,03 |
 +| Semáforo |  0,001 |
 +| Puente |  0,039 |
 +
 +
 +Si la imagen es de un gato, en este caso diríamos que ha acertado ya que la probabilidad de ser gato es del 34% y es la mayor de todas. Y con eso calcularíamos el valor de ''Accuracy''.
 +
 +Sin embargo veamos este otro ejemplo:
 +
 +
 +^ Clase ^ Probabilidad ^
 +| Casa |  0.06 |
 +| Botella |  0,04 |
 +| Farola |  0,15 |
 +| Gato |  0,28 |
 +| Perro |  0,34 |
 +| Niño |  0,04 |
 +| Adulto |  0,02 |
 +| Bicicleta |  0,03 |
 +| Semáforo |  0,001 |
 +| Puente |  0,039 |
 +
 +En este nuevo ejemplo, también le hemos pasado una imagen de una gato pero la probabilidad de ser gato es del 28% mientras que la de ser perro es del 34%. Por ello diríamos que no ha acertado.
 +
 +Sin embargo usando la métrica de ''Top-2 Accuracy'', diríamos que ha acertado si el gato está entre las 2 que tiene mayor probabilidad. Y en este caso si que diríamos que ha acertado. 
 +
 +Esta métrica tiene sentido cuando hay muchísimas clases (En ImageNet hay 1000 clases). Y aunque la predicción correcta no sea la mejor al menos está entre las 2 primeras ''Top-2-Accuracy''.
 +
 +En el siguiente artículo [[https://keras.io/examples/vision/image_classification_with_vision_transformer/|Image classification with Vision Transformer]] se ve como se usa la métrica de ''Top-5-Accuracy''.
 +
 +
 +
 +=== Keras ===
 +en keras se puede usar esta métrica con [[https://www.tensorflow.org/api_docs/python/tf/keras/metrics/SparseTopKCategoricalAccuracy|tf.keras.metrics.SparseTopKCategoricalAccuracy]]. 
 +
 +Por defecto esta métrica calcula es ''top-5-Accuracy''.Pero se puede cambiar con el parámetro ''k''.
 +
 +<sxh python>
 +model.compile(optimizer='sgd',loss='sparse_categorical_crossentropy',metrics=[keras.metrics.SparseTopKCategoricalAccuracy()])
 +model.compile(optimizer='sgd',loss='sparse_categorical_crossentropy',metrics=[keras.metrics.SparseTopKCategoricalAccuracy(k=5, name='top-5-accuracy')])
 +</sxh>
 +
 +
 +Más información:
 +  * [[https://www.baeldung.com/cs/top-n-accuracy-metrics|Top-N Accuracy Metrics]]
 +  * [[https://www.image-net.org/index.php|ImageNet]]
 +  * [[https://blog.roboflow.com/introduction-to-imagenet/|An Introduction to ImageNet]]
 +  * [[https://keras.io/examples/vision/image_classification_with_vision_transformer/|Image classification with Vision Transformer]]
 +  * [[https://stackoverflow.com/questions/58565394/what-is-the-difference-between-sparse-categorical-crossentropy-and-categorical-c|What is the difference between sparse_categorical_crossentropy and categorical_crossentropy?]]
 +
 +===== Fbeta-score =====
 +El $F_{\beta}\text{-score}$ es como [[tema08.metricas_derivadas#F1-score]] pero permite ajustar si penalizamos más los falsos positivos o los falsos negativos. 
 +Al dar más importancia a uno que a otro realmente no es una métrica de rendimiento general ya que está "ponderada".
 +
 +La formula es:
 +
 +$$
 +F_{\beta}\text{-score}=\frac{(1+\beta^2) \cdot precision \cdot sensibilidad}{\beta^2 \cdot precision+sensibilidad}
 +$$
 +
 +Si $\beta=1$ la fórmula es la de $F_1\text{-score}$ por eso se le llama así porque la $\beta$ es un 1.
 +
 +Interpretación de β
 +  * Si β = 1, la métrica se reduce al F1-score, que da igual peso a la precisión y la sensibilidad.
 +  * Si β > 1, penaliza más una baja sensibilidad, lo que significa que los falsos negativos (FN) penalizan más que los falsos positivos (FP).
 +  * Si β < 1, penaliza más una baja precisión, lo que significa que los falsos positivos (FP) penalizan más que los falsos negativos (FN).
 +
 +Veamos ahora unos ejemplos:
 +
 +  * Con β=1 ambos están equilibrados. Y da lo mismo que se intercambien los valores de Sensibilidad y Precisión
 +
 +^  Sensibilidad  ^  Precisión  ^  β  ^  $F_{1}\text{-score}$  ^
 +|  $0,2$  |  $0,6$  |  $0,5$  |  $0,3$  |
 +|  $0,6$  |  $0,2$  |  $0,5$  |  $0,3$  |
 +
 +  * Con β=2, la baja sensibilidad penaliza 4 veces más que la precisión
 +
 +^  Sensibilidad  ^  Precisión  ^  β  ^  $F_{2}\text{-score}$  ^
 +|  $0,2$  |  $0,6$  |  $2$  |  $0,23$  |
 +|  $0,6$  |  $0,2$  |  $2$  |  $0,43$  |
 +
 +
 +El caso base es 0,3 y al usar β=2; con una baja sensibilidad (0,2) el resultado es más bajo aun (0,23) mientras que con una alta sensibilidad (0,6) el valor es mayor (0,43)
 +
 +  * Con β=0,5 la baja precisión penaliza 4 veces más que la sensibilidad
 +
 +^  Sensibilidad  ^  Precisión  ^  β  ^  $F_{0.5}\text{-score}$  ^
 +|  $0,2$  |  $0,6$  |  $0,5$  |  $0,43$  |
 +|  $0,6$  |  $0,2$  |  $0,5$  |  $0,23$  |
 +
 +El caso base es 0,3 y al usar β=2 con una baja precisión (0,2) el resultado es más bajo aun (0,23) mientras que con una alta precisión (0,6) el valor es mayor (0,43)
 +
 +Más información:
 +  * [[https://stats.stackexchange.com/questions/221997/why-f-beta-score-define-beta-like-that/379474|Why f beta score define beta like that?]]
 +  * [[https://datascience.stackexchange.com/questions/22234/explanation-of-the-f-beta-formula|Explanation of the F beta formula]]
 +  * {{ :clase:iabd:pia:2eval:the_truth_of_the_f-measure.pdf |The truth of the F-measure}}
 +
 +==== Valor de β ====
 +¿Pero cuanto es realmente se valor? Veámoslo con un ejemplo con β = 2 frente a β = 2.5.
 +  * Si β = 2, la baja sensibilidad es 4 veces más importante que la precisión, porque 𝛽²=2²=4
 +  * Si β = 2,5, la baja precisión es 6,25 veces más importante que la sensibilidad, porque 𝛽²=2,5²=6,25
 +
 +Es decir, el valor de β no es la relación directa entre sensibilidad y precisión, sino que se eleva al cuadrado. 
 +A medida que β aumenta, la sensibilidad pesa exponencialmente más que la precisión.
 +
 +Para calcular la $\beta$ se usa la regla de:
 +  * Si queremos que la baja sensibilidad penalice $n$ veces más que la precisión, la fórmula es:
 +$$
 +\beta=\sqrt{n}
 +$$
 +
 +  * Si queremos que la baja precisión penalice $n$ veces más que la sensibilidad, la fórmula es:
 +$$
 +\beta=\sqrt{\frac{1}{n}}
 +$$
 +
 +
 +
 +Veamos ahora ejemplo de valores alto y bajos de β.
 +  * **β>1**:Cuando es más costoso cometer falsos negativos (FN), es decir, cuando es crítico detectar todos los casos positivos aunque implique aumentar los falsos positivos.
 +    * Diagnóstico de enfermedades graves (Ejemplo: cáncer, VIH, COVID-19):Un falso negativo significa no diagnosticar a un paciente enfermo, lo que puede ser catastrófico.Es mejor un falso positivo (hacer más pruebas) que un falso negativo (no tratar a un paciente).
 +    * Detección de fraude financiero: Es preferible revisar más transacciones sospechosas (falsos positivos) que dejar pasar fraudes reales (falsos negativos).
 +    * Sistemas de seguridad y detección de amenazas (Ejemplo: detección de intrusos en redes, ataques cibernéticos, explosivos en aeropuertos, alarmas de incendio): No detectar una amenaza real puede ser desastroso. Se prefiere una mayor tasa de alertas (aunque haya algunas falsas).
 +  * **β<1**: Cuando es más costoso cometer falsos positivos (FP), es decir, cuando es crítico que los positivos realmente sean correctos, aunque se pasen por alto algunos casos positivos reales.
 +    * Clasificación de correos como spam: Un falso negativo (un spam que llega a la bandeja de entrada) es molesto, pero un falso positivo (un email importante que va a la carpeta de spam) puede ser grave.
 +    * Recomendación de productos o publicidad personalizada: Mostrar un anuncio irrelevante a un usuario (falso positivo) puede ser perjudicial para la experiencia del usuario y la tasa de conversión. Se prefiere precisión para mostrar menos anuncios pero mejor seleccionados.
 +    * Contratación automática basada en IA: Un falso positivo significaría contratar a un candidato inadecuado, lo que puede ser costoso para la empresa. Es mejor ser más estricto en la selección, aunque se descarte algún candidato válido.
 +    * Sistemas judiciales y de evaluación de riesgos penales: Un falso positivo (clasificar a una persona como de "alto riesgo" cuando no lo es) puede tener consecuencias graves en términos de derechos humanos. Se prefiere alta precisión para evitar etiquetar injustamente a personas como criminales.
 +
 +==== Keras ====
 +En keras se puede usar esta métrica con [[https://www.tensorflow.org/api_docs/python/tf/keras/metrics/FBetaScore|tf.keras.metrics.FBetaScore]]. 
 +
 +Lo importante es que hay que establecer el parámetro de β (como un ''float'' y no como un ''int'').
 +
 +<sxh python>
 +metrics=[tf.keras.metrics.FBetaScore(beta=2.0)]
 +</sxh>
 +
 +<sxh python>
 +history.history['fbeta_score']
 +history.history['val_fbeta_score']
 +</sxh>
 +
 +
 +Más información:
 +  * [[https://www.tensorflow.org/api_docs/python/tf/keras/metrics/FBetaScore|tf.keras.metrics.FBetaScore]]
 +
 +
 +