Ir al contenido principal

[DATA SCIENCE][R]Comprendiendo las Curvas ROC y el Análisis de Rendimiento de Modelos de Clasificación

Comprendiendo las Curvas ROC y el Análisis de Rendimiento de Modelos de Clasificación

El análisis de curvas ROC (Receiver Operating Characteristic) es esencial para evaluar el rendimiento de modelos de clasificación binaria. Este artículo desglosa el proceso, explicando desde la recolección de datos hasta la interpretación de las métricas. A continuación, presentamos una

Paso 1: Preparación de los Datos

Primero, imaginemos que tenemos un conjunto de datos con predicciones de probabilidades y las clases reales de los resultados. Supongamos que trabajamos con la predicción de diabetes en pacientes:

Paciente Nivel de Glucosa Presión Arterial Clase (Diabetes)
A 150 85 1
B 120 75 0
C 180 95 1
D 110 80 0

Clases: Las clases representan las categorías a predecir. Aquí, 1 indica presencia de diabetes y 0 ausencia.

Probabilidades: Son las estimaciones que el modelo genera para indicar la probabilidad de que una observación pertenezca a una determinada clase, entre 0 y 1.

Paso 2: Entrenamiento del Modelo

En la Edad Media, los curanderos harían observaciones y desarrollarían reglas basadas en patrones:

  1. Recolección de Datos:
    • Observan a los pacientes y anotan sus síntomas y resultados.
    • Por ejemplo: "Paciente A: Glucosa 150, Presión 85, Diabetes (Sí)".
  2. Creación del Modelo (Reglas de Decisión):
    • Identifican patrones: "Si glucosa > 130 y presión > 80, entonces alta probabilidad de diabetes".
  3. Entrenamiento del Modelo:
    • Ajustan y refinan las reglas basadas en nuevas observaciones.
  4. Evaluación del Modelo:
    • Comparan las predicciones con los resultados reales para ajustar las reglas.

Modernamente, esto se hace con algoritmos como la regresión logística, que ajustan parámetros para minimizar errores en predicciones.

Paso 3: Predicción y Probabilidades

Usamos el modelo entrenado para generar probabilidades de que nuevos pacientes tengan diabetes:

Paciente Probabilidad de Tener Diabetes
E 0.85
F 0.30
G 0.60
H 0.40

Paso 4: Umbral de Decisión

Decidimos un umbral para clasificar si un paciente tiene diabetes. Si usamos un umbral de 0.5:

  • Paciente E: Probabilidad 0.85 > 0.5 → Clase 1 (Diabetes)
  • Paciente F: Probabilidad 0.30 < 0.5 → Clase 0 (No Diabetes)

Código en R para Visualización de la Curva ROC

En R, este proceso se automatiza con la función prediction del paquete ROCR. A continuación, mostramos cómo hacerlo:

# Cargar el dataset

roc_data1 <- read.csv("../data/tema3/roc-example-1.csv")

valores_verdaderos1 <- roc_data1$class

predicciones1 <- roc_data1$prob

# Crear el objeto de predicción

library(ROCR)

pred1 <- prediction(predicciones1, valores_verdaderos1)

# Evaluar el desempeño del modelo

perf1 <- performance(pred1, measure = "tpr", x.measure = "fpr")

# Graficar la Curva ROC

plot(perf1, main = "Curva ROC", col = "#1c61b6", lwd = 2)

abline(a = 0, b = 1, lty = 2, col = "gray")

# Generar los cortes y las tasas correspondientes

prob.cuts.1 <- data.frame(cut = perf1@alpha.values[[1]],

fpr = perf1@x.values[[1]],

tpr = perf1@y.values[[1]])

# Mostrar las primeras filas del data.frame

head(prob.cuts.1)

Paso 5: Construcción Manual de la Curva ROC

Imaginemos que tenemos las siguientes predicciones y clases reales:

Predicción Clase
0.9 1
0.9 1
0.8 1
0.8 1
0.7 1
0.6 0
0.4 0
0.3 0
0.2 0
0.1 0

Ordenamos las predicciones y aplicamos cada una como umbral:

Métricas en Cada Umbral

Umbral 0.9:

  • TP: 2
  • FP: 0
  • TN: 5
  • FN: 3
  • TPR: 0.4
  • FPR: 0

