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.
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.