Več

Računanje nenadzorovane naključne klasifikacije gozdov v R?

Računanje nenadzorovane naključne klasifikacije gozdov v R?


Želim izračunati nenadzorovano naključno klasifikacijo gozdov iz rasterskega sklada v R. Rasterni sklad predstavlja enak obseg v različnih spektralnih pasovih, zato želim pridobiti nenadzorovano klasifikacijo sklada. Imam težave s kodo, saj so moji podatki zelo veliki.

Ali je v redu preprosto pretvoriti sklad v podatkovni okvir, da lahko tako izvajamo naključni gozdni algoritem?

stack_median <- stack (b1_mosaic_median, b2_mosaic_median, b3_mosaic_median, b4_mosaic_median, b5_mosaic_median, b7_mosaic_median) stack_median_df <- as.data.frame (stack_median)

Tukaj so podatki v obliki datoteke CSV (https://www.dropbox.com/s/gkaryusnet46f0i/stack_median_df.csv?dl=0) - in jih lahko preberete prek:

stack_median_df <-read.csv (datoteka = "stack_median_df.csv") stack_median_df <-stack_median_df [, - 1] stack_median_df_na <- na.omit (stack_median_df)

Moj naslednji korak bi bila nenadzorovana razvrstitev:

mediana_rf <- randomForest (stack_median_df_na, pomembnost = TRUE, bližina = FALSE, ntree = 500, vrsta = brez nadzora, gozd = NULL)

Zaradi mojega velikega nabora podatkov bližine ni mogoče izračunati (potrebovali bi približno 6000 GB).

Ali veste, kako si lahko ogledate klasifikacijo?

Kotnapovedi (mediana_rf)inploskev (mediana_rf)ne vrnite ničesar.


Naključni gozdovi v neoznačenem (nenadzorovanem) načinu ne vrnejo eksplicitnih razredov, temveč nekaj podobnega pomanjšani večvariatni razdalji, ki temelji na bližini vozlišč. Brez matrice bližine nimate uporabnega neoznačenega modela. In ja, pri velikih težavah, tudi ob uporabi redke matrike, že zaradi same narave pristopa matrika bližine postane ogromna. To je lahko razlog, da niste videli objavljenih pristopov z uporabo naključnih gozdov pri nenadzorovanem daljinskem zaznavanju.

Na podlagi bližine je pristop, ki sem ga videl, za izpeljavo / preizkušanje grozdov uporaba spremenjenega K-sredstva na matriki bližine. Namesto tega boste morda lahko funkcijo imputiranja z uporabo funkcije naključnih gozdov prevarali v paketu yaImpute, da izvedete matrično imputacijo, ki bi vrnila nekaj analogov najbližjemu sosedu (kNN), ki bi jih lahko nato dodelili grozdom na podlagi podobnosti matriko.

Nič ni tako enostavno kot tisto, o čemer razmišljate, in priporočam vam, da raziščete ta pristop, preden vskočite z obema nogama.

**** Uredi 14.12.2018 Pred nekaj različicami sem paketu rfUtilities dodal nenadzorovano funkcijo naključnih gozdov. Ne bi ga priporočal pri velikih podatkih, kot so rastri, vendar je koristen način združevanja. Tu je preprost primer.

knjižnica (rfUtilities) knjižnica (sp) podatki (meuse) meuse <- na.omit (meuse) n = 6 clust.meuse <- rf.unsu nadzorovani (meuse, n = n, bližina = TRUE, silhuete = TRUE) (meuse $ k <- clust.meuse $ k) mds <- stats ::: cmdscale (clust.meuse $ distance, eig = TRUE, k = n) colnames (mds $ points) <- paste ("Dim", 1: n) mds.col <- ifelse (clust.meuse $ k == 1, rainbow (6) [1], ifelse (clust.meuse $ k == 2, rainbow (6) [2], ifelse (clust.meuse $ k == 3, mavrica (6) [3], ifelse (clust.meuse $ k == 4, mavrica (6) [4], ifelse (clust.meuse $ k == 5, mavrica (6) [5], ifelse (clust.meuse $ k == 6, rainbow (6) [6], NA))))))) plot (mds $ točk [, 1: 2], col = mds.col, pch = 20) parov ( mds $ points, col = mds.col, pch = 20) koordinate (meuse) <- ~ x + y plot (meuse, col = mds.col, pch = 19) box ()

