Tutkimustiedonhallinnan peruskurssi Hannu Toivonen, Marko Salmenkivi, Inkeri Verkamo hannu.toivonen, marko.salmenkivi, inkeri.verkamo@cs.helsinki.fi Helsingin yliopisto Hannu Toivonen, Marko Salmenkivi, Inkeri Verkamo Tutkimustiedonhallinnan peruskurssi 1/275 Kevät 2004
Satunnaislukujen generointi Hannu Toivonen, Marko Salmenkivi, Inkeri Verkamo Tutkimustiedonhallinnan peruskurssi Satunnaislukujen generointi 222/275 Kevät 2004
Lähteet Knuth, D., The Art of Computer Programming, Volume 2: Seminumerical Algorithms, luku 3 Numerical Recipes in C, luku 7 Hannu Toivonen, Marko Salmenkivi, Inkeri Verkamo Tutkimustiedonhallinnan peruskurssi Satunnaislukujen generointi 223/275 Kevät 2004
Johdanto edellä olemme tutustuneet menetelmiin, jotka perustuvat satunnaislukujen generointiin satunnaistustestaus: muodostetaan (kahden) otoksen permutaatioita bootstrap: generoidaan pseudo-otoksia valitsemalla satunnaisesti alkioita otoksesta takaisinpanolla Monte Carlo -testi usein: generoidaan arvoja tunnetusta populaatiojakaumasta Hannu Toivonen, Marko Salmenkivi, Inkeri Verkamo Tutkimustiedonhallinnan peruskurssi Satunnaislukujen generointi 224/275 Kevät 2004
Johdanto (2) satunnaistus ja bootstrap edellyttävät satunnaislukujen generoimista tasaisesta jakaumasta tasaisesti jakautuneiden satunnaislukujen generointiin ohjelmointikielissä kirjastofunktiot Monte Carlo -testauksen kohdalla populaatiojakauma voi luonnollisesti olla mikä tahansa jakauma kuinka generoidaan satunnaislukuja muista kuin tasaisista jakaumista? vaikka populaatiojakauma tunnettaisiinkin, ei välttämättä ole aivan suoraviivaista generoida siitä otoksia Hannu Toivonen, Marko Salmenkivi, Inkeri Verkamo Tutkimustiedonhallinnan peruskurssi Satunnaislukujen generointi 225/275 Kevät 2004
Diskreettejä jakaumia satunnaismuuttuja X noudattaa aina jotakin todennäköisyysjakaumaa jos muuttujan arvot ovat diskreettejä jakauma on diskreetti diskreetin todennäköisyysjakauman määrittää pistetodennäköisyysfunktio p(x), jolle i p(i) = 1 keskeisiä diskreettejä jakaumia: diskreetti tasainen jakauma binomijakauma Poisson-jakauma geometrinen jakauma Hannu Toivonen, Marko Salmenkivi, Inkeri Verkamo Tutkimustiedonhallinnan peruskurssi Satunnaislukujen generointi 226/275 Kevät 2004
Keskeisiä jatkuvia jakaumia muuttujan arvot jatkuvia jakauma jatkuva jatkuvan jakauman määrittää tiheysfunktio f(x = x), jolle f(x)dx = 1 tiheysfunktion integraalifunktiota F (x) = P (X x) nimitetään jakaumafunktioksi (kertymäfunktioksi) keskeisiä jatkuvia jakaumia tasainen jakauma, X T as(a, b) f(x = x) = 1 b a, a < x < b normaalijakauma eksponenttijakauma gammajakauma Hannu Toivonen, Marko Salmenkivi, Inkeri Verkamo Tutkimustiedonhallinnan peruskurssi Satunnaislukujen generointi 227/275 Kevät 2004
Satunnaislukujen generointi If the numbers are not random, they are at least higgledy-piggledy ( sikin sokin ) GEORGE MARSAGLIA (1984) tietokoneen generoimat satunnaisluvut ovat pseudo-satunnaislukuja deterministisesti määräytyneitä, ei oikeasti satunnaisia mikä on riittävän satunnaista yhdelle sovellukselle ei välttämättä ole sitä toiselle olemassa tilastollisia testejä, joilla testataan satunnaisuutta Hannu Toivonen, Marko Salmenkivi, Inkeri Verkamo Tutkimustiedonhallinnan peruskurssi Satunnaislukujen generointi 228/275 Kevät 2004
Linear congruential method m modulus a kertoja c lisäys X 0 alkuarvo satunnaislukusekvenssi saadaan rekursioyhtälöstä X n+1 = (ax n + c) mod m, n 0 yleisin tasaisesti jakautuneiden satunnaislukujen generoimismenetelmä parametrien m, a, c valinta on erittäin keskeinen kysymys toimivuuden kannalta Hannu Toivonen, Marko Salmenkivi, Inkeri Verkamo Tutkimustiedonhallinnan peruskurssi Satunnaislukujen generointi 229/275 Kevät 2004
Em. menetelmän ominaisuuksia menetelmä on syklinen sykliä nimitetään periodiksi sama siemenluku periodi alkaa samasta kohdasta sama sarja satunnaislukuja käytännössä siemenluvun voi ottaa esim. systeemin kellonajasta testausvaiheessa on hyvä että siemenluvun voi asettaa käsin Hannu Toivonen, Marko Salmenkivi, Inkeri Verkamo Tutkimustiedonhallinnan peruskurssi Satunnaislukujen generointi 230/275 Kevät 2004
Kertymäfunktion käänteisfunktio todennäköisyysjakauma voidaan siis ilmaista sen kertymäfunktion F (x) = P (X x) avulla F (x) on aina monotoninen (kasvava) funktio siis F (x 1 ) F (x 2 ), jos x 1 x 2 F saa arvot välillä [0, 1] kun F (x) on jatkuva ja aidosti kasvava, sillä on käänteisfunktio F 1 (y), 0 < y < 1 y = F (x) jos ja vain jos x = F 1 (y) käänteisfunktiota voidaan käyttää satunnaislukujen generoimiseen kyseisestä jakaumasta Hannu Toivonen, Marko Salmenkivi, Inkeri Verkamo Tutkimustiedonhallinnan peruskurssi Satunnaislukujen generointi 231/275 Kevät 2004
Transformaatiomenetelmä olkoon f(x) sen jakauman tiheysfunktio, josta halutaan generoida satunnaislukuja, ja F (x) vastaava kertymäfunktio oletetaan että kertymäfunktiolla on käänteisfunktio x = F 1 (y), 0 < y < 1 transformaatiomenetelmä: 1. generoi satunnaisluku y T as(0, 1) 2. x = F 1 (y) on satunnaisluku joka noudattaa haluttua jakaumaa Hannu Toivonen, Marko Salmenkivi, Inkeri Verkamo Tutkimustiedonhallinnan peruskurssi Satunnaislukujen generointi 232/275 Kevät 2004
Esimerkki: eksponenttijakauma keskeisin jakauma tasaisen jakauman ja normaalijakauman jälkeen jos tulostimelle saapuu keskimäärin µ tulostuspyyntöä aikayksikköä kohti ja saapumisajat ovat satunnaisia, niiden välit x i noudattavat eksponenttijakaumaa, X i Exp(µ) p(x = x) = µe µx E(X) = 1/µ, var(x) = 1/µ 2 Hannu Toivonen, Marko Salmenkivi, Inkeri Verkamo Tutkimustiedonhallinnan peruskurssi Satunnaislukujen generointi 233/275 Kevät 2004
exponenttijakauman kertymäfunktio: F (x) = 1 e x/µ, x > 0 F 1 (y) = µ log(1 y) µ log(1 U) Exp(µ) 1 U on tasaisesti jakautunut silloin kun U on x = µ log U on eksponenttijakautunut odotusarvolla µ Hannu Toivonen, Marko Salmenkivi, Inkeri Verkamo Tutkimustiedonhallinnan peruskurssi Satunnaislukujen generointi 234/275 Kevät 2004
Hylkäämismenetelmä rejection sampling myös hyväksymis-hylkäämismenetelmä ei edellytä kertymäfunktion eikä sen käänteisfunktion tuntemista on tunnettava apufunktio g(x), joka saa kaikkialla suuremman arvo kuin f(x) josta otoksia halutaan g:n alan oltava äärellinen Hannu Toivonen, Marko Salmenkivi, Inkeri Verkamo Tutkimustiedonhallinnan peruskurssi Satunnaislukujen generointi 235/275 Kevät 2004
Algoritmi olkoon g(x) f(x), kaikilla x R olkoon A = g(x)dx ja G(x) vastaava integraalifunktio ( kertymäfunktio ) jolla on käänteisfunktio joka pystytään laskemaan 1. generoi luku y T as(0, A) 2. kandidaatti x saadaan transformaatiomenetelmellä x = G 1 (y) 3. generoi Z T as(0, g(x)) 4. if z < f(x) tulosta x else goto 1 Hannu Toivonen, Marko Salmenkivi, Inkeri Verkamo Tutkimustiedonhallinnan peruskurssi Satunnaislukujen generointi 236/275 Kevät 2004
Toinen muotoilu menetelmälle oletetaan että (i) h on sellaisen jakauman H tiheysfunktio, josta voidaan generoida arvoja (ii) f(x) c h(x), kaikille x, jollakin vakiolla c Algoritmi 1. generoi kandidaatti z H 2. generoi u T as(0, 1) 3. if u f(z)/(ch(z)) return z; else goto 1 tehokkuus riippuu suhteesta f(z)/ch(z) eli c:stä Hannu Toivonen, Marko Salmenkivi, Inkeri Verkamo Tutkimustiedonhallinnan peruskurssi Satunnaislukujen generointi 237/275 Kevät 2004
Hyvin simppeli esimerkki halutaan generoida satunnaislukuja jakaumasta, jonka tiheysfunktio on neljännesympyrän kehä G(x)=cx g(x)=c πr 2 = 4 πr 2 /4 = 1 r = 2/ (π) Hannu Toivonen, Marko Salmenkivi, Inkeri Verkamo Tutkimustiedonhallinnan peruskurssi Satunnaislukujen generointi 238/275 Kevät 2004
olkoon apufunktio g(x) = c, c > r G(x) = cx 1. generoidaan satunnaisluku y T as(0, c 2 ) 2. määritetään kandidaatti x = G 1 (y) = y/c 3. generoidaan satunnaisluku u T as(0, g(x) = c) 4. jos f(x) = ( 4 π x2 ) < u palautetaan x muuten palataan kohtaan 1 Hannu Toivonen, Marko Salmenkivi, Inkeri Verkamo Tutkimustiedonhallinnan peruskurssi Satunnaislukujen generointi 239/275 Kevät 2004
Tosielämässä monista keskeisistä jakaumista voidaan generoida satunnaislukuja hylkäämismenetelmää käyttäen esim. normaali-, gamma-, Poisson-, binomijakaumat keskeinen apufunktio g on Lorentzin jakauma tiheysfunktio; kyseisen jakauman integraalifunktio on tangenttifunktio Hannu Toivonen, Marko Salmenkivi, Inkeri Verkamo Tutkimustiedonhallinnan peruskurssi Satunnaislukujen generointi 240/275 Kevät 2004
Arvojen riippumattomuus hylkäämismenetelmässä jokainen kandidaatti generoitiin siten, että peräkkäiset arvot eivät riippuneet toisistaan jos vakio c suuri, vain pieni osa arvauksista osuu oikeaan avaruus on liian harva, arvaukset osuvat liian harvoin hyvin monimutkaisista jakaumista (paljon ulottuvuuksia ja riippuvuuksia niiden välillä) ei riippumattomia arvoja voi generoida tilastollisessa mallintamisessa saatetaan tarvita otoksia hyvin hankalista jakaumista Hannu Toivonen, Marko Salmenkivi, Inkeri Verkamo Tutkimustiedonhallinnan peruskurssi Satunnaislukujen generointi 241/275 Kevät 2004
MCMC-menetelmä Markovin ketju Monte Carlo sallitaan, että peräkkäiset arvot ovat toisistaan riippuvia kun on tehty hyvä arvaus, kokeillaan seuraavaksi jotakin lähellä olevaa arvoa joka kerta kun generoidaan arvoa halutusta jakaumasta, otetaan huomioon edellinen arvo, mutta ei muita Hannu Toivonen, Marko Salmenkivi, Inkeri Verkamo Tutkimustiedonhallinnan peruskurssi Satunnaislukujen generointi 242/275 Kevät 2004
Markovin ketju Markovin ketju on jono satunnaismuuttujia siten, että jonon seuraava muuttuja riippuu edellisestä (mutta ei muista) P r(x n X 1,..., X n 1 ) = P r(x n X n 1 ) idea: generoidaan ketju, jonka tilojen jakauma on otos halutusta jakaumasta Hannu Toivonen, Marko Salmenkivi, Inkeri Verkamo Tutkimustiedonhallinnan peruskurssi Satunnaislukujen generointi 243/275 Kevät 2004
Algoritmi (Metropolis-Hastings) valitse alkutila x 0 toista K kertaa (n = 0,..., K 1): generoi kandidaatti x jostakin jakaumasta Q(x n ) todennäköisyydellä α(x n, x ) aseta x n+1 := x muussa tapauksessa aseta x n+1 := x n aseta n := n + 1 tulosta x n yllä Q(x) on x:n ehdotusjakauma q(x, x ) on Q:n tiheysfunktio Hannu Toivonen, Marko Salmenkivi, Inkeri Verkamo Tutkimustiedonhallinnan peruskurssi Satunnaislukujen generointi 244/275 Kevät 2004
Käänteisyysehto M-H -algoritmi perustuu käänteisyysehtoon jos kaikille pareille x, y E pätee ketjun tilojen jakauma on f f(x) T (x, y) = f(y) T (y, x) x T(y,x) y T(x,y) kuinka valita siirtymätodennäköisyydet T (x, y)? Hannu Toivonen, Marko Salmenkivi, Inkeri Verkamo Tutkimustiedonhallinnan peruskurssi Satunnaislukujen generointi 245/275 Kevät 2004
Milloin pitää hylätä? ilmaistaan käänteisyysehto seuraavasti: f(x) q(x, x ) α(x, x ) = f(x ) q(x, x), α(x, x ) on siis todennäköisyys, että kandidaatti hyväksytään jos f(x) q(x, x ) > f(x ) q(x, x) hyväksytään aina muuten α(x, x ) = f(x ) q(x, x) f(x) q(x, x ). Hannu Toivonen, Marko Salmenkivi, Inkeri Verkamo Tutkimustiedonhallinnan peruskurssi Satunnaislukujen generointi 246/275 Kevät 2004
Hyväksymistodennäköisyys M-H -algoritmi edellyttää vain, että f(x ) f(x) pystytään laskemaan ei muita oletuksia jakaumasta käytännön kannalta sopivan ehdotusjakauman Q löytäminen tärkeää Hannu Toivonen, Marko Salmenkivi, Inkeri Verkamo Tutkimustiedonhallinnan peruskurssi Satunnaislukujen generointi 247/275 Kevät 2004
Konvergenssi alkutila vaikuttaa tilojen jakaumaan jotta vaikutus eliminoitaisiin tarvitaan lämmittelyjakso, jonka aikana ei vielä kerätä generoituja arvoja mikä on sopiva lämmittelyjakson pituus? vaikea ongelma toinen keskeinen ongelma on, kuinka kauan simulaatiota pitää jatkaa, jotta otos olisi kattava Hannu Toivonen, Marko Salmenkivi, Inkeri Verkamo Tutkimustiedonhallinnan peruskurssi Satunnaislukujen generointi 248/275 Kevät 2004
Yhteenveto satunnaislukujen generoiminen halutusta jakaumasta on tarpeen esimerkiksi Monte Carlo -testauksen yhteydessä tietokoneen generoimat satunnaisluvut ovat pseudo-satunnaislukuja tasaisesti jakautuneiden satunnaislukujen avulla voidaan generoida muita jakaumia noudattavia lukuja transformaatiomenetelmä käyttää halutun jakauman kertymäfunktion käänteisfunktiota hylkäämismenetelmässä käytetään apufunktiota josta osataan generoida otoksia ja joka sulkee sisäänsä halutun tiheysfunktion Hannu Toivonen, Marko Salmenkivi, Inkeri Verkamo Tutkimustiedonhallinnan peruskurssi Satunnaislukujen generointi 249/275 Kevät 2004
Otokset tietokannoista Hannu Toivonen, Marko Salmenkivi, Inkeri Verkamo Tutkimustiedonhallinnan peruskurssi Otokset tietokannoista 250/275 Kevät 2004
Lähteet Jeffrey Scott Vitter: Faster Methods for Random Sampling, Communications of ACM 27, 7, 703 718, 1984. Numerical Recipes in C, luku 7.3 Hannu Toivonen, Marko Salmenkivi, Inkeri Verkamo Tutkimustiedonhallinnan peruskurssi Otokset tietokannoista 251/275 Kevät 2004
Luennon runko käydään läpi neljä algoritmia joilla voidaan tehdä otantaa tietokannoista yksinkertaisimmasta tehokkaimpaan kaksi algoritmeista hyödyntää aiemmin käsiteltyjä transformaatio- ja hylkäämismenetelmiä näin saadaan kuvaa näistä menetelmistä myös realistisemmassa ympäristössä kuin viime luennon esimerkeissä Hannu Toivonen, Marko Salmenkivi, Inkeri Verkamo Tutkimustiedonhallinnan peruskurssi Otokset tietokannoista 252/275 Kevät 2004
Johdanto usein tarpeellinen tehtävä on valita n < N tietuetta satunnaisesti tietokannasta, jossa N tietuetta talletettuna toissijaiseen muistiin hitaalle välineelle kriittinen seikka on kuinka hyvin voidaan välttää turhat luku/kirjoitusoperaaatiot halutaan saada tuloksia, jotka pätevät koko aineistoon, joutumatta käymään läpi koko aineistoa ei samaa tietuetta kahdesti myös tietuekoko voi olla suuri esim. laaduntarkkailu, ostoskorianalyysi Hannu Toivonen, Marko Salmenkivi, Inkeri Verkamo Tutkimustiedonhallinnan peruskurssi Otokset tietokannoista 253/275 Kevät 2004
Perusmenetelmä P 1. do { 2. generoi satunnainen kokonaisluku 1 k N 3. valitse k:s tietue, ellei sitä ole jo valittu 4. } until n tietuetta valittu Hannu Toivonen, Marko Salmenkivi, Inkeri Verkamo Tutkimustiedonhallinnan peruskurssi Otokset tietokannoista 254/275 Kevät 2004
vaatii O(n) satunnaisluvun generoimista generointiaika O(n), mikäli 3. askelen vaatima tarkistus tapahtuu vakioajassa tämä vaatii tilaa O(N) jos tarkistukseen käytetään binääristä taulukkoa, tai O(n) osoitinta hajauttamalla n (levy)hakua, mahdollisesti useita hakuja samaan levylohkoon tms. Hannu Toivonen, Marko Salmenkivi, Inkeri Verkamo Tutkimustiedonhallinnan peruskurssi Otokset tietokannoista 255/275 Kevät 2004
Sijaintijärjestys algoritmi valitsee tietueet ottamatta huomioon niiden sijaintijärjestystä tiedostossa esim. 84. tietue voi tulla valituksi ennen 16. tietuetta jos otoksen tietueet halutaan poimia järjestyksessä (esim. yhdellä tietokannan läpikäynnillä), tietuenumerot täytyy lajitella ennen poimintaa lajitteluaika O(n log n), esim. quicksort, heapsort poimintaa ei voida aloittaa, ennen kuin kaikki tietuenumerot on generoitu myöskään tulostusta ei voi tehdä on-line Hannu Toivonen, Marko Salmenkivi, Inkeri Verkamo Tutkimustiedonhallinnan peruskurssi Otokset tietokannoista 256/275 Kevät 2004
Otanta järjestyksessä generoidaan otokseen tulevien tietueiden numerot suoraan järjestyksessä (on-line) ratkaisuperiaate: kun N tietueesta on valittava n kpl, kunkin yksittäisen tietueen valinnan todennäköisyys on n/n N on vielä käsittelemättömien tietueiden määrä n on otokseen vielä tarvittavien tietueiden määrä jokaisen tietueen kohdalla valinta todennäköisyydellä n/n kun n = 0, algoritmi päättyy Hannu Toivonen, Marko Salmenkivi, Inkeri Verkamo Tutkimustiedonhallinnan peruskurssi Otokset tietokannoista 257/275 Kevät 2004
Algoritmi S 1. do { 2. generoi satunnaisluku u T as(0, 1) 3. if u n/n valitse seuraava tietue otokseen ja aseta n n 1 4. else ohita seuraava tietue 5. aseta N N 1 6. } while n > 0 Hannu Toivonen, Marko Salmenkivi, Inkeri Verkamo Tutkimustiedonhallinnan peruskurssi Otokset tietokannoista 258/275 Kevät 2004
Algoritmin S analyysia jos jossakin vaiheessa n = N kaikki jäljellä olevat tietueet valitaan otokseen koska jokaisen tietueen kohdalla on tehtävä päätös, otetaanko se mukaan vai ei O(N)-aikavaativuus Hannu Toivonen, Marko Salmenkivi, Inkeri Verkamo Tutkimustiedonhallinnan peruskurssi Otokset tietokannoista 259/275 Kevät 2004
Etäisyyksien generointi nopeammissa algoritmeissa generoidaan suoraan peräkkäisten mukaan otettavien tietueiden etäisyyksiä: merkitään S(n, N):llä satunnaismuuttujaa, joka kertoo, kuinka monta seuraavaa tietuetta hylätään ratkaisuperiaate: toistetaan seuraavia askelia, kunnes n = 0 1. generoidaan satunnaisluku S(n, N) 2. hylätään seuraavat S(n, N) tietuetta ja valitaan niitä seuraava 3. N N S(n, N) 1, n n 1 Hannu Toivonen, Marko Salmenkivi, Inkeri Verkamo Tutkimustiedonhallinnan peruskurssi Otokset tietokannoista 260/275 Kevät 2004
Satunnaismuuttuja S(n, N) diskreetti satunnaismuuttuja, joka saa arvoja väliltä 0,..., N n merkitään seuraavassa lyhyesti S pistetodennäköisyysfunktio P (S = s) = f(s) ilmaisee, mikä on todennäköisyys, että sivuutetaan täsmälleen s arvoa jakaumafunktio P (S(n, N) s) = s i=0 f(i) = F (s) ilmaisee, mikä on todennäköisyys että sivuutetaan enintään s arvoa Hannu Toivonen, Marko Salmenkivi, Inkeri Verkamo Tutkimustiedonhallinnan peruskurssi Otokset tietokannoista 261/275 Kevät 2004
f(0) = n/n f(s) = P (sivuutetaan yli s 1 arvoa) P (valitaan s + 1:s arvo sivuutetaan yli s 1 arvoa) = (1 F (s 1)) n/(n s) f:n ja F :n suljetut muodot hankalia laskea f(s) = n(n n)!(n s 1)! N!(N n s)! huom: laskeminen paljon tehokkaampaa kun kertomien osamääriä on ensin sievennetty Hannu Toivonen, Marko Salmenkivi, Inkeri Verkamo Tutkimustiedonhallinnan peruskurssi Otokset tietokannoista 262/275 Kevät 2004
Transformaatiomenetelmä seuraava algoritmi A perustuu transformaatiomenetelmään (sovellettuna diskreettiin jakaumaan) tavoitteena generoida satunnaismuuttuja s = S(n, N) jakaumasta F (tai paremminkin F (n, N)) apumuuttuja u T as(0, 1) käänteisfunktiota F 1 (u) ei tunneta sen sijaan tarkastellaan F (s):n arvoja valitaan s jolla F (s 1) < u F (s) F (i):n ja f(i):n arvot lasketaan tehokkaasti edellisistä arvoista F (i 1) ja f(i 1) Hannu Toivonen, Marko Salmenkivi, Inkeri Verkamo Tutkimustiedonhallinnan peruskurssi Otokset tietokannoista 263/275 Kevät 2004
Algoritmi A 1. do { 2. generoi satunnaisluku u T as(0, 1) 3. s 0; F (0) n/n 4. while u > F (s) sivuuta tietue: 5. s s + 1; f(s) (1 F (s 1))n/(N s); F (s) F (s 1) + f(s) 6. valitse s + 1:s tietue 7. aseta n n 1, N N s 1 8. } while n > 0 Hannu Toivonen, Marko Salmenkivi, Inkeri Verkamo Tutkimustiedonhallinnan peruskurssi Otokset tietokannoista 264/275 Kevät 2004
Algoritmin A analyysiä do-silmukka suoritetaan n kertaa while-silmukka (askel 5) vie kaikkiaan aikaa luokkaa O(N), koska jokainen tietue käydään läpi kerran algoritmin aikavaativuus on siis O(N) (kuten Algoritmi S) generoitavien satunnaislukujen määrä on n eli huomattavasti pienempi Hannu Toivonen, Marko Salmenkivi, Inkeri Verkamo Tutkimustiedonhallinnan peruskurssi Otokset tietokannoista 265/275 Kevät 2004
Hylkäämismenetelmä seuraavassa algoritmissa D käytetään satunnaismuuttuja S(n, N):n generointiin hylkäämismenetelmää (sekä transformaatiomenetelmää apujakaumalle g) apujakauma g on jatkuva muunnetaan diskreetti pistetodennäköisyysfunktio jatkuvaksi porrasfunktioksi portaan pituus on 1 ja funktion arvo i:nnellä portaalla on pistetodennäköisyys p(i 1) ks. kuva Numerical Recipes, s. 294 hylkäysmenetelmässä s:n arvoksi käytetään vain kokonaislukuosaa x Hannu Toivonen, Marko Salmenkivi, Inkeri Verkamo Tutkimustiedonhallinnan peruskurssi Otokset tietokannoista 266/275 Kevät 2004
tehtävä siis: generoi satunnaislukuja S:n jakaumasta olkoon g sopiva apujakauma, joka approksimoi jakaumaa F (s) hyvin etsitään c 1 jolle f( x ) cg(x) kaikilla x relevantilla arvoalueella generoidaan jakaumasta g kandidaatti x generoidaan satunnaisluku u väliltä 0,..., 1 jos u > f( x )/(cg(x)) hylätään x muuten hyväksytään s x Hannu Toivonen, Marko Salmenkivi, Inkeri Verkamo Tutkimustiedonhallinnan peruskurssi Otokset tietokannoista 267/275 Kevät 2004
Litistys (squeeze method) ehdon u > f( X )/(cg(x)) testaaminen vie jonkin verran aikaa, koska f on työläs laskea hylkäämisen todennäköisyys on pieni aikaa voidaan säästää korvaamalla f(s) funktiolla h(s) joka voidaan laskea nopeammin ja jolle h(s) f(s) f( X ) täytyy laskea vain kun u > h( X )/cg(x) litistystekniikka: h( X ) f( X ) cg(x) litistys ei tietysti ole välttämätöntä algoritmin toiminnan kannalta Hannu Toivonen, Marko Salmenkivi, Inkeri Verkamo Tutkimustiedonhallinnan peruskurssi Otokset tietokannoista 268/275 Kevät 2004
Algoritmi D 1. do { 2. generoi satunnaisluku u T as(0, 1) 3. generoi satunnaisluku x jakaumasta g(x) 4. if u h( x )/(cg(x)) aseta s x 5. else if u f( x )/(cg(x)) aseta s x 6. else goto 2 7. sivuuta s tietuetta ja valitse sen jälkeen seuraava otokseen 8. aseta n n 1, N N s 1 9. } while n > 0 Hannu Toivonen, Marko Salmenkivi, Inkeri Verkamo Tutkimustiedonhallinnan peruskurssi Otokset tietokannoista 269/275 Kevät 2004
Sopivan funktion g valinta mikä on sopiva apufunktio g? S:n arvo on pienin n:stä kokonaisluvusta, jotka on generoitu ( ilman takaisinpanoa ) toisistaan riippumattomasti väliltä 0,..., N generoidaan otos vastaavasta jatkuvasta jakaumasta ( takaisinpanolla ) olkoon X satunnaismuuttuja ko. jakaumasta X:n arvo voidaan ajatella pienimmäksi n:stä riippumattomasta reaaliluvusta Tas(0, N)-jakaumasta Hannu Toivonen, Marko Salmenkivi, Inkeri Verkamo Tutkimustiedonhallinnan peruskurssi Otokset tietokannoista 270/275 Kevät 2004
Kandidaattien generointi kandidaatin x generoiminen jakaumasta g on helppoa ja nopeaa käytetään transformaatiomenetelmää merkitään Z 1, Z 2,..., Z n riippumattomia Tas(0, N)-jakautuneita reaalilukuja näitä lukuja ei suinkaan tarvitse generoida, niitä käytetään tässä vain g:tä vastaavan jakaumafunktion G(x) johtamiseen G(x) = P (X x) = 1 P (X > x) = 1 P (Z k > x) = 1 (1 x N )n. 1 k n Hannu Toivonen, Marko Salmenkivi, Inkeri Verkamo Tutkimustiedonhallinnan peruskurssi Otokset tietokannoista 271/275 Kevät 2004
Kandidaattien generointi (2) haluttu x saadaan siis transformaatiomenetelmällä x = G 1 (u) edellyttää tietysti että sellainen on (tässä sivuutetaan sen näyttäminen intuitioon vedoten, samoin tekninen käänteisfunktion johtaminen) saadaan G 1 (u) = N(1 (1 u) 1/n ) koska muuttuja 1 U on tasaisesti jakautunut kun U:kin on, saadaan kandidaatti x asettamalla x N(1 u 1/n ) Hannu Toivonen, Marko Salmenkivi, Inkeri Verkamo Tutkimustiedonhallinnan peruskurssi Otokset tietokannoista 272/275 Kevät 2004
Muut parametrit myös vakio c ja litistämiseen käytettävä funktio h valittava h:n oltava tiukka alaraja, toisaalta sellainen että se pystytään laskemaan nopeasti h(s) = n N c = N N n + 1 ( 1 s N n + 1 ) n 1 Hannu Toivonen, Marko Salmenkivi, Inkeri Verkamo Tutkimustiedonhallinnan peruskurssi Otokset tietokannoista 273/275 Kevät 2004
Algoritmin analyysiä kun n on suuri suhteessa N:ään, algoritmi saattaa olla hitaampi kuin algoritmi A do-silmukka suoritetaan n kertaa enää ei tarvitse käydä sen sisällä läpi tietueita vaan sivuutettavien tietueiden lukumäärä saadaan generoitua suoraan satunnaislukuna vastaavan satunnaismuuttujan jakaumasta algoritmin aikavaativuus on siis O(n) Hannu Toivonen, Marko Salmenkivi, Inkeri Verkamo Tutkimustiedonhallinnan peruskurssi Otokset tietokannoista 274/275 Kevät 2004
Yhteenveto usein tarpeellinen tehtävä on valita otos satunnaisesti tietokannasta turhien luku-/kirjoitusoperaatioiden välttäminen tärkeää siksi tietueet on syytä valita järjestyksessä jossa ne on talletettu hylkäämismenetelmään perustuva algoritmi suoriutuu tehtävästä lineaarisessa ajassa suhteessa otoksen kokoon Hannu Toivonen, Marko Salmenkivi, Inkeri Verkamo Tutkimustiedonhallinnan peruskurssi Otokset tietokannoista 275/275 Kevät 2004