Gibbsův odběr vzorků

Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od verze recenzované 6. června 2019; ověření vyžaduje 1 úpravu .

Gibbs sampling  je algoritmus pro generování vzorku společného rozdělení množiny náhodných proměnných . Používá se k odhadu společného rozdělení a k výpočtu integrálů Monte Carlo . Tento algoritmus je speciálním případem algoritmu Metropolis-Hastings a je pojmenován po fyzikovi Josiahu Gibbsovi .

Gibbsovo vzorkování je pozoruhodné v tom, že nevyžaduje explicitní společné rozdělení, ale pouze podmíněné pravděpodobnosti pro každou proměnnou v rozdělení. Algoritmus v každém kroku vezme jednu náhodnou proměnnou a zvolí její hodnotu za předpokladu, že ostatní jsou pevné. Lze ukázat, že posloupnost získaných hodnot tvoří opakující se Markovův řetězec , jehož stabilní rozdělení je právě požadované společné rozdělení.

Gibbsovo vzorkování se používá v případech, kdy je společné rozdělení náhodných veličin velmi velké nebo explicitně neznámé, ale podmíněné pravděpodobnosti jsou známé a mají jednoduchý tvar. Gibbsovo vzorkování se zvláště dobře používá pro řešení posteriorní pravděpodobnosti v bayesovských sítích , protože jim jsou dány všechny nezbytné podmíněné pravděpodobnosti.

Algoritmus

Nechť existuje společné rozdělení pro náhodné proměnné a může být velmi velké. Předpokládejme , že jsme již v kroku vybrali nějakou hodnotu . V každém kroku se provádějí následující akce:

  1. Index je vybrán ).
  2. se volí podle rozdělení a pro zbývající indexy se hodnota nemění: (j≠i).

V praxi se index obvykle nevybírá náhodně, ale postupně. Algoritmus je jednoduchý a nevyžaduje žádné speciální znalosti a předpoklady, a proto je oblíbený.

Příklad

Nechť existuje společné rozdělení tří náhodných proměnných, z nichž každá je v rozsahu od 0 do 10.

Předpokládáme, že počáteční hodnota vektoru, od kterého iterační proces začíná, bude .

Dále zafixujeme a , poté vypočítáme podmíněnou pravděpodobnost pomocí předem známého vzorce , to znamená , že získáme nějaký graf hustoty pravděpodobnosti proměnné . To, co jsme původně nastavili na 5, zapomeneme, tato hodnota již nebude potřeba.

Nyní je potřeba provést vzorkování - vygenerovat novou náhodnou hodnotu pro v souladu se získanou hustotou pravděpodobnosti. Vzorkování lze provádět například podle algoritmu vzorkování rozptylu . K tomu se vygeneruje náhodné číslo s rovnoměrným rozdělením od 0 do 10, načež se pro toto vygenerované číslo vypočte jeho pravděpodobnost podle grafu hustoty pravděpodobnosti .

Nechť se vygeneruje například náhodné číslo 4 a podle grafu hustoty je jeho pravděpodobnost 0,2. Potom podle algoritmu vzorkování rozptylu přijmeme toto vygenerované číslo s pravděpodobností 0,2. A k tomu zase vygenerujeme další náhodné číslo od 0 do 1 s rovnoměrným rozdělením, a pokud se vygeneruje číslo menší než 0,2, pak přijmeme číslo 4 jako úspěšné. Jinak opakujeme od začátku - vygenerujeme další číslo (například vypadne 3), pro něj najdeme pravděpodobnost (například 0,3), pro něj vygenerujeme další číslo od 0 do 1 (například 0,1) a pak to v této iteraci konečně přijmeme .

Dále je třeba zopakovat všechny výše uvedené kroky s hodnotou , a již používáme „nové“ - v našem příkladu rovné 3. Vypočítáme tedy hustotu pravděpodobnosti , vygenerujeme opět náhodné číslo pro roli kandidáta pro novou hodnotu vytvořte vzorek s odchylkou a opakujte jej, pokud je hodnota "zamítnuta".

Podobně se akce opakují pro s novými hodnotami a . První iterace Gibbsova vzorkovacího algoritmu byla dokončena. Po několika stovkách/tisících takových iterací by náhodné hodnoty měly dosáhnout maxima své hustoty, která může být umístěna dostatečně daleko od naší první aproximace a vzorkována v této oblasti. Dalších tisíc iterací lze již použít pro zamýšlený účel (například pro hledání matematického očekávání ) jako vzorek hodnot požadovaného rozdělení, které nezávisí na původním vektoru .

Viz také

Odkazy