Kapslad provtagningsalgoritm
av |
---|
en serie om |
Bayesiansk statistik |
Posterior = Sannolikhet × Tidigare ÷ Bevisbakgrund |
Modellbyggnad |
Posterior approximation |
Uppskattare |
Uppskattning av bevis |
Modellutvärdering |
Den kapslade samplingsalgoritmen är en beräkningsmetod för Bayesianska statistikproblem för att jämföra modeller och generera sampel från posteriora distributioner. Den utvecklades 2004 av fysikern John Skilling.
Bakgrund
Bayes sats kan appliceras på ett par konkurrerande modeller och för data , av vilka en kan vara sann (även om vilken är okänd) men som båda inte kan vara sanna samtidigt. Den bakre sannolikheten för kan beräknas som:
De tidigare sannolikheterna och är redan kända, eftersom de är valda av forskaren i förväg. Den återstående Bayes-faktorn är dock inte så lätt att utvärdera, eftersom det generellt kräver marginalisering av olägenhetsparametrar. I allmänhet en uppsättning parametrar som kan grupperas tillsammans och kallas , och har sin egen vektor av parametrar som kan ha olika dimensioner, men kallas fortfarande . Marginaliseringen för är
och likaså för . Denna integral är ofta analytiskt svårhanterlig, och i dessa fall är det nödvändigt att använda en numerisk algoritm för att hitta en approximation. Den kapslade samplingsalgoritmen utvecklades av John Skilling specifikt för att approximera dessa marginaliseringsintegraler, och den har den extra fördelen att generera sampel från den bakre fördelningen . Det är ett alternativ till metoder från den bayesianska litteraturen som broprovtagning och provtagning av defensiv betydelse.
Här är en enkel version av den kapslade samplingsalgoritmen, följt av en beskrivning av hur den beräknar den marginella sannolikhetsdensiteten där är eller :
Börja med punkter samplade från tidigare. för till do % Antalet iterationer j väljs genom gissningar. aktuella sannolikhetsvärden för punkterna ; Spara punkten med minsta sannolikhet som en provpunkt med vikt . Uppdatera punkten med minsta sannolikhet med några Markov-kedja Monte Carlo -steg enligt föregående, acceptera endast steg som håller sannolikheten över . slutretur } ;
Vid varje iteration är en uppskattning av mängden tidigare massa som täcks av hypervolymen i parameterrymden för alla punkter med sannolikhet större än . Viktfaktorn är en uppskattning av mängden tidigare massa som ligger mellan två kapslade hyperytor och . Uppdateringssteget beräknar summan över av för att numeriskt approximera integralen
I gränsen har denna estimator en positiv bias av ordningen som kan tas bort genom att använda istället för i ovanstående algoritm.
Tanken är att dela upp området och uppskatta, för varje intervall hur troligt är det a priori att en slumpmässigt vald skulle mappas till detta intervall. Detta kan ses som ett Bayesians sätt att numeriskt implementera Lebesgue-integration .
Genomföranden
Exempel på implementeringar som visar den kapslade samplingsalgoritmen är allmänt tillgängliga för nedladdning, skrivna på flera programmeringsspråk .
- Enkla exempel i C , R eller Python finns på John Skillings hemsida.
- En Haskell- port av ovanstående enkla koder finns på Hackage.
- Ett exempel i R som ursprungligen utformades för att passa spektra beskrivs på och finns på GitHub.
- Ett exempel i C++ , som heter Diamonds, finns på GitHub.
- Ett mycket modulärt Python- parallellexempel för användning av statistisk fysik och kondenserad materiens fysik finns på GitHub.
- pymatnest är ett Python- paket designat för att utforska energilandskapet för olika material, beräkna termodynamiska variabler vid godtyckliga temperaturer och lokalisera fasövergångar finns på GitHub.
- Mjukvarupaketet MultiNest kan utföra kapslade provtagningar på multimodala posteriora distributioner. Den har gränssnitt för C++, Fortran och Python-ingångar och är tillgänglig på GitHub.
- PolyChord är ett annat kapslat samplingsprogram som är tillgängligt på GitHub. PolyChords beräkningseffektivitet skalar bättre med en ökning av antalet parametrar än MultiNest, vilket innebär att PolyChord kan vara effektivare för högdimensionella problem.
- NestedSamplers.jl ett Julia- paket för implementering av enkel- och multiellipsoidala kapslade samplingsalgoritmer finns på GitHub.
- Korali är ett högpresterande ramverk för kvantifiering av osäkerhet, optimering och djup förstärkningsinlärning, som också implementerar kapslad sampling.
Ansökningar
Sedan kapslad provtagning föreslogs 2004, har den använts i många aspekter av astronomiområdet . En artikel föreslog att man skulle använda kapslad sampling för kosmologisk modellval och objektdetektering, eftersom det "unikt kombinerar noggrannhet, allmän tillämpbarhet och beräkningsförmåga." En förfining av algoritmen för att hantera multimodala posteriors har föreslagits som ett sätt att upptäcka astronomiska objekt i befintliga datamängder. Andra tillämpningar av kapslad sampling är inom området för finita elementuppdatering där algoritmen används för att välja en optimal finita elementmodell , och detta tillämpades på strukturell dynamik . Denna provtagningsmetod har även använts inom området materialmodellering. Den kan användas för att lära sig partitionsfunktionen från statistisk mekanik och härleda termodynamiska egenskaper.
Dynamisk kapslad sampling
Dynamisk kapslad sampling är en generalisering av den kapslade samplingsalgoritmen där antalet sampel som tas i olika regioner av parameterutrymmet justeras dynamiskt för att maximera beräkningsnoggrannheten. Detta kan leda till stora förbättringar i noggrannhet och beräkningseffektivitet jämfört med den ursprungliga kapslade samplingsalgoritmen, där tilldelningen av sampel inte kan ändras och ofta tas många sampel i områden som har liten effekt på beräkningsnoggrannheten.
Allmänt tillgängliga mjukvarupaket för dynamisk kapslad sampling inkluderar:
- dynesty - en Python-implementering av dynamisk kapslad sampling som kan laddas ner från GitHub.
- dyPolyChord: ett mjukvarupaket som kan användas med Python, C++ och Fortran sannolikhet och tidigare distributioner. dyPolyChord är tillgängligt på GitHub.
Dynamisk kapslad provtagning har tillämpats på en mängd olika vetenskapliga problem, inklusive analys av gravitationsvågor, kartläggning av avstånd i rymden och exoplanetdetektering.