Repetimos esto para cada umbral:

Umbral TPR FPR
0.9 0.4 0
0.8 0.8 0
0.7 1.0 0
0.6 1.0 0.25
0.4 1.0 0.5
0.3 1.0 0.75
0.2 1.0 1.0
0.1 1.0 1.0

Visualización de la Curva ROC

Para visualizar la curva ROC, podemos trazar los valores de TPR (True Positive Rate) en el eje Y y FPR (False Positive Rate) en el eje X. Esto nos permitirá observar el rendimiento de nuestro modelo a través de diferentes umbrales.

La curva ROC nos muestra cómo la sensibilidad y la especificidad de nuestro modelo varían a medida que cambiamos el umbral de decisión. Un buen modelo tendrá una curva ROC que se aproxima lo más posible al punto superior izquierdo (donde TPR es 1 y FPR es 0).

Conclusión

Al entender cómo se calculan las métricas intermedias y se construyen las curvas ROC, podemos evaluar de manera efectiva el rendimiento de nuestros modelos de clasificación. Este proceso es crucial para mejorar la precisión y efectividad de las predicciones en aplicaciones del mundo real, como el diagnóstico médico.

Comentarios

Entradas populares de este blog

[DATA SCIENCE] [R PROGRAMMING] [DATA VISUALIZATION] Explorando Técnicas de Análisis y Visualización de Datos en R

  Introducción En el análisis de datos, la correcta partición y visualización de los datasets es crucial para obtener conclusiones precisas y valiosas. En este artículo, exploraremos diversas técnicas en R para particionar datasets, crear histogramas, scatterplots, boxplots, y ajustar curvas de regresión y suavizado. 1. Partición de Datasets La partición de datasets es una etapa fundamental en el proceso de machine learning. Permite dividir los datos en conjuntos de entrenamiento, validación y prueba para asegurar que nuestros modelos se entrenen y evalúen adecuadamente. Función para Particionar Datasets # Función para automatizar la partición de datasets partition_data <- function(data, target_column, train_ratio = 0.7, validate_ratio = NULL, seed = 123) {   # Establecer la semilla para reproducibilidad   set.seed(seed)      # Crear partición de entrenamiento   training_ids <- createDataPartition(data[[target_column]], p = train_ratio, list = FA...

[DATA SCIENCE] Guion de formación en matemáticas y R sobre matrices de confusión, diagramas de mosaico, análisis de componentes principales y diagramas ROC.

Guion de Formación en Matemáticas y R Guion de Formación en Matemáticas y R Este guion está diseñado para aprender y consolidar conocimientos sobre matrices de confusión, diagramas de mosaico, análisis de componentes principales (PCA) y diagramas ROC utilizando la plataforma R. 1. Matrices de Confusión Teoría Matemática: Definición: Una matriz de confusión evalúa el rendimiento de un modelo de clasificación. Consiste en una tabla que compara las predicciones del modelo con los valores reales. Componentes: Verdaderos Positivos (TP) Falsos Positivos (FP) Verdaderos Negativos (TN) Falsos Negativos (FN) Métricas derivadas: Precisión: Precision = TP / (TP + FP) Sensibilidad: Recall = TP / (TP + FN) Especificidad: Specificity = TN /...

[Machine Learning][Python][Clasificación] Understanding Support Vector Machines with Python

Support Vector Machines con Python Support Vector Machines con Python Support Vector Machines (SVM) son algoritmos de aprendizaje supervisado muy potentes, a menudo utilizados para problemas de clasificación. Este artículo demuestra cómo utilizar SVM en Python con la biblioteca scikit-learn y proporciona una explicación de la teoría subyacente. 1. Implementación en Python Código en Python: import numpy as np # Biblioteca para trabajar con arreglos y operaciones matemáticas import matplotlib.pyplot as plt # Biblioteca para crear gráficos y visualizaciones from sklearn import datasets # Módulo para cargar y manejar conjuntos de datos estándar from sklearn.model_selection import train_test_split # Función para dividir los datos en entrenamiento y prueba from sklearn.svm import SVC # Clase para implementar Support Vector Machines # 1. Cargar datos # Usaremos el dataset de iris, seleccionando solo dos clases para sim...