Küsimus:
Parim viis juhusliku metsa esitamiseks väljaandes?
danielsbrewer
2010-09-03 18:50:52 UTC
view on stackexchange narkive permalink

Kasutan juhuslikku metsaalgoritmi kahe rühma kindla klassifikaatorina 1000-tunniste funktsioonidega mikrorajooniuuringus.

  • Mis on parim viis juhusliku metsa esitamiseks nii, et oleks piisavalt teavet, et muuta see paberil reprodutseeritavaks?
  • Kas R-is on olemas joonistamismeetod reaalseks joonistamiseks puu, kui on vähe funktsioone?
  • Kas OOB hinnang veamäära kohta on parim statistika, mida tsiteerida?
Pole ühtegi puud ... Kuid vaadake @Shane's vastust, kui üks neist on illustreeriv.
Kindlasti tasub kaaluda randomForest :: particPlot, http://stats.stackexchange.com/questions/92150/r-what-do-i-see-in-partial-dependence-plots-of-gbm-and-randomforest/112603# 112603
võite proovida minu juhuslikku metsa visualiseerimise paketti forestFloor - http://forestfloor.dk/
Kolm vastused:
#1
+50
Shane
2010-09-03 19:32:35 UTC
view on stackexchange narkive permalink

Selle reprodutseeritavaks muutmise osas on parim viis pakkuda koos paberiga reprodutseeritavaid uuringuid (st koodi ja andmeid). Tehke see kättesaadavaks oma veebisaidil või hostimissaidil (nt github).

Visualiseerimise osas on Leo Breiman teinud selles osas huvitavat tööd (vt eriti tema kodulehte). graafika jaotis).

Aga kui kasutate R-i, on paketil randomForest mõned kasulikud funktsioonid:

  andmed (mtcars) mtcars.rf <- randomForest (mpg ~., data = mtcars, ntree = 1000, keep.forest = FALSE, tähtsus = TRUE) graafik (mtcars.rf, log = "y") varImpPlot (mtcars.rf)  

Ja

  set.seed (1) andmed (iiris) iris.rf <- randomForest (liigid ~., iiris, lähedus = TRUE, keep.forest = FALSE) MDSplot (iris.rf, iris $ Species)  

Ma pole teadlik lihtsast võimalusest puu reaalseks joonistamiseks, kuid võite seda kasutada funktsioon getTree puu ja selle eraldi joonistamiseks.

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

Strobli / Zeileise ettekanne teemal "Miks ja kuidas kasutada juhuslikke metsamuutujate olulisuse mõõtmeid (ja kuidas ei tohiks)" sisaldab näiteid puudest, mis peavad olema sel viisil toodetud. Sellel puumudelite ajaveebipostitusel on mõned toredad näited CART-i puitgraafikutest, mida saate näiteks kasutada.

Nagu @chl kommenteeris, pole üksik puu selles eriti tähenduslik kontekstis, nii vähe kui ma seda juhusliku metsa selgitamiseks kasutasin, ei lisaks ma seda artiklisse

