Proceso de Entrenamiento
Configuración Inicial
El entrenamiento se configura con los siguientes parámetros:Épocas
20 épocasPuede detenerse antes con early stopping
Batch Size
32 imágenesPor lote de entrenamiento
Learning Rate
0.001Optimizador Adam
Validación
20%Del conjunto de entrenamiento
Ejecutar Entrenamiento
Tiempo estimado: 15-30 minutos en CPU, 5-10 minutos en GPU
Data Augmentation
Para mejorar la generalización del modelo y prevenir overfitting, se aplican las siguientes transformaciones al conjunto de entrenamiento:- Rotación
- Desplazamiento
- Zoom
- Flip
- Rescalado
Rango: ±15 gradosSimula diferentes ángulos de captura de rayos X.
Callbacks y Regularización
Early Stopping
Detención Temprana
Detiene el entrenamiento si no hay mejora en validation loss.
- Previene overfitting
- Ahorra tiempo de entrenamiento
- Garantiza el mejor modelo posible
Model Checkpoint
Guardado del Mejor Modelo
Guarda automáticamente el modelo con mejor validation accuracy.
models/best_model.keras
Reduce Learning Rate
Reducción de Learning Rate
Reduce el learning rate cuando el entrenamiento se estanca.
Dropout
Regularización
Dropout de 0.5 en las capas densas para prevenir overfitting.
Salida del Entrenamiento
Durante el Entrenamiento
Verás una salida similar a esta:Si ves “early stopping”, significa que el entrenamiento se detuvo automáticamente porque no hubo mejora en 5 épocas consecutivas.
Archivos Generados
Al finalizar el entrenamiento, se generan:models/best_model.keras
Mejor modelo según validation accuracy durante el entrenamiento.Este es el modelo que se usa para evaluación.
Evaluación del Modelo
Ejecutar Evaluación
La evaluación carga automáticamente
models/best_model.keras y lo evalúa en el test set.Métricas de Evaluación
Métricas Principales
El sistema calcula las siguientes métricas en el conjunto de test:Accuracy (Exactitud)
Accuracy (Exactitud)
Fórmula: (TP + TN) / (TP + TN + FP + FN)Significado: Porcentaje de predicciones correctas sobre el total.Objetivo: > 85%Ejemplo: Si el modelo tiene 85% accuracy, significa que de 100 predicciones, 85 son correctas.
Precision (Precisión)
Precision (Precisión)
Fórmula: TP / (TP + FP)Significado: De todas las predicciones de PNEUMONIA, ¿cuántas son correctas?Objetivo: > 80%Importancia: Alta precision significa pocas falsas alarmas.Ejemplo: Si precision es 80%, de cada 10 casos que el modelo dice “PNEUMONIA”, 8 realmente lo son.
Recall (Sensibilidad)
Recall (Sensibilidad)
Fórmula: TP / (TP + FN)Significado: De todos los casos reales de PNEUMONIA, ¿cuántos detecta el modelo?Objetivo: > 90%Importancia: Alta recall significa que no se pierden casos de neumonía.Ejemplo: Si recall es 90%, el modelo detecta 9 de cada 10 casos reales de neumonía.
F1-Score
F1-Score
Fórmula: 2 × (Precision × Recall) / (Precision + Recall)Significado: Media armónica entre precision y recall.Objetivo: > 85%Importancia: Balancea precision y recall en una sola métrica.Ejemplo: F1-Score alto significa buen balance entre no perder casos y no dar falsas alarmas.
AUC-ROC
AUC-ROC
Nombre completo: Area Under the ROC CurveRango: 0.0 a 1.0Significado: Capacidad del modelo para discriminar entre clases.Objetivo: > 0.90Interpretación:
- 0.5: Clasificador aleatorio
- 0.7-0.8: Aceptable
- 0.8-0.9: Excelente
-
0.9: Sobresaliente
Matriz de Confusión
La matriz de confusión muestra los 4 tipos de resultados:| Predicción: NORMAL | Predicción: PNEUMONIA | |
|---|---|---|
| Real: NORMAL | TN (True Negative) | FP (False Positive) |
| Real: PNEUMONIA | FN (False Negative) | TP (True Positive) |
- TN (True Negative): Casos sanos correctamente identificados
- TP (True Positive): Casos de neumonía correctamente identificados
- FP (False Positive): Falsa alarma - el modelo dice neumonía pero está sano
- FN (False Negative): Caso perdido - el modelo dice sano pero tiene neumonía
Visualizaciones Generadas
1. training_history.png
Historial de Entrenamiento
Gráficas de evolución durante el entrenamiento.
- Loss
- Accuracy
Gráfica de pérdida (loss) por época:
- Línea azul: Training loss
- Línea naranja: Validation loss
- Si val_loss > train_loss y la brecha crece: Overfitting
- Si ambas son altas: Underfitting
- Si ambas bajan juntas: Buen entrenamiento
results/training_history.png
2. confusion_matrix.png
Matriz de Confusión
Visualización de las predicciones vs etiquetas reales.
- Matriz 2x2 con valores absolutos
- Colores: más oscuro = más casos
- Incluye las 4 métricas principales (Accuracy, Precision, Recall, F1)
results/confusion_matrix.png
3. roc_curve.png
Curva ROC
Representa la capacidad de discriminación del modelo.
- X: False Positive Rate (Tasa de falsos positivos)
- Y: True Positive Rate (Tasa de verdaderos positivos)
- Línea diagonal (AUC=0.5): Clasificador aleatorio
- Curva pegada a la esquina superior izquierda: Modelo perfecto
- Área bajo la curva (AUC): Métrica de desempeño general
- Curva ROC en azul
- Línea diagonal de referencia (punteada)
- Valor AUC en la leyenda
results/roc_curve.png
4. predictions.png
Ejemplos de Predicciones
Grid visual de predicciones del modelo.
- 12 ejemplos aleatorios del test set
- Imagen original del rayo X
- Etiqueta real (verde si correcto, rojo si error)
- Predicción del modelo
- Probabilidad de la predicción
- Presentaciones y demos
- Identificar patrones de errores
- Validación cualitativa
results/predictions.png
Salida de Evaluación
Console Output
Al ejecutarevaluate.py, verás una salida como esta:
Interpretación de Resultados
Escenario Ideal
Alta Recall
> 90%No perdemos casos de neumonía
Alta Precision
> 80%Pocas falsas alarmas
Buen Balance
F1 > 85%Equilibrio entre metrics
Discriminación
AUC > 0.90Excelente separación de clases
Interpretación Clínica
- Screening Tool
- Falsos Positivos
- Falsos Negativos
- Uso Responsable
El modelo está diseñado como herramienta de screening (primera línea):
- Alta Recall: Minimiza casos perdidos
- Decisión final: Siempre debe ser de un médico
- Contexto: Útil en áreas con escasez de radiólogos
Resultados Esperados
Rangos Típicos
Con este dataset y arquitectura, los resultados típicos son:| Métrica | Rango Esperado | Objetivo |
|---|---|---|
| Accuracy | 80-90% | > 85% |
| Precision | 75-85% | > 80% |
| Recall | 85-95% | > 90% |
| F1-Score | 80-90% | > 85% |
| AUC-ROC | 0.85-0.95 | > 0.90 |
Si tus resultados están en estos rangos, el modelo está funcionando correctamente.
Comparación con Literatura
Estudios similares reportan:- CheXNet (Rajpurkar et al., 2017): AUC 0.93-0.96
- Dataset original (Kermany et al., 2018): Accuracy 92.8%
- Este proyecto: Accuracy 80-90%
Solución de Problemas
Accuracy muy baja (<70%)
Accuracy muy baja (<70%)
Posibles causas:
- Dataset no cargado correctamente
- Modelo no entrenado suficientes épocas
- Learning rate demasiado alto/bajo
- Verifica con
verificar_dataset.py - Aumenta épocas a 30-40
- Ajusta learning rate (0.0001 - 0.01)
Overfitting (train_acc >> val_acc)
Overfitting (train_acc >> val_acc)
Síntomas:
- Train accuracy > 95%
- Val accuracy < 80%
- Brecha grande entre ambas
- Ya incluye Dropout (0.5)
- Ya incluye Data Augmentation
- Reduce épocas
- Considera early stopping más agresivo
Recall muy bajo (<80%)
Recall muy bajo (<80%)
Problema: Muchos casos de neumonía no detectadosSoluciones:
- Ajusta threshold de clasificación (< 0.5)
- Balancea dataset (tiene más PNEUMONIA que NORMAL)
- Usa class_weight en el entrenamiento
Entrenamiento muy lento
Entrenamiento muy lento
Causas:
- CPU sin aceleración
- Batch size demasiado pequeño
- Usa GPU si está disponible
- Aumenta batch_size (si hay RAM)
- Reduce tamaño de imágenes (actual: 224x224)
Checklist de Evaluación
Antes de dar por terminado el proyecto:- Modelo entrenado exitosamente sin errores
- Accuracy > 80% en test set
- Recall > 85% (prioridad en screening)
- Todas las gráficas generadas en
results/ - Confusion matrix revisada (FN aceptables)
- ROC curve con AUC > 0.85
- Ejemplos de predicciones revisados visualmente
- Interpretación clínica entendida
- Limitaciones del modelo documentadas
Próximos Pasos
Después de completar el entrenamiento y evaluación:Preparar informe
Incluye:
- Metodología de entrenamiento
- Métricas obtenidas
- Visualizaciones
- Interpretación clínica
Preparar presentación
Muestra:
- Arquitectura del modelo
- Proceso de entrenamiento
- Resultados (confusion matrix + ROC)
- Ejemplos de predicciones