Aprendizaje automático: métricas de rendimiento
Hay varias métricas que podemos utilizar para evaluar el rendimiento de los algoritmos ML, la clasificación y los algoritmos de regresión. Debemos elegir cuidadosamente las métricas para evaluar el rendimiento del AA porque:
La forma en que se mide y se compara el rendimiento de los algoritmos de aprendizaje automático dependerá completamente de la métrica que elija.
La forma en que pondera la importancia de varias características en el resultado estará completamente influenciada por la métrica que elija.
Métricas de rendimiento para problemas de clasificación
Hemos discutido la clasificación y sus algoritmos en los capítulos anteriores. Aquí, vamos a discutir varias métricas de desempeño que pueden usarse para evaluar predicciones para problemas de clasificación.
Matriz de confusión
Es la forma más fácil de medir el desempeño de un problema de clasificación donde la salida puede ser de dos o más tipos de clases. Una matriz de confusión no es más que una tabla con dos dimensiones, a saber. "Real" y "Previsto" y, además, ambas dimensiones tienen "Positivos verdaderos (TP)", "Negativos verdaderos (TN)", "Positivos falsos (FP)", "Negativos falsos (FN)" como se muestra a continuación:
La explicación de los términos asociados con la matriz de confusión es la siguiente:
True Positives (TP) - Es el caso cuando tanto la clase real como la clase pronosticada del punto de datos es 1.
True Negatives (TN) - Es el caso cuando tanto la clase real como la clase pronosticada del punto de datos es 0.
False Positives (FP) - Es el caso cuando la clase real de punto de datos es 0 y la clase predicha de punto de datos es 1.
False Negatives (FN) - Es el caso cuando la clase real de punto de datos es 1 y la clase predicha de punto de datos es 0.
Podemos usar la función confusion_matrix de sklearn.metrics para calcular la Matriz de confusión de nuestro modelo de clasificación.
Precisión de clasificación
Es la métrica de rendimiento más común para los algoritmos de clasificación. Puede definirse como el número de predicciones correctas realizadas como una proporción de todas las predicciones realizadas. Podemos calcularlo fácilmente mediante matriz de confusión con la ayuda de la siguiente fórmula:
$$ Precisión = \ frac {TP + TN} {+++} $$Podemos usar la función precision_score de sklearn.metrics para calcular la precisión de nuestro modelo de clasificación.
Informe de clasificación
Este informe consta de las puntuaciones de Precisiones, Recuperación, F1 y Soporte. Se explican de la siguiente manera:
Precisión
La precisión, utilizada en la recuperación de documentos, puede definirse como la cantidad de documentos correctos devueltos por nuestro modelo ML. Podemos calcularlo fácilmente mediante matriz de confusión con la ayuda de la siguiente fórmula:
$$ Precisión = \ frac {TP} {TP + FP} $$Recuerdo o sensibilidad
La recuperación puede definirse como la cantidad de positivos devueltos por nuestro modelo de AA. Podemos calcularlo fácilmente mediante matriz de confusión con la ayuda de la siguiente fórmula:
$$ Recall = \ frac {TP} {TP + FN} $$Especificidad
La especificidad, en contraste con el recuerdo, puede definirse como el número de negativos devueltos por nuestro modelo ML. Podemos calcularlo fácilmente mediante matriz de confusión con la ayuda de la siguiente fórmula:
$$ Especificidad = \ frac {TN} {TN + FP} $$Apoyo
El soporte puede definirse como el número de muestras de la respuesta verdadera que se encuentra en cada clase de valores objetivo.
Puntuación F1
Esta puntuación nos dará la media armónica de precisión y recuerdo. Matemáticamente, la puntuación F1 es el promedio ponderado de la precisión y el recuerdo. El mejor valor de F1 sería 1 y el peor sería 0. Podemos calcular la puntuación de F1 con la ayuda de la siguiente fórmula:
= ∗ (∗) / (+)
La puntuación F1 tiene una contribución relativa igual de precisión y recuerdo.
Podemos usar la función de clasificación_report de sklearn.metrics para obtener el informe de clasificación de nuestro modelo de clasificación.
AUC (área bajo la curva ROC)
AUC (Area Under Curve) -ROC (Receiver Operating Characteristic) es una métrica de rendimiento, basada en valores de umbral variables, para problemas de clasificación. Como sugiere el nombre, ROC es una curva de probabilidad y AUC mide la separabilidad. En palabras simples, la métrica AUC-ROC nos informará sobre la capacidad del modelo para distinguir las clases. Cuanto mayor sea el AUC, mejor el modelo.
Matemáticamente, se puede crear trazando TPR (Tasa de verdaderos positivos), es decir, sensibilidad o recuperación frente a FPR (Tasa de falsos positivos), es decir, 1-Especificidad, en varios valores de umbral. A continuación se muestra el gráfico que muestra ROC, AUC con TPR en el eje y y FPR en el eje x:
Podemos usar la función roc_auc_score de sklearn.metrics para calcular AUC-ROC.
LOGLOSS (pérdida logarítmica)
También se denomina pérdida de regresión logística o pérdida de entropía cruzada. Básicamente, se define en estimaciones de probabilidad y mide el rendimiento de un modelo de clasificación donde la entrada es un valor de probabilidad entre 0 y 1. Se puede entender más claramente si se diferencia con precisión. Como sabemos, la precisión es el recuento de predicciones (valor predicho = valor real) en nuestro modelo, mientras que Log Loss es la cantidad de incertidumbre de nuestra predicción basada en cuánto varía de la etiqueta real. Con la ayuda del valor de Log Loss, podemos tener una vista más precisa del desempeño de nuestro modelo. Podemos usar la función log_loss de sklearn.metrics para calcular la pérdida de registro.
Ejemplo
La siguiente es una receta simple en Python que nos dará una idea de cómo podemos usar las métricas de rendimiento explicadas anteriormente en el modelo de clasificación binaria:
from sklearn.metrics import confusion_matrix
from sklearn.metrics import accuracy_score
from sklearn.metrics import classification_report
from sklearn.metrics import roc_auc_score
from sklearn.metrics import log_loss
X_actual = [1, 1, 0, 1, 0, 0, 1, 0, 0, 0]
Y_predic = [1, 0, 1, 1, 1, 0, 1, 1, 0, 0]
results = confusion_matrix(X_actual, Y_predic)
print ('Confusion Matrix :')
print(results)
print ('Accuracy Score is',accuracy_score(X_actual, Y_predic))
print ('Classification Report : ')
print (classification_report(X_actual, Y_predic))
print('AUC-ROC:',roc_auc_score(X_actual, Y_predic))
print('LOGLOSS Value is',log_loss(X_actual, Y_predic))
Salida
Confusion Matrix :
[
[3 3]
[1 3]
]
Accuracy Score is 0.6
Classification Report :
precision recall f1-score support
0 0.75 0.50 0.60 6
1 0.50 0.75 0.60 4
micro avg 0.60 0.60 0.60 10
macro avg 0.62 0.62 0.60 10
weighted avg 0.65 0.60 0.60 10
AUC-ROC: 0.625
LOGLOSS Value is 13.815750437193334
Métricas de rendimiento para problemas de regresión
Hemos analizado la regresión y sus algoritmos en capítulos anteriores. Aquí, vamos a discutir varias métricas de desempeño que se pueden usar para evaluar predicciones para problemas de regresión.
Error absoluto medio (MAE)
Es la métrica de error más simple utilizada en problemas de regresión. Básicamente es la suma del promedio de la diferencia absoluta entre los valores predichos y reales. En palabras simples, con MAE, podemos tener una idea de cuán equivocadas fueron las predicciones. MAE no indica la dirección del modelo, es decir, no hay indicios de rendimiento insuficiente o excesivo del modelo. La siguiente es la fórmula para calcular MAE:
$$ MAE = \ frac {1} {n} \ sum | Y - \ hat {Y} | $$Aquí, = valores de salida reales
Y $ \ hat {Y} $ = Valores de salida previstos.
Podemos usar la función mean_absolute_error de sklearn.metrics para calcular MAE.
Error cuadrático medio (MSE)
MSE es como MAE, pero la única diferencia es que eleva al cuadrado la diferencia de los valores de salida reales y previstos antes de sumarlos todos en lugar de usar el valor absoluto. La diferencia se puede notar en la siguiente ecuación:
$$ MSE = \ frac {1} {n} \ sum (Y - \ hat {Y}) $$Aquí, = valores de salida reales
Y $ \ hat {Y} $ = Valores de salida previstos.
Podemos usar la función mean_squared_error de sklearn.metrics para calcular MSE.
R al cuadrado (R 2 )
La métrica R al cuadrado se utiliza generalmente con fines explicativos y proporciona una indicación de la bondad o el ajuste de un conjunto de valores de salida previstos a los valores de salida reales. La siguiente fórmula nos ayudará a entenderlo:
$$ R ^ {2} = 1 - \ frac {\ frac {1} {n} \ sum_ {i {= 1}} ^ n (Y_ {i} - \ hat {Y_ {i}}) ^ 2} {\ frac {1} {n} \ sum_ {i {= 1}} ^ n (Y_ {i} - \ bar {Y_i) ^ 2}} $$En la ecuación anterior, el numerador es MSE y el denominador es la varianza de los valores.
Podemos usar la función r2_score de sklearn.metrics para calcular el valor de R cuadrado.
Ejemplo
La siguiente es una receta simple en Python que nos dará una idea de cómo podemos usar las métricas de rendimiento explicadas anteriormente en el modelo de regresión:
from sklearn.metrics import r2_score
from sklearn.metrics import mean_absolute_error
from sklearn.metrics import mean_squared_error
X_actual = [5, -1, 2, 10]
Y_predic = [3.5, -0.9, 2, 9.9]
print ('R Squared =',r2_score(X_actual, Y_predic))
print ('MAE =',mean_absolute_error(X_actual, Y_predic))
print ('MSE =',mean_squared_error(X_actual, Y_predic))
Salida
R Squared = 0.9656060606060606
MAE = 0.42499999999999993
MSE = 0.5674999999999999