Una matriz de confusión en R es una medida de rendimiento adoptada para solucionar el problema de clasificación de aprendizaje automático, donde la salida puede ser de 2 o más clases.
La matriz de confusión en R es muy útil para evaluar el modelo de razón de momios, medir la recuperación, la precisión y las curvas AUC-ROC.
Veamos a profundidad que es una matriz de confusion en r.
Ejercicio de matriz de confusión en R
En un ejercicio anterior realizamos un ejercicio de regresión logística en donde se trabajaba en un radar que pretendía saber si lo que se ha detectado es un avión o es solo ruido. En este post, por medio de la matriz de confusión en R, se va a evaluar el modelo y a verificar su clasificación.
Aquí lo que tenemos es un clasificador con dos hipótesis H0 (hipótesis negativa) y H₁ (hipótesis positiva). Si nuestro test estadístico dice que la hipótesis H₁ es cierta, pero en realidad la que es cierta es la hipótesis H0, estaremos cometiendo un error. El tipo de error depende de si nos hemos equivocado prediciendo H0 o H₁.
Elegimos H0 | Elegimos H₁ | |
H0 | No hay error | Error tipo I, falso positivo |
H₁ | Error tipo II, falso negativo | No hay error |
En la matriz de confusión en R siempre se deben ordenar las filas y columnas de modo que tienen que mostrar y decir cuál es la que elige y cuál es la ground truth, es decir, la realidad.
En el caso anterior, hemos puesto que las filas son la realidad y que las columnas son lo que elegimos.
La matriz de confusión en R lo que hace es contar el número de ocurrencias que ha habido en cada celda:
#matrices de confusión en R
In [37] : M <- matrix (rep (0, 4), ncol = 2)
umbral <- 2
radar_pred <- predict (model, radar.test)
y_est = factor (ifelse (radar_pred <- umbral, 0, 1), labels = c ("ruido", "avion"))
M = table (real-radar.test$tipo, elegimos = y_est)
M
ggplot (radar.test, aes (x = distancia, y = potencia, color = tipo)) + geom_point (size = 3) + geom_abline (intercept = (- betalg [1]) / betalg [3], slope = betalg [2] / betalg [3], color = "blue", linetype = "dashed") + geom_abline (intercept (umbral - betalg [1]) / betalg [3], slope = betalg [2] / betalg [3], color = "blue")
elegimos
real | ruido | avión |
ruido | 6 | 1 |
avión | 2 | 9 |
¿Qué es lo que nos está diciendo esta matriz de confusion en R? Que aquí hemos elegido como ruido 8 puntos (6-2) y hemos elegido como aviones 10 puntos (1- 9). De esos 8 que hemos elegido, sabemos que hay dos azules que están mal clasificados; de esos 9 puntos, hay uno rosa malo. Esto es precisamente la matriz de confusión en R.
Para medir la matriz de confusión en R lo que tenemos que definir es un umbral que puede ser variable, es decir, le podíamos dar más importancia. Podíamos poner un umbral en el que las posibilidades sean exactamente iguales, que la probabilidad de que ocurra y no ocurra sean las mismas, lo que sería igual a 0.5 (línea discontinua). También podríamos decirle que la preocupación real es el problema de detectar ruido y confundirlo con un avión, ya que este podría ser un problema muy grave.
Si vemos unos globos o lo que sea y mandamos, digámoslo de algún modo, un pepino nuclear, a lo mejor no va a ser una táctica muy buena y efectiva. Cuando veamos un avión queremos estar 100% seguros de que eso es un avión y no cualquier otra cosa, como un ruido, ya que esto nos permite limitar el margen de error cuando tomemos decisiones.
Lo que hacemos para que este modelo salga bien es hacerlo más receptivo, subir el margen, es decir, en lugar de que salte con la probabilidad de un 50 %, de un 0.5 %, que salte con un 0.6 o con un 0.7. Aquí lo hemos puesto para que con 2. ¿Qué significa esto? Pues 2 es con la razón de momios u odds ratio, el logaritmo de la razón de momios será 2.
Así, realmente el modelo estaría saltando con exp (2):
In [1] : exp (2)
7.38905609893065
Estaría saltando cuando fuera siete veces más probable que hubiera un avión. Eso es lo que nos marca la línea no punteada en la gráfica y nos daba la matriz de confusión en R anterior.
Si te ha gustado este tema y quieres seguir aprendiendo sobre él, te invitamos a seguir nuestro Big Data, Inteligencia Artificial & Machine Learning Full Stack Bootcamp, con el cual en muy poco tiempo aprenderás todo lo necesario para incursionar en el mercado laboral IT. ¡Anímate y solicita más información!