Oletko kuullut jossain yhteydessä menetelmästä satunnainen metsä (eng. Random Forest)? Jos olet ollut tekemisissä allekirjoittaneen kanssa, et ole voinut välttyä termin kuulemisesta edes kahvipöydässä tai marketin kassajonossa. Mikäli olet kyennyt välttymään termin kuulemiselta, nyt on viimeistään aika ottaa selvää mitä ihmettä tuo ’Satumetsä’ tarkoittaa, mitä sillä tehdään ja miksi siitä on täytynyt puhua kassajonossakin.
Nykyisin analytiikassa tunnettu Satunnaisen metsän algoritmi on Leo Breimanin ja Adele Cutlerin käsialaa. Menetelmänä Satunnainen metsä yhdistää bootstrap aggregointia (eng. bagging) ja satunnaista muuttujien valintaa. Termi ’satunnainen’ viittaa satunnaiseen päätöspuuhun ja ’metsä’…no…kuten arvata saattaa, joukkoon puita. Kyseessä on luokitteluongelmiin hyvin pureva menetelmä.
Satunnaisen metsän algoritmi on pääpiirteittäin seuraava:
- Suoritetaan bootstrap-otos (palauttaen) opetusaineistosta, yksittäisen puun rakentamista varten.
- Satunnainen päätöspuu rakennetaan solmu solmulta valitsemalla satunnaisesti M:stä muuttujasta n muuttujaa (n<M, n käyttäjän asetettavissa) ja muodostamalla paras mahdollinen jako.
- Satunnaiset puut annetaan kasvaa täyteen mittaansa (no pruning!).
- Kasvatetaan I puuta (I käyttäjän asetettavissa).
- Kun I puuta on kasvatettu, luokitellaan havaintorivi siihen luokkaan mikä on saanut eniten ”ääniä” (eng. Most voted class).
Bootstrap-otos suoritetaan joka iterointikierroksella palauttaen, jonka johdosta noin e^-1 havaintoriviä jää otoksen ulkopuolelle. Ulkopuolella olevien havaintojen perusteella saadaan laskettua ennustevirhe, joka konvergoi kohti oikeaa luokitteluvirhettä kun puiden määrää satunnaisessa metsässä lisätään. Tämän johdosta satunnaiselle metsälle ei (välttämättä) tarvitse suorittaa muuta validointia ennustetarkkuuden arvioimiseen. Kuinka asettaa satunnaisen metsän hyperparametrit n ja I? Hyvänä nyrkkisääntönä voi pitää n=roundup(sqrt(M)) ja I on ”mahdollisimman suuri” (laskentateho) yleensä 100 on riittävän suuri.
Eikä tässä vielä kaikki, satunnaisen puiden kasvattamisen yhteydessä algoritmi pystyy laskemaan muuttujien merkitsevyyden (eng. permutation importance). Satunnaisen metsän voi näin ollen kasvattaa kerran käyttämällä kaikkia selittäviä muuttujia (M kpl) ja kasvattaa uusi metsä vähentämällä muuttujien määrä M muuttujien merkitsevyyksien perusteella.
Listataanpa vielä loppuun muutamia satunnaisen metsän vahvuuksia ja heikkouksia.
Vahvuudet:
- Suoriutuu melko suuristakin aineistoista.
- Pystyy käsittelemään lukuisia selittäviä muuttujia ilman muuttujan valintaa.
- Pystyy käsittelemään puuttuvia havaintoja.
- Laskee arvion ennustevirheelle ja muuttujien merkitsevyydet.
- Toimii melko hyvin myös epätasapainoisille aineistoille (vrt. churn).
- Hyperparametrien n,I asettaminen/optimointi ei aiheuta harmaita hiuksia.
- Mahdollista soveltaa myös regressiotyyppisiin ongelmiin (jatkuva vaste).
Heikkoudet:
- Satunnaisen metsän heikkoutena voidaan pitää puolittaista black-box-rakennetta.
- Ylisovittumisen vaara (no pruning).
Sovelluskohteita:
- Churn-analyysit, vaste binomiaalinen.
- Ristiinmyynti, vaste nominaalinen.
- Myyntilukujen ennusteet, vaste jatkuva.
- Muuttujien merkitsevyyksien laskeminen, selittäviä muuttujia 200+ kpl.
- Referenssinä muille luokittelumenetelmille.
Satunnainen metsä on implementoitu kaikkiin itseään kunnioittaviin analytiikkasoftiin, mainittakoon näistä R-ohjelma, Weka, SAS EM, sekä RapidMiner. Satunnaisen metsän implementointi ilman merkitsevyyksien ja ennustevirheen laskentaa onnistuu helposti myös manuaalisesti, pohjimmiltaan on kyse vain boostrap-aggregoinnista ja satunnaisista puista.