EN
← Tillbaka till kod
— ML Engineering

GlucoPred

Examensarbete

Prognostiserar blodsocker 15-60 minuter framåt vid typ 1-diabetes, tränad på ~2,5 års CGM- och insulinpumpsdata från mitt barn. En automatiserad pipeline omvandlar råa exporter till en feature-matris med 47 kolumner; en LSTM slår klassiska baslinjer vid varje horisont, med Clarke Error Grid-analys som visar var träffsäkerhet och klinisk säkerhet skiljer sig åt.

Python PyTorch MLflow statsmodels Pandas NumPy DuckDB FastAPI React TypeScript Vite Tailwind CSS Recharts Vercel Data Pipeline Time-Series Forecasting
~ när Mar 2026 → Pågående
~ status Aktiv
~ typ Skolprojekt

GlucoPred började som mitt examensarbete, nu inlämnat: att prognostisera blodsocker 15-60 minuter framåt för en person med typ 1-diabetes, utifrån ~2,5 års data från kontinuerlig glukosmätare (CGM) och insulinpump från mitt barn (Dexcom via Glooko, 5-minutersintervall). Alla värden anges i mmol/L (≈18 mg/dL per mmol/L).

Pipeline

  • Automatiserad, idempotent ZIP→DuckDB-inläsning av råa CGM- och pumpexporter (språkmedveten: svenska/engelska)
  • CGM-rensning, detektering av sensorsessioner och interpolering av luckor
  • Feature-matris med 47 kolumner - lags, glidande statistik, tidskodningar, kolhydrater ombord och en farmakokinetisk insulin-on-board-modell för NovoRapid (bolus + basal) - mot +15 / +30 / +60 min-mål, med verifierat noll framtidsläckage (CI-testat)

Modeller & utvärdering

Baslinjer (persistens, glidande medelvärde, linjär extrapolering, AR(2)) och en LSTM utvärderas med RMSE/MAE, tid inom målområde och Clarke Error Grid-zonanalys (A-E per modell och horisont). LSTM:en slår alla baslinjer vid varje horisont, utvärderat på utelämnad, färsk data.

Det mest intressanta fyndet är en skillnad mellan träffsäkerhet och klinisk säkerhet: även om LSTM:en är den mest träffsäkra modellen ger vissa enklare baslinjer en lägre andel fel i farozonen än LSTM:en. Modellen med lägst genomsnittligt fel är alltså inte automatiskt den säkraste nära hypoglykemi - att lyfta fram det, snarare än bara RMSE-rubriken, är centralt i arbetet.

Experimentspårning

Efter examensarbetet lade jag till MLflow för experimentspårning och ett modellregister, så att modeller kan jämföras körning för körning. Backenden serverar inferens från den version som har registrets @champion-alias.

Gränssnitt

Ett React-gränssnitt (Recharts) ritar upp faktiskt-mot-predikterat med väljare för modell och horisont. Eftersom den riktiga appen körs mot personlig medicinsk data driftas den aldrig publikt - istället finns en publik demo byggd på helt syntetisk data som driftas separat, så att gränssnittet kan utforskas utan att exponera någon verklig data.

Nästa steg

Gradient boosting-modeller och hyperparameteroptimering, jämförda mot LSTM:en via MLflow.

CoreInfraDataMLAgentsFrontend
Om diagrammet
Varje axel är en funktionell pelare; det orange visar var jag la min insats i det här bygget - ju längre ut en axel når, desto mer av arbetet låg där.