Technology

Hello uncertain world

March 12, 2014

Read time 2 min

Johtopäätöksiä tai edes käyttökelpoista visualisaatiota ei useinkaan pysty tekemään datasta suoraan, vaan tarvitaan mallintamista. Mallintaminen erottaa kiinnostavan ja ei-kiinnostavan variaation, ja auttaa johtopäätösten luotettavuuden arvioinnissa.

Pienehköissä projekteissa mallintaminen perustuu valmispaketteihin, joista kukin soveltaa yhtä, yleensä melko suppeaa malliperhettä. Esimerkiksi R:n mgcv-paketilla voi sovittaa GAM-malleja. Mutta mikään paketti on harvoin tarpeeksi joustava, joten pakettia valitessa tehdään kompromissi, joka jättää tiedettyjä asioita huomioimatta.

Vaihtoehto olisi kirjoittaa ongelmaan sopiva malli, mutta sen estimoinnin joutuu koodaamaan itse. Tutkimustyössä tämä on perusteltua, mutta soveltavissa projekteissa kynnys itse koodaamiselle on huomattava, koska se helposti nostaa projektin kokonaiskustannukset moninkertaiseksi.

Valmiiden ratkaisujen ongelmat korostuvat, jos datasta ei ole osoitettavissa yhtä riippumattoman näytteen tasoa. Esimerkiksi paikkatiedossa tai aikasarjassa on luonnollinen riippuvuusrakenne, koska lähekkäiset ajat ja paikat ovat samankaltaisia. Riippuvuusrakenteet ovat monitahoisessa ongelmassa (eli rikkaammassa datassa) aina tapauskohtaisia ja vaatisivat kukin oman mallinsa.

Todennäköisyysohjelmointi

Todennäköisyysohjelmoinnin (probabilistic programming) idea on vanha, mutta muuttunut viime vuosina toteuttamiskelpoiseksi. Siinä kuvataan vain dataa tuottava mekanismi, tilastollinen malli todellisuudesta, ja mahdollisesti estimoinnissa käytettävien approksimaatioiden taso ja muoto. Kääntäjä tuottaa mallinkuvauksesta estimoivan koodin. Kun malli kirjoitetaan itse, ei olla rajoittuneita valmistyökaluun, ja ratkaistavan ongelman omituisuudet voidaan ottaa paljon paremmin huomioon.

Mallintamista voidaan soveltaa näin kohteissa, joissa se ei aiemmin kannattanut. Perusratkaisujenkin laatu paranee.

Esimerkiksi suosiotaan nopeasti kasvattava Stan-kieli tukee hamiltonilaiseen mekaniikkaan perustuvaa HMC:tä, joka on estimointitekniikkana aiempia nopeampi. Stan tuottaa mallinkuvauksesta C++:n kautta natiivikoodia. HMC tarvitsee likelihood-funktion ensimmäisen asteen derivaatat: Stan laskee nämä analyyttisesti mallikoodin perusteella. Stan osaa myös laskea perinteisiä MAP/ML-ratkaisuja BFGS-optimoinnilla. Myöhemmin Staniin on tulossa analyyttinen toisen asteen derivointi (RHMC, Laplace-approksimaatiot) ja luultavasti myös approksimatiivisia estimointimenetelmiä kuten EP (expectation propagation) tai variationaaliset posteriori-approksimaatiot.

Stanin ohjelmointi vaatii kokemusta tilastollisista malleista. On myös ymmärrettävä käytettävän estimointimenetelmän ominaisuudet, jotta monimutkaisemmasta mallista saa tehokkaan. Esimerkiksi parametriavaruuden geometrian olisi syytä olla helppo, ilman niin sanottuja todennäköisyyskuiluja. Tulevaisuuden kääntäjät voivat ymmärtää ja optimoida mallien geometriaa.

Todennäköisyysohjelmoinnin kielien päälle kehittyy luultavasti räätälöintejä. Esimerkiksi nykyisistä R:n mallinnuspaketeista osa korvautuu uusilla, jotka ovat varsinaista todennäköisyysohjelmointia helpompia mutta omassa sovelluskohteessaan joustavia.

Stanin lisäksi muita todennäköisyysohjelmoinnin projekteja ovat muun muassa PyMC, JAGSInfer.NET ja Venture.DARPA rahoittaa todennäköisyysohjelmoinnin tutkimusta PPAML-ohjelmassaan.

Kuva: Scott Wurzel

Never miss a post