R-ohjelmointi.org

Tilastotieteellistä ohjelmointia R-kielellä

useR! 2013 – matkakertomus

Tämän vuotinen useR!-kokous järjestettiin Albacetessä, Espanjassa. Kokous pidettiin Castila-La Manchan yliopiston tiloissa. Albacete sijaitsee vajaa kolmesataa kilometriä Madridista kaakkoon, ja kaupungin nimi tarkoittanee tasankoa, sillä ympäröivä maasto on hyvin tasaista. Ympäröivä Kastilia-La Manchan itsehallintoalue lienee tunnetuin Don Quioten seikkailuista. Albacete on ollut alunperin pieni maurikylä, mutta se mainitaan kirjallisissa lähteissä ensimmäisen kerran vasta 1200-luvun puolivälissä. Nykyisin Albacete on noin Espoon kokoinen kaupunki.

Ulkona oli iltapäivisin 35-40 astetta lämmintä, joten nähtävyyksien katselulle ei oikein ollut mahdollisuuksia, ja kokouksen aikataulukin oli tiukka. Näin kyllä muutamia puita lentokenttäbussin ikkunasta 😉

Mutta asiaan.

Tutoriaalit
Ensimmäisenä päivänä osallistuin kahteen tutoriaaliin, joista toinen käsitteli suurten aineistojen käsittelyä ja rinnakkaislaskentaa, ja toinen makroekonomisia malleja, ja muun muassa niiden laatimiseen tehtyä pakettia RAdamant. Lisäksi kuulin osan spatiaalisen datan mallintamiseen keskittyvästä tutoriaalista. Juttelin tutoriaalin jälkeen pari tuntia RAdamant:in kehittäjien kanssa, ja heillä oli monia hyviä vinkkejä siitä, miten R:n nykyisen parserin ja coren ominaisuuksia kannattaa käyttää, jotta koodi ajautuu mahdollisimman nopeasti. Kokosin alle muutamia linkkejä, joissa vastaavankaltaisia havaintoja on käsitelty.

Noam Ross’s blog
Tal Galili’s blog
Måns Thulin’s blog
Ra project
pqR project

Ensimmäinen konferenssipäivä
Toisena päivänä oli tavanomaisia konferessipuheita ja posterisessio. Hadley Wickhamin kutsupuhe käsitteli paketteja, joita hän on kehittämässä erityisesti suuren datan muokkaukseen ja visualisointiin. Wickham on aiemmin kehittänyt mm. paketit ggplot2, reshape ja plyr, jotka ovat varsin käteviä pienten tai keskikokoisten aineistojen kanssa käytettynä, mutta ne tukehtuvat suurten aineistojen kanssa. Uudet paketit dplyr ja bigvis pyrkivät ratkaisemaan tämän ongelman. Niissä on myös ominaisuuksia, jotka mahdollistavat aineiston out-of-memory käsittelyn mm. visualisointia varten. Paketit eivät ole vielä valmiita, mutta kehitysversiot löytyvät github:sta (vaatii RTools-työkalujen asentamisen, sillä paketit pitää kääntää lokaalisti):

library(devtools)
install_github("dplyr")
install_github("bigvis")

Seuraava esimerkki näyttää, miten pakettien avulla tehdä suuren datan visualisointia nopeasti. Ensin generoidaan satunnaisdataa (x ja y), joka sitten ryhmitellään (bin() ja condence()), ja esitetään kuvassa (autoplot()).

library(ggplot2)
library(bigvis)
x <- sample(1:100, 1e6, replace=T)
y <- rnorm(1e6)
sd1 <- condense(bin(x, 10), z = y)
autoplot(sd1)

Toinen erityisen kiinnostava puhe käsitteli ffbase-pakettia. Se on laajennus ff-pakettiin, joka mahdollistaa suurten aineistojen käsittelyn out-of-memory -tyylin. Alkuperäisestä ff-paketista ei löydy esimerkiksi tilastollisten tunnuslukujen laskemiseen soveltuvia funktioita, mutta uudessa ffbase-paketissa ne on toteutettu. Laskenta perustuu siihen, että aineisto ladataan muistiin ja käsitellään pienissä osissa. Tällaisen funktion on toki voinut itsekin kirjoittaa, mutta ffbase helpottaa tällaisten perusoperaatioiden tekemistä, koska sen avulla välttää omien funktioiden rakentamisen.