Grozdenje je splošen izraz, ki pomeni primer, ko bodo podatkovne točke razdeljene v razrede brez kakršnih koli informacij o resničnih odločitvah. Torej ne glede na to, kakšen algoritem uporabljate, bo razvrščanje v skupine, če gre za nenadzorovano razvrstitev.

Seveda obstaja veliko različnih pristopov, odvisno od primera, podatkov, težave itd. Če bi lahko navedli več konteksta glede vaše natančne naloge, bi lahko navedel nekaj pristopov.

Kratek odgovor je NE, grozdenje ni edino področje nenadzorovanega učenja. Nenadzorovano učenje je veliko širše kot le združevanje v skupine. Grozdenje je le podpolje (ali vrste) nenadzorovanega učenja.

Majhen popravek: KNN ni metoda združevanja v skupine, je klasifikacijski algoritem. Verjetno ste mislili reči k-pomeni.

Bistvo nenadzorovanega učenja so v osnovi podatki o učenju brez temeljnih oznak resnice. Cilj nenadzorovanega učenja je torej poiskati predstavljene podatke. Uporabe nenadzorovanega učenja se zelo razlikujejo, čeprav je akademsko res, da je področje za raziskovalce manj privlačno zaradi zapletenosti in prizadevanj za ustvarjanje novih stvari in / ali izboljšanje.

Zmanjšanje dimenzije lahko razmislimo pri nenadzorovanem učenju, saj želimo najti dober prikaz podatkov v nižjih dimenzijah. Uporabne so tudi za vizualizacijo visokorazsežnih podatkov. Vrsta teh aplikacij so PCA, SNE, tSNE, Isomap itd.

Metode grozdenja so tudi vrsta nenadzorovanega učenja, kjer želite razvrstiti in označiti vrednosti na podlagi neke mere / razdalje. Nekatere aplikacije so lahko K-sredstva, hierarhično združevanje v skupine itd.

Generativni modeli, generativni modeli modelirajo pogojno verjetnost P (X | Y = y). Raziskave na tem področju so se razcvetele od objave GAN (glej članek). GAN-i se lahko naučijo distribucije podatkov, ne da bi jih izrecno videli. Metode so različne, kjer GAN, VAE, Gaussova mešanica, LDA, skriti Markov model.


Argumenti

Ta paket vsebuje veliko uporabnih funkcij, uporabniki pa morajo za podrobnosti v celoti prebrati datoteko s pomočjo. Vendar na kratko omenjamo več ključnih funkcij, ki lahko olajšajo navigacijo in razumevanje postavitve paketa.

To je glavna vstopna točka v paket. Goji naključen gozd z uporabo podatkov o usposabljanju, ki jih posredujejo uporabniki. Nastali objekt označujemo kot objekt za rast RF-SRC. Formalno ima nastali objekt razred (rfsrc, raste).

Hitra izvedba rfsrc z uporabo podvzorčenja.

Univariatni in multivariatni kvantilno regresijski gozd za usposabljanje in testiranje. Na voljo so različne metode, vključno z algoritmom Greenwald-Khanna (2001), ki je zaradi velike učinkovitosti pomnilnika še posebej primeren za velike podatke.

Uporablja se za napovedovanje. Predvidene vrednosti dobimo s spuščanjem uporabnikovih testnih podatkov po gojitvenem gozdu. Nastali objekt ima razred (rfsrc, napovedi).

Gručiranje nenadzorovanih podatkov z uporabo SID (Razporejeni podatki o interakciji). Izvaja tudi umetni dvorazredni pristop Breimana (2003).

Uporablja se za izbiro spremenljivk:

vimp izračuna spremenljivko imporance (VIMP) iz RF-SRC objekta za rast / napoved s hrupanjem spremenljivke (na primer s permutacijo). Upoštevajte, da lahko klici za rast / predvidevanje vedno neposredno zahtevajo VIMP.