Väike laiendus kruntide kohta: `plot.randomForest 'näitab, kuidas OOB-viga ja oma klassi OOB-viga arenesid puude arvu suurenemisega; `varImpPlot` näitab atribuutide olulisuse mõõtmeid ülemise atribuudi jaoks ja` MDSplot` kõiki objekte, mis on joonistatud raadiosageduslike objektide läheduse mõõtmise 2D projektsioonile.
+1 funktsiooni MDSplot () tsiteerimise eest. Pean tunnistama, et kasutan RF-sid sageli parimate omaduste valimise asemel üksikisikute klastrite esiletoomiseks (lähtuvalt raadiosageduse lähedusmõõdust). Kliinikud loevad selliseid jooniseid sageli palju hõlpsamalt kui varplotid. tähtsus ...
#2
+18
user88
2010-09-04 00:22:57 UTC
view on stackexchange narkive permalink
  1. Nagu Shane kirjutas; muutke see uuritavaks + lisage juhuslikke seemneid, sest RF on stohhastiline.
  2. Esiteks on üksikute RF-i moodustavate puude joonistamine jama; see on ansambli klassifikaator, see on mõttekas ainult tervikuna. Kuid isegi kogu metsa kavandamine on jama - see on musta kasti klassifikaator, mistõttu pole mõeldud andmeid selle struktuuriga selgitada, pigem korrata algset protsessi. Selle asemel tehke mõned Shane'i soovitatud proovitükid.
  3. Praktikas on OOB väga hea vea ligikaudne kirjeldus; ometi pole see üldtunnustatud fakt, nii et avaldamiseks on parem selle kinnitamiseks teha ka CV.
Niisiis, kas CV-d tehes on @mbq kehtiv teha kõigepealt juhuslik mets koos kõigi valitud proovidega; tehes seda kaks korda üks kord kõigiga ja teiseks 10 parema muutujaga (mida saab tsiteerida töös). Seejärel tehke ristvalideerimine üks-ühele välja (valides iga proovimise jaoks 10 parimat geeni) ja tsiteerige sellest CV viga?
@danielsbrewer Teeksin seda mõnel muul viisil (pöörates rohkem tähelepanu funktsioonide valikule), kuid see on õige; ometi on see pigem RF funktsioonide valiku võrdlusuuringute teema kui bioloogilise probleemi jaoks parimate markerite valimine.
@mbq, vabandust jätkata, aga ma olen masina kallutamise klassifikatsioonialal väga uus. Niisiis, kui soovite valida just minu jaoks kõige paremini eristuvad markerid, kuidas te sellega tegeleksite? ja mis veast teataksite? Hindan kogu panust.
Peamine probleem on see, et kahte mudelit (mudel = õppemeetod + funktsioonide valimise meetod) on tõesti raske võrrelda, kuid lihtsuse huvides võite lihtsalt midagi eeldada (näiteks kasutan RF-i ja valin kümme parimat atribuuti) ja tunnistada, et teate et see võib olla mitteoptimaalne, kuid nõustute sellega, kui olete näiteks täpsusega rahul. Sel juhul on teie ainus probleem atribuutide valiku kallutatuse eemaldamine. tbc.
Niisiis, ma teeksin lihtsa koti: loote 10 (või 30, kui teil on hea arvuti) juhuslikke objektide alamproove (ütleme, et valime juhuslikult ja asendame), koolitame RF-sid mõlemal, saate selle tähtsuse ja tagastate igaühe auastme atribuut kõigi korduste keskmisena (parim atribuut saab 1., 2. paremus ja nii edasi; selle saab keskmistada, nii et atribuudil, mis oli 12 korda 1. ja 18 korda 2., on auaste 1.6), vali lõpuks 10 parimate ridadega ja kutsu need oma markerid. Seejärel kasutage CV-d (LOO, 10-kordne või eelistatavalt juhuslik proovivõtt), et saada oma markerite abil RF-i vea ligikaudne hinnang. tbc.
Esitage auastmed (loodetavasti peaksid need olema üsna lähedal 1,2,3 ...), CV viga koos selle hälbega (loendage lihtsalt iga CV vooru tulemuste standardhälve) ja OOB viga (tõenäoliselt identne CV veaga). VASTUVÕTU: See ei ole meetod optimaalse atribuutide arvu valimiseks - selleks vajate RFE-d ja sisestatud CV-d. VASTUVÕTU2: Ma pole selliste andmetega töötanud, seega ei taga ma, et teie kohtunikud oleksid nendega rahul (kuigi usun, et peaksidki).
#3
+13
Patrick Caldon
2012-12-05 11:03:49 UTC
view on stackexchange narkive permalink

Pidage meeles teiste vastuste hoiatusi selle kohta, et süžee on tingimata mõttekas. Kuid kui soovite süžeed illustreerivatel / pedagoogilistel eesmärkidel, võib järgmine R-i fragment olla kasulik. Kui vajate, pole ääreteksti "jagatud punkti" lisamine keeruline.

  to.dendrogram <- funktsioon (dfrep, rownum = 1, height.increment = 0.1) {if (dfrep [rownum, 'status'] == -1) {rval <- list () attr (rval, "liikmed") <- 1 attr (rval, "kõrgus") <- 0,0 attr (rval, "silt") < - dfrep [rownum, 'prediction'] attr (rval, "leaf") <- TRUE} else {## pange tähele muutust "to.dendrogram" ja mitte "to.dendogram" vasakule <- to.dendrogram (dfrep, dfrep [rownum, 'vasak tütar'], kõrgus.kasv) paremal <- kuni.dendrogramm (dfrep, dfrep [rownum, 'parem tütar'], kõrgus.kasv) rval <- loend (vasakul, paremal) attr (rval, " liikmed ") <- attr (vasakul," liikmed ") + attr (paremal," liikmed ") attr (rval," kõrgus ") <- max (attr (vasakul," kõrgus "), attr (paremal," kõrgus ") )) + height.increment attr (rval, "leaf") <- FALSE attr (rval, "edgetext") <- dfrep [rownum, 'split var'] #Punkti i lisamiseks n Dendrogramm #attr (rval, "edgetext") <- kleebi (dfrep [rownum, 'split var'], "\ n<", ümmargune (dfrep [rownum, 'split point'], numbrit = 2), "= > ", sep =" ")} klass (rval) <-" dendrogram "return (rval)} mod <- randomForest (Liik ~., andmed = iiris) puu <- getTree (mod, 1, labelVar = TRUE) d < - to.dendrogrammile (puu) str (d) joonis (d, keskpunkt = TÕENE, leaflab = 'puudub', edgePar = nimekiri (t.cex = 1, p.col = NA, p.lty = 0))  kood> 
Kood annab väga hea puidutüki.Kuid väärtusi ei kuvata.Tõenäoliselt tuleb pärast viimast (süžee) lauset lisada funktsioon text ().


See küsimus ja vastus tõlgiti automaatselt inglise keelest.Algne sisu on saadaval stackexchange-is, mida täname cc by-sa 2.0-litsentsi eest, mille all seda levitatakse.
Loading...