Toinen konferenssipäivä
Bisnesanalyytikkasessiossa käsiteltiin mm. TIBCOn tuottamaan uutta, suljetun lähdekoodin R-versiota. Se perustuu TIBCOn pitkään kokemukseen S+:sta, ja väittivät sen olevan huomattavasti tavanomaista R:ää nopeampi mm. for-silmukoiden suorittamisessa. TIBCO enterprise runtime for R -ohjelmiston voi ladata TIBCOn community sitestä, ja evaluutiolisenssi on voimassa 90 päivää. Kannattanee tutustua siis.

Toisessa bisnesanalytiikkasessiossa puhuttiin runsaasti isojen aineistojen käsittelystä. Periaatteessa on kolme tapaa analysoida aineistoja: 1) aineisto mahtuu sellaisenaan tietokoneen muistiin, 2) aineisto on käsiteltävä palasissa, koska se ei kokonaisuudessaan mahdu muistiin, mutta yhden tietokoneen kovalevylle kylläkin ja 3) aineisto ei mahdu edes yhdelle tietokoneelle, joten sitä on käsiteltävä hajautetusti mm. rinnakkaislaskentaa käyttäen. Tilastotieteilijöiden käsitys isosta datasta vastaa ilmeisestikin jo määritelmää 2, mutta laskennallisten tieteiden edustajien mielestä vasta kohdan 3 mukainen aineisto täyttää ison datan määritelmän. Kohdan 2 tarpeisiin vastaavat esimerkiksi paketit ff, ffbase ja sqldf, kun taas kohdan 3 tarpeisiin tarvitaan esimerkiksi pbdBASE ja sitä tukevat paketit tai gridR. Olen aiemmin tapellut vuosikausia aina silloin tällöin mpiR-paketin kanssa, mutta pbd-perheen paketit yksinkertaisesti toimivat ja asentuvat kauniisti. Suosittelen!

Myöhäisiltapäivässä käsiteltiin vielä erilaisia raportointiratkaisuja, joilla analyysien tai mallien tuloksia voidaan helposti jakaa. Erityisesti shiny-paketti ja server vaikuttavat kiinnostavilta ratkaisuilta. Tällä hetkellä shiny server tarvitaan mallien jakamista ja ”käyttöliittymän” tekemistä varten, ja se asentuu vain Linux-palvelimille. Lähikuukausina on kuitenkin kuulemma suunnitelmissa saada shiny server pyörimään myös Windows-palvelimilla. Shinysta on lisätietoja RStudion sivuilla. Shiny-tutoriaalit opastavat kädestä pitäen, miten shiny apps:jä tehdään.

Esimerkiksi seuraava R-koodi avaa yhden shiny-esimerkiksi paikallisella koneella oletusselaimeen:

library(shiny)
runExample("03_reactivity")

Valitettavasti shiny ei toimi IE:n kanssa kunnolla yhteen, enkä saanut sitä toimimaan myöskään Operan, Ironin tai Firefoxin kanssa, mutta Google Chromessa esimerkki avautuu ja toimii mainiosti. Tällä shinyn piirteellä voi olla epäsuotuisia vaikutuksia esimerkiksi yrityskäyttöä ajatellen, sillä IE voi olla ainoa saatavilla oleva selain.

Kustannushyötyanalyysi
Oliko kokoukseen osallistumisesta hyötyä? Varmasti oli, sillä uusimmista R:n ominaisuuksista kuulee helpoimmin juuri kokouksessa. Ehdin muun muassa jo innostua shinyn käyttömahdollisuuksista, kunnes yhteensopivuusongelma IE:n kanssa nujersi sen ajatuksen. Töissä kun käytössä on vain IE.

Todettakoon, että osallistuin kokouksen ohjelmaan 22 tunnin ajalla (kahvi- ja ruokatunnit on tuosta jo poistettu). Kokonaismatka-aika oli yhteensä 114 tuntia, josta 31 tuntia kului matkustamiseen.

EDIT (2013-07-13): Revolution Analytics:in David Smithin yhteenveto kokouksesta tarjoaa lisänäkemyksiä.


Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *