maskinintelligens.se

Verktygslåda / Stan / PyStan

Stan och PyStan

Stan är ett språk för att skriva sannolikhetsmodeller och skatta dem med Hamiltonian Monte Carlo. Du beskriver hur data antas ha uppkommit, och Stan ger fördelningen över parametrarna. PyStan är Python-gränssnittet. Används när modellen behöver formuleras utifrån problemet snarare än väljas ur ett bibliotek.

C++ med gränssnitt för Python, R och Julia

Skillnaden mellan Stan och ett vanligt maskininlärningsbibliotek är riktningen. I scikit-learn väljer man en modell ur en katalog och anpassar den till data. I Stan skriver man ner hur man tror att datan uppkommit, och inferensen faller ut ur det.

Det är långsammare, kräver mer eftertanke, och är rätt verktyg när problemet inte råkar passa något färdigt.

Var det gör verklig skillnad

Hierarkiska strukturer. Segment inom kategorier inom marknader, med partiell pooling på varje nivå. Det går att skriva som några rader som direkt speglar hur verksamheten är organiserad.

Mätfel och osäkerhet i indata. När en förklarande variabel själv är en skattning kan osäkerheten i den föras vidare i stället för att ignoreras.

Domänkunskap som priors. När en marknadschef vet att effekten rimligen ligger mellan två och åtta procent är det information. Stan låter den informationen ingå formellt i stället för att diskuteras bort i ett möte.

Storheter som inte är standard. Censurerade observationer, nollinflation och egendefinierade fördelningar skrivs ut direkt i stället för att approximeras.

Vad det kostar

Modellerna tar minuter till timmar att skatta i stället för sekunder. Det gör Stan olämpligt när tusentals modeller ska tränas om nattligen, och utmärkt när en genomtänkt modell ska ge ett beslutsunderlag som håller.

Man måste dessutom förstå vad man skriver. Det finns inga standardinställningar som räddar en dåligt formulerad modell, och diagnostiken kommer att säga ifrån. Det är en fördel förklädd till en nackdel.

Stan eller PyMC

De löser samma sorts problem. PyMC är trevligare att arbeta i om resten av kedjan är Python, och har på senare år blivit förstahandsvalet i de flesta uppdrag.

Stan har fortfarande fördelar när modellen är komplicerad, när diagnostiken behöver vara oomtvistlig, eller när koden ska gå att läsa av någon som inte programmerar i Python. Modellfilen är läsbar i sig. Det har värde vid granskning.