Saltar al contenido principal

Entender la matriz de confusión en R

Este tutorial toma material del curso Machine Learning Toolbox de DataCamp y te permite practicar matrices de confusión en R.
· 3 min leer

Explora con IA

Si quieres hacer nuestro curso Machine Learning Toolbox, aquí tienes el enlace.

Calcular una matriz de confusión

Como viste en el vídeo, una matriz de confusión es muy útil para calibrar la salida de un modelo y revisar todos los posibles resultados de tus predicciones (verdaderos positivos, verdaderos negativos, falsos positivos, falsos negativos).

Antes de crear tu matriz de confusión, necesitas "cortar" las probabilidades predichas en un umbral concreto para convertir probabilidades en predicciones de clase. Puedes hacerlo fácilmente con la función ifelse(), por ejemplo:

class_prediction <-
  ifelse(probability_prediction > 0.50,
         "positive_class",
         "negative_class"
  )

Podrías crear esta tabla de contingencia con la función base de R table(), pero confusionMatrix() de caret además de las tasas básicas de la tabla, devuelve muchas estadísticas adicionales muy útiles. Puedes calcular la matriz de confusión (y sus estadísticas asociadas) usando los resultados predichos y los reales, por ejemplo:

confusionMatrix(predicted, actual)

Instrucciones

  • Convierte las predicciones numéricas p en un vector de predicciones de clase llamado p_class usando un umbral de 0,50. Asegúrate de usar "M" para la clase positiva y "R" para la clase negativa al predecir, para que coincidan con las clases de los datos originales.
  • Genera una matriz de confusión usando p_class, los valores reales del conjunto test y la función confusionMatrix().

# If p exceeds threshold of 0.5, M else R: m_or_r


# Convert to factor: p_class


# Create confusion matrix

Si todo esto te cuadra, sigue con el siguiente ejercicio. Si no, aquí tienes un vídeo resumen.

Vídeo resumen sobre la matriz de confusión

De probabilidades a matriz de confusión

Imagina que quieres asegurarte al máximo de que tu modelo identifica correctamente todas las minas como minas. En este caso, podrías usar un umbral de predicción de 0,10 en lugar de 0,90.

Puedes construir la matriz de confusión igual que antes, usando tus nuevas clases predichas:

pred <- ifelse(probability > threshold, "M", "R")

Luego puedes llamar a la función confusionMatrix() igual que en el ejercicio anterior:

confusionMatrix(pred, actual)

# If p exceeds threshold of 0.1, M else R: m_or_r


# Convert to factor: p_class


# Create confusion matrix


Si quieres aprender más con este curso, aquí tienes el enlace.

Temas

Relacionado

Tutorial

Tutorial de regresión lineal en R