Kysymys:
Paras tapa esitellä satunnainen metsä julkaisussa?
danielsbrewer
2010-09-03 18:50:52 UTC
view on stackexchange narkive permalink

Käytän satunnaista metsäalgoritmia kahden ryhmän vankana luokittelijana mikroseikkaustutkimuksessa, jossa on 1000s ominaisuuksia.

  • Mikä on paras tapa esittää satunnainen metsä niin, että on tarpeeksi tietoa sen tekemiseksi paperissa toistettavaksi?
  • Onko R: ssä plot-menetelmä todelliseen piirtämiseen puu, jos ominaisuuksia on pieni määrä?
  • Onko OOB-arvio virhesuhteesta paras tilastotiedot?
Ei ole yhtä puuta ... Mutta katso @Shane's-vastaus, kun yksi niistä piirretään havainnollistamistarkoituksessa.
Harkitsen ehdottomasti randomForest :: partialPlot, http://stats.stackexchange.com/questions/92150/r-what-do-i-see-in-partial-dependence-plots-of-gbm-and-randomforest/112603# 112603
voit kokeilla satunnaista metsän visualisointipakettini forestFloor - http://forestfloor.dk/
Kolme vastused:
#1
+50
Shane
2010-09-03 19:32:35 UTC
view on stackexchange narkive permalink

Mitä tulee sen uusittavuuteen, paras tapa on toimittaa toistettava tutkimus (ts. koodi ja data) paperin mukana. Aseta se saataville verkkosivustollesi tai isännöintisivustolle (kuten github).

Visualisoinnin osalta Leo Breiman on tehnyt mielenkiintoista työtä tässä (katso erityisesti hänen kotisivunsa). grafiikkaa käsittelevä osio).

Mutta jos käytät R: tä, niin randomForest -paketissa on hyödyllisiä toimintoja:

  data (mtcars) mtcars.rf <- randomForest (mpg ~., data = mtcars, ntree = 1000, keep.forest = FALSE, tärkeys = TOSI) juoni (mtcars.rf, log = "y") varImpPlot (mtcars.rf)  

Ja

  set.seed (1) data (iris) iris.rf <- randomForest (laji ~., iiris, proximity = TRUE, keep.forest = FALSE) MDSplot (iris.rf, iris $ Species)  

En tiedä yksinkertaista tapaa piirtää puu todella, mutta voit käyttää getTree -toiminto hakemaan puu ja piirtämään sen erikseen.

  getTree (randomForest (iris [, - 5], iris [, 5], ntree = 10) , 3, labelVar = TOSI)  

Strobl / Zeileis -esityksessä "Miksi ja miten satunnaisia ​​metsämuuttujan tärkeysmittauksia käytetään (ja miten sinun ei pitäisi)" on esimerkkejä puista, jotka on täytynyt tuottaa tällä tavalla. Tässä puumalleja koskevassa blogiviestissä on hienoja esimerkkejä CART-puupiirroksista, joita voit käyttää esimerkiksi.

Kuten @chl kommentoi, yksittäinen puu ei ole erityisen mielekäs tässä niin lyhyessä määrin, ettei sitä käytetä selittämään mitä satunnainen metsä on, en sisällyttäisi sitä paperiin

Pieni tontteja koskeva laajennus: `plot.randomForest` näyttää kuinka OOB-virhe ja luokan OOB-virhe kehittyivät puiden määrän kasvaessa; `varImpPlot` näyttää attribuuttien tärkeysmitat ylimmille attribuuteille ja` MDSplot` kaikille objekteille, jotka on piirretty RF-objektien läheisyysmittauksen 2D-projektioon.
+1 MDSplot () -toiminnon viittaamisesta. Minun on myönnettävä, että käytän usein radiotaajuuksia keinona korostaa yksilöiden klustereita (perustuen radiotaajuuden läheisyysmittaukseen) eikä valita parhaita ominaisuuksia. Kliinikot lukevat usein paljon helposti tällaisia ​​kaavioita kuin pistepiste var. merkitys...
#2
+18
user88
2010-09-04 00:22:57 UTC
view on stackexchange narkive permalink
  1. Kuten Shane kirjoitti; tee siitä toistettavissa oleva tutkimus + sisällytä satunnaisia ​​siemeniä, koska RF on stokastinen.
  2. Ensinnäkin RF: n muodostavien yksittäisten puiden piirtäminen on hölynpölyä; tämä on yhtyeiden luokittelija, sillä on järkeä vain kokonaisuutena. Mutta koko metsän piirtäminen on hölynpölyä - se on mustan laatikon luokittelija, joten sitä ei ole tarkoitus selittää tietoja sen rakenteella, vaan toistaa alkuperäistä prosessia. Tee sen sijaan joitain kaavioita, joita Shane ehdotti.
  3. Käytännössä OOB on erittäin hyvä virhearviointi; tämä ei kuitenkaan ole yleisesti hyväksytty tosiasia, joten julkaisemista varten on parempi tehdä myös CV sen vahvistamiseksi.
