¡Esta es una revisión vieja del documento!
En este apartado vamos a ampliar las métricas que podemos usar con la clasificación binaria las cuales ya vimos en tema07.metricas.
Para ampliar nos vamos a basar en este diagrama (que se puede ver en Matriz de confusión en Wikipedia)
Las métricas que ya las hemos explicado en el tema de métricas son:
Las métricas que ahora vamos a ver son métricas que hacen la media entre alguna de las dos métricas que acabamos de indicar.
Para organizar las métricas según 2 criterios:
Las 4 métricas básicas son Sensibilidad, Especificidad, FPR y FNR. Según eso existen las siguientes métricas:
Fórmula que usan | |||||
---|---|---|---|---|---|
Métricas básicas que usan | Media aritmética | Media armónica | Media geométrica | Suma-1 | Ratio |
Sensibilidad (TPR) y Especificidad (TNR) | BalancedAccuracy=TPR+TNR2 | Informedness=TPR+TNR−1 | |||
Sensibilidad (TPR) y FPR | Positivelikelihoodratio=TPRFPR | ||||
Especificidad (TNR) y FNR | Negativelikelihoodratio=FNRTNR | ||||
FPR y FNR |
Mas información:
Fórmula que usan | |||||
---|---|---|---|---|---|
Métricas básicas que usan | Media aritmética | Media armónica | Media geométrica | Suma-1 | Ratio |
Sensibilidad (TPR) y Especificidad (TNR) | 11TPR+1TNR | √TPR∗TNR | TPRTNR y TNRTPR | ||
Sensibilidad (TPR) y FPR | TPR+FPR2 | 11TPR+1FPR | √TPR∗FPR | TPR+FPR−1 | FPRTPR |
Especificidad (TNR) y FNR | TNR+FNR2 | 11TNR+1FNR | √TNR∗FNR | TNR+FNR−1 | TNRFNR |
FPR y FNR | FPR+FNR2 | 11FPR+1FNR | √FPR∗FNR | FPR+FNR−1 | FNRFPR y FPRFNR |
Las 4 métricas derivadas son PPV, NPV, FDR y FOR.
Fórmula que usan | |||||
---|---|---|---|---|---|
Métricas básicas que usan | Media aritmética | Media armónica | Media geométrica | Suma-1 | Ratio |
PPV y NPV | Markdness=PPV+NPV−1 | ||||
PPV y FOR | |||||
NPV y FDR | |||||
FDR y FOR |
Fórmula que usan | |||||
---|---|---|---|---|---|
Métricas básicas que usan | Media aritmética | Media armónica | Media geométrica | Suma-1 | Ratio |
PPV y NPV | PPV+NPV2 | 11PPV+1NPV | √PPV∗NPV | PPVNPV y NPVPPV | |
PPV y FOR | PPV+FOR2 | 11PPV+1FOR | √PPV∗FOR | PPV+FOR−1 | PPVFOR y FORPPV |
NPV y FDR | NPV+FDR2 | 11NPV+1FDR | √NPV∗FDR | NPV+FDR−1 | NPVFDR y FDRNPV |
FDR y FOR | FDR+FOR2 | 11FDR+1FOR | √FDR∗FOR | FDR+FOR−1 | FDRFOR y FORFDR |
Son métricas que juntan una métrica básica con una métrica derivada. Debido a que existen 16 combinaciones no vamos a mostrar todas las que existen, sino solo las que he considerado interesantes.
Fórmula que usan | |||||
---|---|---|---|---|---|
Métricas básicas que usan | Media aritmética | Media armónica | Media geométrica | Suma-1 | Ratio |
PPV y Sensibilidad (TPR) | F1score=11PPV+1TPR | Fowlkes−Mallowsindex=√PPV∗TPR | |||
NPV y Especificidad (TNR) |
Fórmula que usan | |||||
---|---|---|---|---|---|
Métricas básicas que usan | Media aritmética | Media armónica | Media geométrica | Suma-1 | Ratio |
PPV y Sensibilidad (TPR) | PPV+TPR2 | PPV+TPR−1 | PPVTPR y TPRPPV | ||
NPV y Especificidad (TNR) | NPV+TNR2 | 11NPV+1TNR | √NPV∗TNR | NPV+TNR−1 | NPVTNR y TNRNPV |
Veamos ahora otras métricas que derivamos a partir de las básicas que son Sensibilidad, Especificidad, Prevalencia, FPR y FNR.
Accuracy (Exactitud) mide la proporción de predicciones correctas sobre el total de predicciones realizadas. Por lo que su fórmula es:
Accuracy=TP+TNTP+FN+FP+TN
Accuracy=P(Predicción \; correcta|Predicción \; realizada)
P(Predicción \; correcta|Predicción \; realizada)=P(Positivo \cap Enfermo) + P(Negativo \cap Sano)=
P(Positivo|Enfermo)*P(Enfermo)+P(Negativo|Sano)*P(Sano)=Sensibilidad*Prevalencia+Especificidad*(1-Prevalencia)
Accuracy=Sensibilidad*Prevalencia+Especificidad*(1-Prevalencia)
Sensibilidad*Prevalencia+Especificidad*(1-Prevalencia)=\frac{TP}{(TP+FN)}*\frac{(TP+FN)}{TP+FN+FP+TN}+\frac{TN}{(FP+TN)}*\frac{(FP+TN)}{TP+FN+FP+TN}=
\frac{TP}{TP+FN+FP+TN}+\frac{TN}{TP+FN+FP+TN}=\frac{TP+TN}{TP+FN+FP+TN}=Accuracy
Realmente esta no es una nueva métrica sino que es la misma que Accuracy pero con una prevalencia del 0.5
Balanced \; Accuracy=\frac{Sensibilidad+Especificidad}{2}
Accuracy=Sensibilidad*Prevalencia+Especificidad*(1-Prevalencia)=
Sensibilidad*0,5+Especificidad*(1-0,5)=Sensibilidad*0,5+Especificidad*0,5=
\frac{Sensibilidad}{2}+\frac{Especificidad}{2}=\frac{Sensibilidad+Especificidad}{2}=Balanced \; Accuracy
Este índice es la división entre 2 probabilidades:
Indice \; Jaccard=\frac{P(Positivo \cap Enfermo)}{P(Positivo \cup Enfermo)}=\frac{TP}{TP+FP+FN}
\frac{P(Positivo \cap Enfermo)}{P(Positivo \cup Enfermo)}=
\frac{P(Positivo|Enfermo)*P(Enfermo)}{P(Positivo)+P(Enfermo)-P(Positivo \cap Enfermo)}=\frac{P(Positivo|Enfermo)*P(Enfermo)}{P(Positivo)+P(Enfermo)-P(Positivo|Enfermo)*P(Enfermo)}
\begin{array} \\ P(Enfermo)&=&\frac{TP+FN}{TP+FN+FP+TN} \\ P(Sano)&=&\frac{FP+TN}{TP+FN+FP+TN} \\ P(Positivo)&=&\frac{TP+FP}{TP+FN+FP+TN} \\ P(Negativo)&=&\frac{FN+TN}{TP+FN+FP+TN} \\ P(Positivo|Enfermo)&=&\frac{TP}{TP+FN} \end{array}
\frac{P(Positivo|Enfermo)*P(Enfermo)}{P(Positivo)+P(Enfermo)-P(Positivo|Enfermo)*P(Enfermo)}=
\left ( \frac{TP}{TP+FN}*\frac{TP+FN}{TP+FN+FP+TN} \right ) \div \left (\frac{TP+FP}{TP+FN+FP+TN}+\frac{TP+FN}{TP+FN+FP+TN}-\frac{TP}{TP+FN}*\frac{TP+FN}{TP+FN+FP+TN} \right )=
\left ( \frac{TP}{TP+FN+FP+TN} \right ) \div \left (\frac{TP+FP}{TP+FN+FP+TN}+\frac{TP+FN}{TP+FN+FP+TN}-\frac{TP}{TP+FN+FP+TN} \right )=
\left ( \frac{TP}{TP+FN+FP+TN} \right ) \div \left (\frac{TP+FP+TP+FN-TP}{TP+FN+FP+TN} \right )=\left ( \frac{TP}{TP+FN+FP+TN} \right ) \div \left (\frac{TP+FP+FN}{TP+FN+FP+TN} \right )=
\frac{TP}{TP+FP+FN}=Indice \; Jaccard
P(Positivo)=\frac{P(Positivo|Enfermo)*P(Enfermo)}{P(Enfermo|Positivo)}=
\frac{P(Positivo|Enfermo)*P(Enfermo)}{1} \div \frac{P(Positivo|Enfermo)*P(Enfermo)}{P(Positivo|Enfermo)*P(Enfermo)+P(Positivo|Sano)*P(Sano)}=
Sensibilidad*Prevalencia+(1-Especificidad)*(1-Prevalencia)
Indice \; Jaccard=\frac{P(Positivo|Enfermo)*P(Enfermo)}{P(Positivo)+P(Enfermo)-P(Positivo|Enfermo)*P(Enfermo)}=
\frac{Sensibilidad*Prevalencia}{Sensibilidad*Prevalencia+(1-Especificidad)*(1-Prevalencia)+Prevalencia-Sensibilidad*Prevalencia}=
\frac{Sensibilidad*Prevalencia}{(1-Especificidad)*(1-Prevalencia)+Prevalencia}
Indice \; Jaccard=\frac{Sensibilidad*Prevalencia}{(1-Especificidad)*(1-Prevalencia)+Prevalencia}
La métrica de Prevalence threshold está explicada en Prevalence threshold (ϕe) and the geometry of screening curves.
Lo único que diremos respecto a la formula es que en el artículo aparece como:
Prevalence \; threshold=\frac{\sqrt{Sensibilidad(1-Especificidad)}+(Especificidad-1)}{Sensibilidad+Especificidad+1} Que jugando un poco con los signos se obtiene la formula equivalente: Prevalence \; threshold=\frac{\sqrt{Sensibilidad*FPR}-FPR}{Sensibilidad-FPR}
Se define como la división entre Positive likelihood ratio (LR+) y Negative likelihood ratio (LR-)
DOR=\frac{LR+}{LR-}=\frac{TP*TN}{FP*FN}
DOR=\frac{LR+}{LR-}=\frac{\frac{TPR}{1-TNR}}{\frac{1-TPR}{TNR}}=\frac{Sensibilidad*Especificidad}{(1-Sensibilidad)(1-Especificidad)}
Es otra métrica pero que tiene en cuenta que los datos no estén balanceados.
El MMC tiene un valor entre -1 a 1. Siendo:
MCC = \frac{ \mathit{TP} \times \mathit{TN} - \mathit{FP} \times \mathit{FN} } {\sqrt{ (\mathit{TP} + \mathit{FP}) ( \mathit{TP} + \mathit{FN} ) ( \mathit{TN} + \mathit{FP} ) ( \mathit{TN} + \mathit{FN} ) } }=\sqrt{TPR \times TNR \times PPV \times NPV}-\sqrt{FNR \times FPR \times FOR \times FDR}
Podemos hacer uso de la métrica con la función sklearn.metrics.matthews_corrcoef
de sklearn
Ejemplo de uso:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
from sklearn.metrics import matthews_corrcoef y_true = [ 1 , 1 , 1 , 1 , 0 , 0 , 0 , 0 ] y_pred = [ 1 , 1 , 1 , 1 , 0 , 0 , 0 , 0 ] print ( "Valor para una predicción que acierta siempre=" ,matthews_corrcoef(y_true,y_pred)) y_true = [ 1 , 1 , 1 , 1 , 0 , 0 , 0 , 0 ] y_pred = [ 1 , 1 , 0 , 0 , 1 , 1 , 0 , 0 ] print ( "Valor para una predicción que acierta la mitad=" ,matthews_corrcoef(y_true,y_pred)) y_true = [ 1 , 1 , 1 , 1 , 0 , 0 , 0 , 0 ] y_pred = [ 0 , 0 , 0 , 0 , 1 , 1 , 1 , 1 ] print ( "Valor para una predicción que nunca acierta=" ,matthews_corrcoef(y_true,y_pred)) |
Valor para una predicción que acierta siempre= 1.0 Valor para una predicción que acierta la mitad= 0.0 Valor para una predicción que nunca acierta= -1.0
Mas información: