maskinintelligens.se

Verktygslåda / scikit-survival

scikit-survival

scikit-survival implementerar överlevnadsanalys med samma gränssnitt som scikit-learn. Det gör censurerade data hanterbara i en vanlig Python-arbetsgång, med allt från Cox-regression till random survival forests.

Python

Att komma igång med överlevnadsanalys i Python brukade betyda att man antingen skrev egen kod eller flyttade till R. scikit-survival gjorde det till en vanlig del av arbetsflödet.

Vad som ingår

Cox proportional hazards, med regularisering. Användbart när det finns fler variabler än vad en klassisk Cox-modell klarar.

Random survival forests, som fångar icke-linjäriteter och samspel utan att kräva antagandet om proportionella risker.

Gradient boosting för överlevnad, när träffsäkerhet väger tyngre än tolkbarhet.

Utvärderingsmått som klarar censurering: concordance index och tidsberoende AUC. Vanliga mått fungerar inte på censurerad data och ger vilseledande resultat om de används ändå.

Datastrukturen

Utfallet är inte ett tal utan ett par: hände det, och när. Biblioteket kräver att man strukturerar datan så. Det tvingar i praktiken fram ett tydliggörande som ofta i sig avslöjar problem i underlaget.

Den vanligaste upptäckten vid det steget är att ingen loggat när en kund sa upp, bara att statusen numera är uppsagd. Då måste tidpunkten rekonstrueras ur fakturahistorik eller liknande, ett typiskt fall för mätdesign inför nästa gång.

När något annat passar bättre

Ska livslängden användas i en kundvärdesberäkning behövs oftast en parametrisk modell som kan extrapolera långt fram, till exempel med Weibull. Där är PyMC eller Stan smidigare, och ger dessutom osäkerhet på köpet.

scikit-survival är rätt när frågan är vilka faktorer som driver bortfallet och vilka kunder som är mest utsatta just nu.