Vid utvecklingen av maskininlärningsmodeller för att förutsäga och simulera infektioners spridning är det avgörande att noggrant utvärdera modellernas prestanda. En av de mest grundläggande metoderna för att göra detta är att beräkna olika felmått, såsom Root Mean Squared Error (RMSE) och Mean Absolute Error (MAE), vilka båda ger insikter i hur bra modellen förutsäger de faktiska värdena.

För att genomföra denna utvärdering används vanligtvis H2O:s bibliotek, vilket erbjuder funktioner för att träna och testa olika maskininlärningsmodeller. Exempelvis, efter att ha tränat en linjär modell (LM), en Gradient Boosting Machine (GBM) och en Random Forest (RF), kan vi använda funktionen h2o.performance() för att beräkna prestandan på dessa modeller när de appliceras på testdata.

För att extrahera och analysera specifika prestandamått, kan funktionerna h2o.rmse() och h2o.mae() användas. Resultaten för RMSE och MAE indikerar att modellen med lägst dessa värden är den mest pålitliga. I det här fallet visade sig GBM vara den bästa modellen av de tre. Denna slutsats bekräftas genom att jämföra de specifika felmåtten för varje modell:

  • LM: RMSE = 2.732, MAE = 2.296

  • GBM: RMSE = 1.373, MAE = 0.938

  • RF: RMSE = 1.399, MAE = 1.178

Det är genom dessa mätvärden som vi kan avgöra vilken modell som är mest exakt, där lägre RMSE och MAE innebär bättre prestanda. För att förutsäga på testdata används sedan den bästa modellen, här GBM, med hjälp av funktionen h2o.predict().

För att visualisera modellens resultat konverteras förutsägelserna och de faktiska värdena till dataframes. Dessa kan sedan användas för att skapa grafer som visar hur bra modellen stämmer med verkligheten. Ett sätt att göra detta är att plotta residualerna (differensen mellan de förutsagda och faktiska värdena) mot de förutsagda värdena. Ett sådant diagram ger insikt i hur väl modellen har fångat variationen i data.

En viktig metod för att säkerställa att modellen är korrekt är att genomföra ett normalitetstest av residualerna. Detta görs vanligtvis med hjälp av qqnorm() och qqline(), som gör det möjligt att bedöma om residualerna följer en normalfördelning. Om residualerna är normalt fördelade indikerar detta att modellen förutsäger korrekt utan systematiska avvikelser.

En annan viktig aspekt är att kontrollera hur modellen presterar över tid. För att göra detta kan vi skapa en graf som jämför de faktiska värdena med de förutsagda värdena över en tidsperiod. Detta hjälper till att visuellt bedöma om modellen fångar eventuella långsiktiga trender eller förändringar i data, vilket är särskilt viktigt för tidsseriedata.

Det är också möjligt att fördjupa sig i specifika tillämpningar av maskininlärningsmodeller genom att implementera mer avancerade tekniker, som djupt lärande via Keras. Ett exempel på detta är att använda SEIR-modellen (Susceptible, Exposed, Infected, Recovered) för att simulera spridningen av en infektion i en population. Denna modell kan kombineras med sociala medierdata för att justera parametrar för att bättre förutsäga infektionens spridning.

Keras är ett kraftfullt paket för att bygga och träna neurala nätverk och djupa inlärningsmodeller. För att implementera en sådan modell behöver vi först definiera differentialekvationerna för SEIR-kompartmenterna, som beskriver hur antalet individer i varje kategori förändras över tid. När denna simulering har körts kan modellen tränas på sociala medierdata för att förutsäga sannolikheten för infektion baserat på individernas beteende, såsom social distansering, användning av munskydd, och andra faktorer.

För att bygga en sådan djup inlärningsmodell används Keras-funktionerna för att definiera lagren i nätverket och aktiveringsfunktionerna som ReLU och Sigmoid. Dessa funktioner hjälper till att införa icke-linjärheter i modellen och gör det möjligt för den att lära sig komplexa mönster i data.

Vid simulering av sociala medierdata tas flera faktorer i beaktande, såsom individernas efterlevnad av social distansering, deras arbets- eller studiemiljö, samt deras kontakt med andra individer. Denna data används sedan för att förutsäga vilka individer som löper störst risk att bli smittade, vilket gör det möjligt att justera SEIR-modellen och köra simuleringen igen för att förbättra resultatet.

För att säkerställa att modellen inte överanpassar sig till träningsdatan, kan dropout-lager inkluderas, vilket slumpmässigt tar bort delar av nätverkets indata under träning. Detta förhindrar att modellen blir för bra på att förutsäga träningsdata, vilket skulle kunna minska dess generaliseringsförmåga till nya, osedda data.

I praktiken är det viktigt att förstå att varje modell har sina begränsningar och styrkor. Vid val av modell bör vi alltid beakta datamängdens karaktär, problemet som ska lösas, och de specifika mål vi har med förutsägelserna. Att använda rätt felmått, noggrant undersöka residualer och testa normalitet samt att visualisera och tolka resultaten över tid är alla avgörande för att bygga en effektiv och pålitlig maskininlärningsmodell.

Hur rumslig närhet och autocorrelation påverkar sjukdomsspridning: Användning av Euclidean avstånd och Kriging

