Matriz de confusión en R

Autor: | Última modificación: 2 de noviembre de 2022 | Tiempo de Lectura: 3 minutos
Temas en este post:

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.

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 H0Elegimos H₁
H0No hay errorError tipo I, falso positivo
H₁Error tipo II, falso negativoNo 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:

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

realruidoavión
ruido61
avión29
matriz de confusión en R

¿Qué es lo que nos está diciendo esta matriz de confusión 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.

matriz de confusión en R: gráfica

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.

¿Qué sigue?

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!

👉 Descubre más del Big Data, Inteligencia Artificial & Machine Learning Full Stack Bootcamp ¡Descarga el temario!

👉 Prueba el Bootcamp Gratis por una Semana ¡Empieza ahora mismo!

👉 Conoce nuestros otros Bootcamps en Programación y Tecnología

[email protected]

¿Trabajo? Aprende a programar y consíguelo.

¡No te pierdas la próxima edición del Aprende a Programar desde Cero Full Stack Jr. Bootcamp!

 

Prepárate en 4 meses, aprende las últimas tecnologías y consigue trabajo desde ya. 

 

Solo en España hay más de 120.400 puestos tech sin cubrir, y con un sueldo 11.000€ por encima de la media nacional. ¡Es tu momento!

 

🗓️ Próxima edición: 13 de febrero

 

Reserva tu plaza descubre las becas disponibles.