File size: 4,778 Bytes
b48a5e5
06f9136
 
 
 
 
f9ed32e
06f9136
 
 
b48a5e5
06f9136
 
 
 
 
 
 
 
 
 
b48a5e5
 
06f9136
b48a5e5
06f9136
 
b48a5e5
06f9136
 
b48a5e5
 
 
06f9136
b48a5e5
06f9136
 
 
b48a5e5
06f9136
b48a5e5
06f9136
 
 
 
b48a5e5
06f9136
b48a5e5
06f9136
b48a5e5
06f9136
 
 
 
 
 
 
 
 
 
b48a5e5
06f9136
 
 
 
b48a5e5
 
 
06f9136
b48a5e5
06f9136
 
 
b48a5e5
06f9136
 
 
 
 
 
 
 
b48a5e5
06f9136
 
 
b48a5e5
06f9136
b48a5e5
06f9136
b48a5e5
06f9136
 
 
b48a5e5
06f9136
b48a5e5
06f9136
 
 
b48a5e5
 
 
06f9136
b48a5e5
06f9136
 
 
 
 
 
b48a5e5
 
 
06f9136
b48a5e5
06f9136
b48a5e5
06f9136
 
 
 
 
b48a5e5
06f9136
 
 
 
b48a5e5
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
---
title: Detección de Riesgo de Diabetes
emoji: 🩺
colorFrom: blue
colorTo: green
sdk: gradio
sdk_version: "6.17.3"
app_file: app.py
pinned: false
license: mit
tags:
  - diabetes
  - healthcare
  - lightgbm
  - scikit-learn
  - tabular-classification
  - shap
  - brfss
  - spanish
language:
  - es
---

# 🩺 Detección temprana de riesgo de diabetes

Demo interactiva del modelo LightGBM desarrollado como Trabajo de Fin de Máster (TFM)
en el Máster en Data Science de KSchool (2025–2026).

**Repositorio:** [GitHub — TFM](https://github.com/Jesusrodriguezf90/TFM) ·
**Modelo:** [lgbm-diabetes-early-detection](https://huggingface.co/Jesusrodriguezf90/lgbm-diabetes-early-detection)

---

## Descripción

Pipeline de clasificación binaria para estimar el **riesgo individual de diabetes**
a partir de 22 variables clínicas y demográficas autorreportadas del cuestionario
BRFSS 2015 (CDC). Entrenado sobre 257.709 observaciones.

Rellena el formulario con los datos del paciente y obtén:

- **Decisión clínica** con probabilidad estimada de riesgo
- **Gráfico SHAP waterfall** que explica qué variables aumentaron o redujeron
  el riesgo en esa predicción concreta
- **Threshold dinámico** ajustable entre 0.10 y 0.90 según el contexto asistencial

---

## Modelo

| Parámetro | Valor |
|---|---|
| Algoritmo | LightGBM (gradient boosting) |
| Dataset | BRFSS 2015 (CDC) — 257.709 observaciones |
| Variables de entrada | 22 variables clínicas y demográficas |
| ROC-AUC (CV media, 5 folds) | **0.839** |
| PRC-AUC (CV media, 5 folds) | **0.391** |
| Recall (test, threshold=0.4733) | **0.813** |
| Precision (test, threshold=0.4733) | 0.256 |
| Threshold por defecto | 0.4733 (F2-score óptimo en validación) |

> El threshold de 0.4733 maximiza el F2-score (β=2) priorizando el recall sobre
> la precisión. En cribado clínico un falso negativo — diabetes no detectada —
> tiene un coste sanitario estimado de ~2.817€/paciente/año, frente a ~30€
> de una prueba HbA1c innecesaria.

---

## Interpretabilidad

El modelo incluye análisis **SHAP** (SHapley Additive exPlanations) que permite
explicar en tiempo real qué variables impulsaron o redujeron el riesgo en cada
predicción individual. Las variables con mayor influencia global identificadas:

| Variable | Interpretación clínica |
|---|---|
| `_VEGESUM` | Consumo diario de verduras |
| `_FRUTSUM` | Consumo diario de frutas |
| `_AGEG5YR` | Grupo de edad |
| `EXEROFT1` | Frecuencia de ejercicio semanal |
| `GENHLTH` | Estado general de salud autorreportado |
| `_BMI5CAT` | Categoría de IMC |

> **Nota sobre la escala SHAP:** los valores del gráfico waterfall están en escala
> log-odds, no en probabilidades directas. E[f(X)] es la predicción media del modelo;
> f(x) es la predicción para el paciente concreto introducido en el formulario.

---

## Umbral de decisión dinámico

El formulario incluye un **slider de threshold** (0.10–0.90) que permite al
profesional sanitario ajustar la sensibilidad del modelo según la capacidad
asistencial disponible:

| Rango | Efecto |
|---|---|
| Threshold bajo (0.10–0.30) | Recall muy alto, más falsos positivos — útil en campañas de cribado masivo |
| Threshold medio (0.40–0.50) | Equilibrio detección / carga asistencial — **recomendado** |
| Threshold alto (0.70–0.90) | Muy pocos falsos positivos, riesgo de perder casos reales |

---

## Aviso

> ⚠️ Esta herramienta es un **apoyo al cribado**, no un diagnóstico médico.
> La decisión clínica final corresponde siempre al profesional sanitario.
> El modelo fue entrenado sobre población estadounidense (BRFSS 2015) y puede
> no generalizar directamente a otras poblaciones sin recalibración.
> El uso de esta herramienta no implica endorsement por parte del CDC,
> HHS ni del Gobierno de los Estados Unidos.

---

## Licencia

El **código** de esta demo está bajo licencia **MIT**.

Los **datos** de entrenamiento provienen del BRFSS 2015, un conjunto de datos
de dominio público producido por el CDC (Centers for Disease Control and Prevention),
Gobierno Federal de EE.UU. — no sujeto a copyright bajo 17 U.S.C. § 105.
Uso del dataset conforme a los términos del CDC: atribución requerida,
sin implicación de endorsement por parte del CDC o del Gobierno de EE.UU.

**Fuente:** Centers for Disease Control and Prevention (CDC).
Behavioral Risk Factor Surveillance System Survey Data. Atlanta, Georgia:
U.S. Department of Health and Human Services, Centers for Disease Control
and Prevention, 2015.

---

## Autor

**Jesús Rodríguez Fernández** — Data Scientist  
🔗 [LinkedIn](https://linkedin.com/in/jesus-rf) · [GitHub](https://github.com/Jesusrodriguezf90) · [HF Profile](https://huggingface.co/Jesusrodriguezf90)