Una matriz de confusión en R es una tabla que categorizará las predicciones frente a los valores reales. Incluye dos dimensiones, entre ellas una indicará los valores predichos y otra representará los valores reales.
Cada fila de la matriz de confusión representará los valores previstos y las columnas serán responsables de los valores reales. Esto también puede ser al revés. Aunque las matrices son sencillas, la terminología detrás de ellas parece compleja. Siempre existe la posibilidad de confundirse con las clases. De ahí el término ” matriz de confusión”.
En la mayoría de los recursos, es posible que haya visto la matriz 2×2 en R. Pero tenga en cuenta que puede crear una matriz de cualquier cantidad de valores de clase. Puede ver la matriz de confusión de los modelos binarios de dos y tres clases a continuación.
Este es un modelo binario de dos clases que muestra la distribución de valores predichos y reales.
Este es un modelo binario de tres clases que muestra la distribución de los valores predichos y reales de los datos.
En la matriz de confusión en R, la clase de interés o nuestra clase objetivo será una clase positiva y el resto será negativa.
Puedes expresar la relación entre las clases positivas y negativas con la ayuda de la matriz de confusión 2×2. Incluirá 4 categorías:
- Verdadero Positivo (VN) : Esto se clasifica correctamente como la clase de interés/objetivo.
- Verdadero negativo (VN) : esto se clasifica correctamente como una clase que no es de interés/objetivo.
- Falso positivo (FP) : esto se clasifica erróneamente como la clase de interés/objetivo.
- Falso negativo (FN) : esto se clasifica erróneamente como una clase que no es de interés/objetivo.
Creación de una matriz de confusión simple con R
En esta sección, utilizaremos los datos del número de demostración que vamos a crear aquí. Aquí, nuestra clase de interés/objetivo será 0.
Veamos cómo podemos calcular esto usando la matriz de confusión. Puedes establecer la clase de destino como 0 y observar los resultados.
Será un poco confuso, pero tómate tu tiempo y profundiza para mejorarlo. Hagámoslo usando la biblioteca de cursores .
#Insatll required packagesinstall.packages('caret')#Import required librarylibrary(caret)#Creates vectors having data pointsexpected_value - factor(c(1,0,1,0,1,1,1,0,0,1))predicted_value - factor(c(1,0,0,1,1,1,0,0,0,1))#Creating confusion matrixexample - confusionMatrix(data=predicted_value, reference = expected_value)#Display results example
Confusion Matrix and Statistics ReferencePrediction 0 1 0 3 2 1 1 4 Accuracy : 0.7 95% CI : (0.3475, 0.9333) No Information Rate : 0.6 P-Value [Acc NIR] : 0.3823 Kappa : 0.4 Mcnemar's Test P-Value : 1.0000 Sensitivity : 0.7500 Specificity : 0.6667 Pos Pred Value : 0.6000 Neg Pred Value : 0.8000 Prevalence : 0.4000 Detection Rate : 0.3000 Detection Prevalence : 0.5000 Balanced Accuracy : 0.7083 'Positive' Class : 0
¡Guau! ¡Qué bueno! Ahora estoy seguro de que todo está bastante claro. ¡Este resultado por sí solo puede responder a muchas de las preguntas que tienes en mente en este momento!
Medición del rendimiento
La tasa de éxito o la precisión del modelo se pueden calcular fácilmente utilizando la matriz de confusión 2×2. La fórmula para calcular la precisión es:
Aquí, TP, TN, FP y FN representarán los recuentos de valores particulares que les pertenecen. La precisión se calculará sumando y dividiendo los valores según las fórmulas.
Después de esto, se le recomienda que encuentre la tasa de error que nuestro modelo ha predicho incorrectamente. La fórmula para la tasa de error es:
El cálculo de la tasa de error es simple y directo. Si un modelo funciona con una precisión del 90 %, la tasa de error será del 10 %. Así de simple.
La forma sencilla de obtener la matriz de confusión en R es mediante la función table(). Veamos cómo funciona.
table(expected_value,predicted_value)
predicted_valueexpected_value 0 1 0 3 1 1 2 4
Déjame hacerlo mucho más hermoso para ti.
¡Perfecto! Ahora puedes observar los siguientes puntos:
- El modelo ha predicho 0 como 0, 3 veces y 0 como 1, 1 vez.
- El modelo ha predicho 1 como 0, 2 veces y 1 como 1, 4 veces.
- La precisión del modelo es del 70%.
Matriz de confusión utilizando “gmodels”
Si desea obtener más información sobre la matriz de confusión, puede utilizar el paquete ‘gmodel’ en R.
Instalemos el paquete y veamos cómo funciona. El paquete gmodels ofrece una solución personalizable para los modelos.
#install required packagesinstall.packages('gmodels')#import required library library(gmodels)#Computes the crosstable calculationsCrossTable(expected_value,predicted_value)
Cell Contents|-------------------------|| N || Chi-square contribution || N / Row Total || N / Col Total || N / Table Total ||-------------------------| Total Observations in Table: 10 | predicted_value expected_value | 0 | 1 | Row Total | ---------------|-----------|-----------|-----------| 0 | 3 | 1 | 4 | | 0.500 | 0.500 | | | 0.750 | 0.250 | 0.400 | | 0.600 | 0.200 | | | 0.300 | 0.100 | | ---------------|-----------|-----------|-----------| 1 | 2 | 4 | 6 | | 0.333 | 0.333 | | | 0.333 | 0.667 | 0.600 | | 0.400 | 0.800 | | | 0.200 | 0.400 | | ---------------|-----------|-----------|-----------| Column Total | 5 | 5 | 10 | | 0.500 | 0.500 | | ---------------|-----------|-----------|-----------|
¡Es increíble! Puedes ver mucha información que la biblioteca gmodel ha devuelto en función de los datos proporcionados. Es mucha información, ¿verdad?
Tiempo para el cálculo utilizando la matriz de confusión
Por último, ha llegado el momento de realizar algunos cálculos serios utilizando nuestra matriz de confusión. Hemos definido las fórmulas para lograr la precisión y el índice de error.
¡A por ello!
Accuracy = (3 + 4) / (3+2+1+4)
0.7 = 70 %
El índice de precisión es del 70 % para los datos y las observaciones proporcionados. Ahora bien, es evidente que el índice de error será del 30 %, ¿entendido?
Si no, podemos revisar nuestra fórmula.
Error rate = (2+1) / (3+2+1+4)
0.30 = 30%
¡Genial! El modelo ha predicho incorrectamente el 30% de los valores. La tasa de error es del 30%.
Esto también es igual a la fórmula:
error rate = 1 - accuracy
1 - 0.70 = 0.30 = 30%
Puedes restarle 1 al valor de precisión para obtener el índice de error. ¡Pero todo va bastante bien!
Terminando
Una matriz de confusión es una tabla de valores que representan los valores previstos y reales de los puntos de datos. Puede utilizar las bibliotecas R más útiles, como caret, gmodels y funciones como table() y crosstable() para obtener más información sobre sus datos.
Una matriz de confusión en R será el aspecto clave de los problemas de clasificación de datos. Intente aplicar todas las técnicas ilustradas anteriormente a su conjunto de datos preferido y observe los resultados.
Eso es todo por ahora. Feliz R!!!
Más información: Documentación de R