subsample izračuna stopnje zaupanja VIMP s pomočjo podvzorčenja.

holdout.vimp meri pomembnost spremenljivke, ko je odstranjena iz modela.

q-klasifikacija in G-srednja vrednost VIMP za neuravnotežene podatke razreda.

Način hitre imputacije za RF-SRC. Tako rfsrc kot predict.rfsrc lahko vstavita manjkajoče podatke. Vendar za uporabnike, katerih edini interes je vnašanje podatkov, ta funkcija zagotavlja učinkovit in hiter vmesnik za to.

Uporablja se za pridobivanje delnih učinkov spremenljivke ali spremenljivk na ansamble.


Številke:

Prispevek Shi et al. (http://labs.genetics.ucla.edu/horvath/RFclustering/RFclustering/RandomForestHorvath.pdf) opisuje dve tehniki vzorčenja- (1) naključno vzorčenje iz produkta empiričnih obrobnih porazdelitev spremenljivk podatkov in (2) naključno vzorčenje (enakomerna porazdelitev) iz hiper pravokotnika, ki vsebuje podatke.

Shi et al. je poročal, da se "različnost RF lahko precej razlikuje glede na določeno izvedbo sintetičnih podatkov". Tako gojijo številne gozdove in jih kombinirajo, da dobijo končni rezultat.


2 odgovora 2

randomForest bo privzeto določil klasifikacijo ali regresijo, odvisno od razreda spremenljivke. Torej, če tipkate

boste videli, da je to dejavnik. 'Oznaka' v vaši kodi je najverjetneje številčna, zato randomForest privzeto prilagodi regresiji. Za klasifikacijo ga boste morali pretvoriti v faktor. Lahko ga pretvorite ali preberete kot faktor tako, da nastavite colClasses v read.table.

Najpogosteje je to zato, ker niste rekli R, da je oznaka kategorična spremenljivka. Funkcija read.csv poskuša uganiti, katero vrsto uporabiti za vsak stolpec in če je videti kot številski stolpec, bo to tudi uporabila. S funkcijo str lahko preverite, kako R shranjuje spremenljivko. Uporabite lahko read.csv, da spremenljivko bere kot faktor (ali številsko ali.) Z uporabo argumenta colClasses. Ali pa lahko oznake spremenite v faktor, ko ga preberete v funkciji faktorja.

V nasprotnem primeru potrebujemo več informacij o vaših podatkih. Rezultati zagona str na vašem podatkovnem okviru bi bili verjetno koristni.


Napovedovanje

Predvidene vrednosti dobimo s spuščanjem testnih podatkov po gozdu po izdelavi modela. Skupna stopnja napak se vrne, če testni podatki vsebujejo y-rezultat. Če niso na voljo nobeni preskusni podatki, se uporabijo izvirni podatki o vadbi in koda se vrne v obnovitev gozda, pripadajoče statistike terminalnih vozlišč in ansamblov. To je koristno, ker uporabniku omogoča, da iz gozda pridobi izhode, ki niso bili zahtevani med izdelavo modela. Slika [Meja odločitve o gozdu] je primer, kako lahko napoved uporabimo za prikaz meje odločitve gozda, naložene x spremenljivkam. Sledijo primeri usposabljanja, testiranja in restavriranja:

Rezultat = "test"

Če je rezultat = "test", se podatki o vadbi ne uporabljajo za izračun statistike terminalnih vozlišč. Namesto tega se TNS preračunajo z uporabo rezultatov y iz testnega niza. Tako dobimo spremenjen napovedovalec, v katerem invariantna topologija gozda temelji na podatkih o usposabljanju, kjer pa ansambli in predvidene vrednosti temeljijo na testnih podatkih. Statistični podatki o terminalskem vozlišču, ansambli in stopnje napak se izračunajo tako, da preskusne podatke zaženejo z uporabo OOB posameznikov, da se zagotovijo nepristranske ocene.

Razmislite o gozdu, ki je bil prej opisan v [Meja odločitve o gozdu], in z njim povezanim gozdnim ansamblom za eno preskusno točko pri izvoru. Ti izvirni podatki o vadbi in ansambel so prikazani v zgornjem levem in zgornjem desnem kotu [result = "test"]. V spodnjem levem delu slike so prikazani novi preskusni podatki, ki nastanejo z zmanjšanjem polmerov modrega in rumenega razreda. Izvor vsebuje le dve podatkovni točki, in sicer eno rdečo in zeleno točko. Z uporabo novih testnih podatkov za zapolnitev končnih vozlišč nastane ansambel, v katerem manjkajo modri in rumeni razredi. Ta ansambel je prikazan v spodnjem desnem kotu slike.


rezultat = "test"

Funkcija za ustvarjanje krogel je podana v razdelku [Dodatna koda], višja koda, uporabljena za pripravo slike [result = "test"], pa sledi:

Obrezovanje

Obstaja več načinov, kako omejiti rast dreves v modelu. Najbolj očitna sta parametra nodedepth in nodesize, obravnavana v poglavju [Node Depth and Node Size. Zmanjšanje vozlišča ali povečanje vozlišča bo povzročilo plitvejša drevesa. Ko je gozd ustvarjen, lahko uporabnik obreže drevesa nazaj s parametrom ptn.count. Ta parameter predstavlja število psevdo-terminalnih vozlišč. Omogoča nam, da določimo želeno število psevdo-terminalnih vozlišč po vzgoji drevesa. To samo po sebi ni koristno za analizo naključnih gozdov, lahko pa je koristno v drugih aplikacijah. Drevesa so prilagodljivi in ​​prilagodljivi neparametrični ocenjevalci in kot taka predstavljajo idealne šibke učence za izvajanje povečanja gradienta [Friedman, 2001]. Okrepljena drevesa za regresijo in klasifikacijo, kjer so potrebna točno J-terminalna vozlišča (za katero koli celoštevilčno vrednost J), je enostavno doseči s pomočjo parametra ptn.count. Ta posebna aplikacija paketa randomForestSRC je vključena v paket boostmtree na CRAN [Ishwaran in Kogalur, 2016]. Obrezovanje dosežemo z brisanjem končnih vozlišč z največje globine nazaj proti korenu, dokler ne dosežemo želenega števila psevdo-terminalnih vozlišč. Hčerinska vozlišča se izbrišejo v parih. Posledica tega je, da nadrejeno vozlišče postane psevdo-terminalno vozlišče, potem ko so hčerinska terminalna vozlišča izbrisana na trenutni največji globini.


Pri nenadzorovanem učenju so podatki sestavljeni iz nabora x-vektorjev iste dimenzije brez oznak razreda ali spremenljivk odziva. Ni zaslug za optimizacijo, kar bi omogočilo dvoumne zaključke. Običajni cilj je združevanje podatkov v skupine - ugotoviti, ali spadajo v različne kupe, vsakemu pa lahko dodeli nek pomen.

Pristop v naključnih gozdovih je upoštevati izvirne podatke kot razred 1 in ustvariti sintetični drugi razred enake velikosti, ki bo označen kot razred 2. Sintetični drugi razred se ustvari z naključnim vzorčenjem iz univariatnih porazdelitev izvirnika podatkov. Tukaj je opisano, kako se ustvari posamezen član razreda dva - prva koordinata se vzorči iz vrednosti N . Druga koordinata se vzorči neodvisno od vrednosti N , in tako naprej.

Tako ima razred dva porazdelitev neodvisnih naključnih spremenljivk, pri čemer ima vsaka enakovredno porazdelitev kot ustrezna spremenljivka v izvirnih podatkih. Razred 2 tako uniči strukturo odvisnosti v izvirnih podatkih. Zdaj pa obstajata dva razreda in ta umetni dvorazredni problem je mogoče voditi skozi naključne gozdove. To omogoča uporabo vseh možnosti naključnih gozdov za prvotni neoznačeni nabor podatkov.

Če je stopnja napačne razvrstitve oob v dvorazrednem problemu recimo 40% ali več, to pomeni, da so x-spremenljivke naključnim gozdom preveč podobne neodvisnim spremenljivkam. Odvisnosti nimajo velike vloge in ni velike diskriminacije. Če je stopnja napačne razvrstitve nižja, imajo odvisnosti pomembno vlogo.

Če bi ga opredelili kot dvorazredni problem, je bilo več izplačil. Manjkajoče vrednosti je mogoče učinkovito nadomestiti. Najdemo izstopajoče. Izmeriti je mogoče pomembnost. Lahko se izvede skaliranje (v tem primeru, če so prvotni podatki imeli nalepke, nenadzorovano skaliranje pogosto ohrani strukturo prvotnega skaliranja). Toda najpomembnejša korist je možnost združevanja v skupine.

Razlog, da je skupno število glasov število "pravih" vzorcev (razred 1), je preprosto v tem, da ni razloga za vrnitev glasov za "lažne" vzorce (razred 2). Ti so naključni in njihova funkcija gostote verjetnosti je v celoti znana.


2 odgovora 2

Prekomerno razvrščanje lahko povzroči pristranskost napovedi, ki je težava kanonične RF metode in za katero so bile raziskane številne spremembe. Verjetno je glavni pristop k ublažitvi pristranskosti uporaba naključno razdeljenih pragov, včasih imenovanih tudi "ekstremni" naključni gozd. Nisem prepričan, kakšen okus RF je vključen v paket R, zagotovo pa bo težava bolj vidna pri delu z neuravnoteženimi nabori podatkov o klasifikaciji - z večino glasov gozd izgubi informacije o ravnotežju glasov in da lahko in pogosto uvede pristranskost v klasifikacije.


3 odgovori 3

Glede na to, da vaš model kaže dobro natančnost, ga lahko uporabite le za napovedovanje oznak razredov zapisov v neoznačenem naboru podatkov. Vendar uspešnosti ne morete oceniti na neoznačenih podatkih.

Pazite, da bi morali z navzkrižno validacijo oceniti kakovost svojega modela na označenih podatkih. Ni dovolj preveriti stopnjo napak pri treningu.

Če vaš model ni dovolj natančen, lahko razmislite o polnadzorovanem učenju. Neoznačeni podatki se uporabljajo za izboljšanje kakovosti vašega modela z induktivnim učenjem. Natančnost je treba vedno izračunati z navzkrižno validacijo vaših označenih podatkov.

Oglejte si [Crimisini et al. Odločitveni gozdovi: enoten okvir za klasifikacijo, regresijo, oceno gostote, večstransko učenje in polnadzorovano učenje] Poglavje 7 o polnadzorovanem učenju in 7.4 o uvajanju s polnadzorovanim učenjem.

Dvomim, da bo nenadzorovano delovalo bolje, vendar bi lahko bilo super vaja za preizkus. Nenadzorovano učenje z naključnim gozdom izvedemo tako, da sestavimo skupno porazdelitev na podlagi vaših neodvisnih spremenljivk, ki približno opisuje vaše podatke. Nato s to porazdelitvijo simulirajte določeno število opazovanj. Na primer, če imate 1000 opazovanj, lahko simulirate še 1000. Potem jih označiš, npr. 1: = realno opazovanje, 0: = simulirano opazovanje. Po tem zaženete običajni klasifikator gozdov, ki poskuša ločiti dejanska opazovanja od simuliranih. Upoštevajte, da morate imeti vklopljeno možnost izračuna bližine. Resničen koristen rezultat je ravno to, opis bližine med vašimi opazovanji glede na to, kaj naključni gozd počne, ko poskuša dodeliti te oznake. Zdaj imate opis, kako blizu so vaša opažanja "podobna" ali podobna in jih lahko celo združite na podlagi številnih tehnik. Preprosto bi bilo izbrati pragove za te "razdalje". Mislim, držite se opazovanj, ki so bližje določenemu pragu. Druga enostavna možnost je hierarhično združevanje v skupine, vendar z uporabo te matrice razdalje. Če lahko delate z R, vam večina hierarhičnih paketov združevanja omogoča podajanje funkcij matricam razdalj po meri. Nato izberete mejno točko, lahko si jo predstavljate kot dendrogram in tako naprej in tako naprej.

Včasih je bila to zelo dobra vadnica o naključnem združevanju gozdov in delili so nekaj uporabnih funkcij R, ki so jih napisali v ta namen, vendar se zdi, da je povezava zdaj mrtva. Mogoče se bo pozneje spet pojavilo. Napisali so tudi zelo lep naključni paket glm R (ki je analogen naključnemu gozdu, vendar temelji na duh. Glms), če želite to preveriti. Vedno lahko pišete avtorjem in zahtevate gradivo za klasifikacijo naključnih gozdov, ki je bilo prej na voljo na mrtvi povezavi. Imam kodo R, vendar je prevelika, da bi jo lahko prilepili sem. Lahko vam jo pošljem, če mi pošljete zasebno sporočilo.


Hemant Ishwaran in Udaya B. Kogalur

Breiman L. (2001). Naključni gozdovi, Strojno učenje, 45:5-32.

Geurts, P., Ernst, D. in Wehenkel, L., (2006). Izredno randomizirana drevesa. Strojno učenje, 63(1):3-42.

Ishwaran H. in Kogalur U.B. (2007). Naključni gozdovi za preživetje za R, Rnews, 7(2):25-31.

Ishwaran H. (2007). Spremenljiv pomen pri binarnih regresijskih drevesih in gozdovih, Elektronski J. Statist., 1:519-537.

Ishwaran H., Kogalur U.B., Blackstone E.H. in Lauer M.S. (2008). Gozdovi naključnega preživetja, Ann. App. Statist., 2:841-860.

Ishwaran H., Kogalur U.B., Gorodeski E.Z, Minn A.J. in Lauer M.S. (2010). Izbira visokodimenzionalnih spremenljivk za podatke o preživetju. J. Amer. Statist. Izr., 105:205-217.

Ishwaran H., Kogalur U.B., Chen X. in Minn A.J. (2011). Naključni preživetveni gozdovi za visoko dimenzionalne podatke. Stat. Analno. Podatkovno rudarjenje, 4:115-132

Ishwaran H., Gerds T.A., Kogalur U.B., Moore R.D., Gange S.J. in Lau B.M. (2014). Naključni gozdovi za preživetje zaradi konkurenčnih tveganj. Biostatistika, 15(4):757-773.

Ishwaran H. in Malley J. D. (2014). Sintetični učni stroji. Rudarstvo bioData, 7:28.

Ishwaran H. (2015). Učinek cepljenja na naključne gozdove. Strojno učenje, 99:75-118.

Ishwaran H. in Lu M. (2019). Standardne napake in intervali zaupanja za spremenljivo pomembnost pri naključni regresiji gozdov, razvrščanju in preživetju. Statistika v medicini, 38, 558-582.

Lu M., Sadiq S., Feaster D.J. in Ishwaran H. (2018). Ocenjevanje učinka posamezne obravnave v opazovalnih podatkih z uporabo naključnih gozdnih metod. J. Comp. Graf. Statist, 27(1), 209-219

Mantero A. in Ishwaran H. (2020). Nenadzorovani naključni gozdovi. Za prikaz v Statistična analiza in pridobivanje podatkov.

Meinshausen N. (2006) Kvantilno regresijski gozdovi, Journal of Machine Learning Research, 7:983-999.

O'Brien R. in Ishwaran H. (2019). Klasifikator naključnih gozdov za neuravnotežene podatke razreda. Prepoznavanje vzorcev, 90, 232-249

Segal M. R. in Xiao Y. Multivariatni naključni gozdovi. (2011). Interdisciplinarni pregledi Wileyja: pridobivanje podatkov in odkrivanje znanja. 1(1):80-87.

Tang F. in Ishwaran H. (2017). Naključni algoritmi manjkajočih podatkov v gozdu. Statistična analiza in pridobivanje podatkov, 10:363-377.


Poglej si posnetek: Obnovimo slovenske gozdove