Joten @mbq, kun teet ansioluettelon, on oikein tehdä ensin satunnainen metsä, jossa kaikki valitut näytteet; tekemällä se kahdesti kerran kaikkien kanssa ja toiseksi 10 tärkeimmän muuttujan kanssa (jotka voidaan lainata paperissa). Suorita sitten yksi jätetty ristivalidointi (valitsemalla 10 parasta geeniä jokaista yritystä kohti) ja lainaat siitä CV-virheen?
@danielsbrewer Tein tämän jollakin muulla tavalla (kiinnittäen enemmän huomiota ominaisuuksien valintaan), mutta tämä on oikein; silti se on pikemminkin radiotaajuuksien ominaisuuksien vertailuanalyysin aihe kuin parhaiden markkereiden valitseminen biologista ongelmaa varten.
@mbq, valitettavasti jatkaakseni, mutta olen hyvin uusi koneen kaltevuusluokituksen alueella. Joten jos haluaisit valita parhaimmat erottavat merkitsimet omalle ongelmalleni, kuinka menisit sen eteen? ja minkä virheen ilmoittaisit? Arvostan kaikkea panosta.
Suurin ongelma on, että kahta mallia (malli = oppimismenetelmä + ominaisuuksien valintamenetelmä) on todella vaikea verrata, mutta yksinkertaisuuden vuoksi voit vain olettaa jotain (kuten käytän RF: ää ja valitsen 10 parasta ominaisuutta) ja myöntää, että tiedät että tämä voi olla optimaalista, mutta olet samaa mieltä, kun olet esimerkiksi tyytyväinen tarkkuuteen. Tällöin ainoa ongelma on poistaa attribuuttien valinnan puolueellisuus. tbc.
Joten tekisin yksinkertaisen pussituksen: luot 10 (tai 30, jos sinulla on hyvä tietokone) satunnaisia ​​alinäytteitä esineistä (sanotaan satunnaisella poiminnalla korvaavilla), koulennetaan RF jokaiselle, saat sen tärkeyden ja palautetaan jokaisen sijoitus määritteen keskiarvo kaikilla toistoilla (paras ominaisuus saa arvon 1, toiseksi paras 2 ja niin edelleen; se voidaan laskea keskiarvoksi, joten määritteellä, joka oli 12 kertaa 1. ja 18 kertaa 2., on sijoitus 1,6), valitse lopuksi 10 parhaalla sijalla ja soita merkkisi. Käytä sitten CV: tä (LOO, 10-kertainen tai mieluiten satunnaisotanta) saadaksesi RF-virhearvioinnin markkereidesi avulla. tbc.
Ilmoita rivejä (toivottavasti niiden pitäisi olla melko lähellä 1,2,3 ...), CV-virhe ja sen poikkeama (lasketaan vain jokaisen CV-kierroksen tulosten keskihajonta) ja OOB-virhe (todennäköisesti sama kuin CV-virhe). VASTUUVAPAUSLAUSEKE: Tämä ei ole tapa valita optimaalinen määrä määritteitä - tarvitset siihen RFE: n ja sisäkkäisen CV: n. VASTUUVAPAUSLAUSEKE2: En ole työskennellyt tällaisten tietojen kanssa, joten en takaa, että erotuomarisi ovat tyytyväisiä siihen (vaikka uskon heidän pitäisi).
#3
+13
Patrick Caldon
2012-12-05 11:03:49 UTC
view on stackexchange narkive permalink

Pidä mielessä muiden vastausten varoitukset siitä, että juoni on välttämättä merkityksellinen. Mutta jos haluat juoni havainnollistamiseen / pedagogisiin tarkoituksiin, seuraava R-katkelma voi olla hyödyllinen. Ei ole vaikea lisätä "jakopistettä" reunatekstiin tarvittaessa.

  to.dendrogram <- funktio (dfrep, rownum = 1, height.increment = 0.1) {if (dfrep [rownum, 'status'] == -1) {rval <- list () attr (rval, "jäsenet") <- 1 attr (rval, "korkeus") <- 0.0 attr (rval, "label") < - dfrep [rownum, 'prediction'] attr (rval, "leaf") <- TRUE} else {## huomaa muutoksen "to.dendrogram" eikä "to.dendogram" vasemmalle <- to.dendrogram (dfrep, dfrep [rownum, 'vasen tytär'], korkeus.lisäys) oikea <- to.dendrogram (dfrep, dfrep [rownum, 'oikea tytär'], korkeus.kasvu) rval <- luettelo (vasen, oikea) attr (rval, " jäsenet ") <- attr (vasen," jäsenet ") + attr (oikea," jäsenet ") attr (rval," korkeus ") <- max (attr (vasen," korkeus "), attr (oikea," korkeus ") )) + height.increment attr (rval, "lehti") <- FALSE attr (rval, "edgetext") <- dfrep [rownum, 'split var'] #Lisää jakopiste i n Dendrogram #attr (rval, "edgetext") <- liitä (dfrep [rownum, 'split var'], "\ n<", pyöreä (dfrep [rownum, 'split point'], numerot = 2), "= > ", sep =" ")} luokka (rval) <-" dendrogram "return (rval)} mod <- randomForest (Laji ~., data = iris) puu <- getTree (mod, 1, labelVar = TOSI) d < - to.dendrogram (puu) str (d) juoni (d, keskusta = TOSI, leaflab = 'ei mitään', edgePar = lista (t.cex = 1, p.col = NA, p.lty = 0))  koodi> 
Koodi tuottaa erittäin hyvän puupiirroksen.Arvoja ei kuitenkaan näytetä.Todennäköisesti teksti () on lisättävä viimeisen (juoni) lauseen jälkeen.


Tämä Q & A käännettiin automaattisesti englanniksi.Alkuperäinen sisältö on saatavilla stackexchange-palvelussa, jota kiitämme cc by-sa 2.0-lisenssistä, jolla sitä jaetaan.
Loading...