Spridningen av sjukdomar inom en population beror i hög grad på de rumsliga relationerna mellan individer. När vi ser på mönstren för hur infektioner utvecklas, är det klart att nära kontakter mellan individer spelar en avgörande roll för överföringen av smitta. För att kunna analysera och modellera denna process använder vi olika verktyg och metoder för att beräkna avstånd och identifiera mönster i hur smitta sprider sig i ett specifikt geografiskt område.

En av de vanligaste metoderna för att uppskatta sannolikheten för smittöverföring är användningen av det euklidiska avståndet. Detta avstånd är den rätlinjiga avståndsmätningen mellan två punkter i ett tvådimensionellt rum, och beräknas genom att ta roten ur summan av kvadraten på skillnaden mellan motsvarande koordinater för två punkter. Formeln är:

dij=(xixj)2+(yiyj)2\sqrt{d_{ij}} = \sqrt{(x_i - x_j)^2 + (y_i - y_j)^2}

Där xix_i och yiy_i är koordinaterna för den första punkten (t.ex. en smittad individ), medan xjx_j och yjy_j är koordinaterna för den andra punkten (t.ex. en mottaglig individ eller plats). Detta avstånd hjälper oss att modellera den rumsliga spridningen av infektioner baserat på avståndet mellan individer eller platser, vilket är grundläggande för att förstå hur sjukdomar sprids i ett samhälle.

För att göra beräkningar av euklidiska avstånd i praktiken kan vi använda en hjälpfunktion som tar hänsyn till avståndet mellan smittan och en individs position, vilket ger oss ett mått på den rumsliga relationen.

Det finns även andra metoder för att mäta avstånd mellan punkter, såsom Manhattan-avstånd, som summerar de absoluta skillnaderna mellan koordinaterna, eller Mahalanobis-avståndet, som beaktar korrelationer mellan variabler. Dessa metoder kan vara användbara i olika typer av rumsliga analyser beroende på vilken aspekt av spridningen vi vill undersöka.

Men för att förstå hur smitta sprider sig på större skala måste vi även beakta rumslig autocorrelation. Detta innebär att data som ligger nära varandra geografiskt oftast har mer liknande värden än data som ligger längre ifrån varandra. Vid analys av sjukdomens spridning kan vi identifiera "hotspots", områden där smittan koncentreras, genom att mäta denna autocorrelation.

Ett användbart verktyg för att mäta rumslig autocorrelation är Moran’s I-test. Detta test bedömer om sjukdomsfallen är klustrade, spridda eller slumpmässigt fördelade över ett område. Formeln för att beräkna Moran’s I är:

I=i=1Nj=1Nwij(xixˉ)(xjxˉ)i=1N(xixˉ)2I = \frac{\sum_{i=1}^{N} \sum_{j=1}^{N} w_{ij}(x_i - \bar{x})(x_j - \bar{x})}{\sum_{i=1}^{N} (x_i - \bar{x})^2}

Där wijw_{ij} är vikten mellan lokalerna ii och jj, och xˉ\bar{x} är det genomsnittliga värdet av den variabel vi mäter (t.ex. antal smittade). Om Moran’s I värde är nära +1 tyder det på en hög grad av klusterbildning, medan ett värde nära -1 indikerar att det är en stor spridning mellan fallen.

För att beräkna Moran’s I-test använder vi ofta paket som {spdep} och {sp}, där funktioner som dnearneigh(), nb2listw() och moran.test() gör det möjligt att definiera närliggande områden, skapa viktlistor för grannar och genomföra själva testet.

Resultaten från Moran’s I-testet kan ge viktig information om huruvida sjukdomsfördelningen i ett område är slumpmässig eller om det finns kluster som kräver mer detaljerad uppföljning. Ett negativt resultat, såsom -0.013 i ett exempel, tyder på att fördelningen av infektioner är något spridd och inte klustrad.

Men även om Moran’s I-testet ger en bra överblick, så ger det oss inte detaljer om de specifika riskområdena för sjukdomens spridning. För detta ändamål används rumsliga interpolationstekniker som Kriging. Genom Kriging kan vi skapa rasterkartor som visualiserar de områden där risken för infektion är störst, baserat på den befintliga smittan i ett område.

Kriging är en metod som inte bara tar hänsyn till avstånd mellan smittade och icke-smittade individer, utan även miljöfaktorer som temperatur eller luftfuktighet, som kan påverka spridningen av infektionen. För att tillämpa Kriging krävs en variogrammodell, som beskriver hur datapunkter är beroende av varandra i rummet. Genom att använda variogrammet kan vi förutsäga smittspridningen mer exakt och skapa detaljerade riskkartor.

Denna metod har använts för att förutsäga spridningen av sjukdomar som Denguefeber i vissa delar av Pakistan och COVID-19 i Afrika, där variabeldata från smittfall kombineras med socio-demografiska faktorer för att skapa detaljerade kartor som visar smittorisken.

För att kunna dra nytta av dessa modeller är det avgörande att noggrant analysera både den rumsliga närheten och autocorrelationen av sjukdomsfall, samtidigt som vi förstår hur miljöfaktorer kan påverka överföringen. Detta gör det möjligt att utveckla mer exakta förutsägelser om framtida sjukdomsutbrott och ge beslutsfattare bättre verktyg för att förhindra smittspridning i hög-riskområden.