Gå till index

Första kursen: Forskningsmetoder och Analys med R

0% färdig
0/0 Steps
  1. Analys och forskning med R och Posit (Rstudio)
  2. Grunderna i R och Rstudio
    7 Ämnen
  3. Importera, exportera, spara och ladda data
    5 Ämnen
  4. Strängar och regular expressions (regex)
    1 Ämne
  5. Bearbetning av data med dplyr
    12 Ämnen
  6. Visualisera och presentera
    14 Ämnen
  7. Explorerande och deskriptiva analyser
    6 Ämnen
  8. Prediktionsmodeller
    12 Ämnen
  9. Klassisk regressionsanalys
    8 Ämnen
  10. Machine learning (ML) och Artificiell Intelligens (AI)
    9 Ämnen
  11. Skapa prediktionsmodeller med Tidymodels
    6 Ämnen
  12. Hypotestester och epidemiologiska mått
    5 Ämnen
Avsnitt Progress
0% färdig

Att jämföra och välja bland flera modeller

Om målet är att utveckla en prediktionsmodell med hög prediktiv förmåga måste olika modeller testas och jämföras. Att enbart skapa och utvärdera en modell är ett kardinalfel om syftet är att använda modellen för att göra prediktioner. För att utvärdera och jämföra olika modeller behövs ett standardiserat arbetsflöde, vilket sammanfattas i följande flödesschema.

graph TD; D(1. Data) --> |"75%"| TD(2. Träningsdata); D --> |"25%"| Test(7. Testdata); TD --> Kand(3. Kandidatmodeller) --> CV(4. Cross-Validation<br>Korsvalidering) CV --> BP(5. Hitta bästa parametrar) TD --> OM(6. Träna modell igen) BP-->OM OM-->Test Test-->SE(8. Slutgiltig evaluering)

Kandidatmodeller (Candidate models)

Motiveringen till att testa olika typer av modeller är att vi på förhand inte vet vilken modell som är bäst. Exempel på modeller för kontinuerliga utfallsmått är linjär regression, random forest, gradient boosting, etc. För binära utfall kan vi testa logistisk regression, random forest, gradient boosting, etc. Faktum är att för varje typ av modell kan vi testa olika specifikationer av modellen. Du inser ganska snart att för varje given uppgift kan man testa ett mycket stort antal modeller och detta är tidskrävande arbete. Lyckligtvis finns en rad paket och funktioner i R som underlättar detta arbetet. Detta diskuteras senare.

Training

När ett antal olika modeller valts ut skall de tränas (utbildas) på en delmängd av all data. En tumregel är att 70-80% av data används till träning ("training set"). Därefter testas modellerna på testdata ("training set"), som utgör resterande 20-30% av data.

Overfitting

Att utvärdera modellerna på testdata är ett simpelt men briljant drag. I princip alltid uppvisar modeller hög prediktiv förmåga på träningsdata, vilket förklaras av att modellerna sett alla observationerna i träningsdata. Det innebär att modellerna känner mönster och samband i träningsdata. Detta resulterar i falskt hög precision i träningsdata. Den stora utmaningen är att skapa en modell med hög precision på framtida data – som modellen aldrig observerat – och detta är syftet med testdata. Modellerna får aldrig tränas på testdata. Observationerna i testdata är således "nya" för modellerna. Precisionen på testdata demonstrerar modellens förväntade precision på nya och framtida data.

Vikten av ovanstående blir ännu tydligare med machine learning. De flesta modeller inom machine learning skapar inte linjära samband mellan \(X\) och \(Y\). Modellerna är kapabla till mycket flexibla funktioner som följer data oerhört noggrant. Det innebär att även små, obetydliga, avvikelser i samband kan fångas och modelleras. Detta illustreras i nedanstående figur, där resultatet av två prediktionsmodeller jämförs. En av dessa är klassisk linjär regression och den andra är machine learning med random forest. Båda modellerna är tränade och testade i samma datamängd (testdata har inte använts). Bilden visar att random forest är en mycket flexibel modell som följer data mycket precist. Det kan tyckas imponerande men det är en stor nackdel. Fenomenet heter overfitting och innebär att modellens prediktion utmärkt i träningsdata (pga modellens flexibilitet) och detta vilseleder modellen om den testas på nya data som den ännu inte observerats. En bra modell kan generaliseras till testdata och uppvisa hög precision på obserationer den ännu inte erfarit.

Korsvalidering (Cross Validation)

k-Fold Cross Validation

Den mest använda metoden för att utvärdera modeller i träningsdata är korsvalidering (cross validation). Nedanstående flödesschema visar hur korsvalidering fungerar.

  1. Ordinarie datamängd delas slumpmässigt i träningsdata och testdata. Fördelningen kan förslagsvis vara 75% respektive 25%.
  2. Folds (folder): Träningsdata delas därefter slumpmässigt in i lika stora folder (delar). I nedanstående exempel skapas 5 folder. Modellen tränas på 4 av dessa och testas på den sista folden (som modellen inte tränat på).
  3. Repeats (omgångar): Förfarandet i Steg 2 upprepas men nu slumpas 5 nya folder fram. Likt Steg 2 sker träning i 4 av dessa och test görs på sista folden.

Nedanstående figur visar korsvalidering med 5 folder upprepat 5 gånger. I verkligheten kan det vara lönsamt att göra 10 upprepningar (omgångar). Syftet med korsvalideringen är att redan i träningsdata identifiera den bästa modellen genom att (i varje omgång) inte använda all träningsdata till träning. Således kan vi utvärdera olika typer av modeller och för varje modell dessutom utvärdera olika specifikationer. Om modellen är logistisk regression så kan vi utvärdera regressioner med och utan interaktioner, splinefunktioner eller andra transformationer av prediktorer. Samma gör sig gällande för machine learning. Det innebär att vi i detta steg kan identifiera de optimala parametrarna.

Den bästa modellen kan sedan användas på hela träningsdata för att skatta parametrarna igen, liksom på testdata för att utvärdera modellens precision på nya och framtida data.

Mått på modellens prediktiva förmåga (Evaluation metrics)

För att jämföra modeller med korsvalidering (eller andra metoder) måste ett mått på precision användas. Det finns en rad olika mått och vilket som är det optimala för en given frågeställning varierar. Det finns dock tumregler som är adekvata i de flesta sammanhang. Dessa diskuteras i nästa kapitel.