Daugiau

Kaip apibendrinti atsitiktinio miško klasifikatoriaus mokymo duomenis?


Aš dirbu su atsitiktiniu miško klasifikatoriumi eCognition (naujas su eCognition 9.0). Paveikslėlyje parodytos 8 NAIP plytelės, kurias bandau klasifikuoti naudodamas maždaug 100 mokymo taškų. Mokymo duomenys (mėlyni taškai) yra labai paprasti ir susideda iš formos failo, nurodančio augmenijos vietą ir klasę. Aš klasifikuoju vaizdus pagal plyteles pagal plyteles, todėl ieškau būdo, kaip panaudoti visus mokymo duomenis, o ne tik taškus, esančius atskiros plytelės apimtyje.

Kokie metodai yra prieinami, kad būtų galima panaudoti visą mokymo duomenų spektrą plytelėmis po plytelių? Aš apsvarstiau galimybę išgauti kiekvieno taško pikselių reikšmes ir eksportuoti jas kaip lentelę, nors neradau būdo, kaip naudoti lentelės duomenis, kad būtų išmokytas atsitiktinis miško klasifikatorius eCognition.


Kodėl visą analizę reikia laikyti eCognition? Gavę savo atvaizdo objektus, eksportuokite juos ir paleiskite modelį R. Jūs kur kas labiau kontroliuojate modelį R (pvz., Modelio specifikaciją, kelių spalvų testą, modelio pasirinkimą ir tt) ir nėra problemų pritaikyti modelį visiems duomenims ir numatyti jį pogrupiams, pavaizduotiems plytelėmis.

Sukurčiau darbo eigą, kurioje:

1) vaizdo objektai sukuriami ir apibendrinami „eCognition“.

2) eksportuoti rezultatus kaip vaizdo objektų daugiakampius arba rastrus, vaizduojančius vaizdo objektų spektrinę/tekstūrinę statistiką.

3) skaitykite taškų mokymo duomenis ir vaizdo objektus kaip daugiakampį „SpatialPolygonsDataFrame“ arba rastrinį kamino objektą į R.

4) treniruočių taškams priskirti vaizdo objektų statistiką. Dėl problemos dydžio 3 ir 4 veiksmus gali tekti atlikti pakartotinai, kad būtų galima sukurti duomenis, naudojamus galutiniame modelyje.

5) tinka atsitiktinių miškų modeliui, taikant daugialypiškumo testą ir modelio atranką.

6) prognozuoti visuotinį RF modelį kiekvienai duomenų plytelei.


Tai nėra tikslus atsakymas, bet gali būti naudojamas kaip sprendimas.

Manau, kad jūs nenaudojate 8 plytelių kartu dėl atminties, tačiau jūsų sritis atrodo gana vienalytė. Taigi galite sumažinti vaizdų skiriamąją gebą (pvz., Naudodami 2 ar 3 koeficientą) ir sukurti mozaiką. Tada mokote savo klasifikatorių ant mozaikinio vaizdo ir „įrašote į failą“ scenos kintamąjį, kuriame yra jūsų modelio parametrai. Šį failą galima įkelti kaip scenos kintamąjį kitame projekte, ir jūs galite jį naudoti, kad pritaikytumėte klasifikatorių prie kiekvienos plytelės.


„ECognition Community Ruleset Exchange“ yra pavyzdinis taisyklių rinkinys, rodantis apeitį. Atminkite, kad norint prisijungti prie taisyklių rinkinio nuorodos, gali tekti užsiregistruoti. Taisyklių rinkinio aprašyme nurodoma:

Šiame ZIP archyve yra pavyzdiniai duomenys, skirti mokyti ir taikyti klasifikatoriaus algoritmą keliose scenose. Šiuo metu tai galite padaryti su vienu projektu, kuriame scenos yra atskiri žemėlapiai. Tai yra sprendimas, jei norite mokyti klasifikatorių ne per neribotą skaičių scenų. „eCognition“ apims naudojimo atvejį, kad automatinis klasifikatorius būtų mokomas neribotam projektų skaičiui, tikimasi, kad tai bus viena iš kitų versijų.

Tą patį metodą galite naudoti ir SVM, Bayes ir kNN.


Vienas iš sprendimų medžių privalumų yra tas, kad eiliniams (nuolatiniams arba atskiriems) įvesties duomenims nereikia jokio išankstinio apdorojimo. Tiesą sakant, rezultatai turėtų būti nuoseklūs, nepriklausomai nuo mastelio ar vertimo normalizavimo, nes medžiai gali pasirinkti lygiaverčius skilimo taškus. Geriausias išankstinis sprendimų medžių apdorojimas paprastai yra tai, kas lengviausia ar geriausia vizualizacijai, jei tai nekeičia santykinės verčių tvarkos kiekviename duomenų dimensijoje.

Kategorinės įvestys, kurios neturi protingos tvarkos, yra ypatingas atvejis. Jei jūsų atsitiktinis miško diegimas neturi integruoto būdo tvarkyti kategorinį įvestį, tikriausiai turėtumėte naudoti 1 karšto kodavimą:

  • Jei kategorinėje vertėje yra $ n $ kategorijų, vertę koduojate naudodami $ n $ dimensijas, po vieną atitinkančią kiekvieną kategoriją.
  • Kiekvienam duomenų taškui, jei jis yra $ k $ kategorijoje, atitinkamas $ k $ -asis aspektas yra 1, o likusieji - 0.

Šis 1 karšto kodavimas leidžia sprendimų medžiams atlikti kategorijų lygybės testus vienoje skiltyje, nes nelygybės padalijimas į neeilinius duomenis neturi daug prasmės.


Kaip išsaugoti apmokytą atsitiktinio miško modelį ir pritaikyti jį bandant duomenų failus po vieną?

Ar galiu išsaugoti apmokytą ML modelį, pvz., „Random Forest“ (RF), ir paskambinti/juo naudotis vėliau, nereikia iš naujo įkelti visų jo mokymui naudojamų duomenų?

Kai realiame gyvenime turiu didžiulį aplanką, kuriame yra šimtai ir tūkstančiai duomenų failų, kuriuos reikia išbandyti, ar galiu įkelti tą modelį, kurį išsaugojau kažkur R, ir paprašyti perskaityti nežinomus failus vienas po kito (todėl manęs neriboja RAM dydis) ir atlikite regresijos/klasifikacijos ir tt analizę kiekvienam perskaitytam ir išsaugotam failui VISI išvestį kartu į failą.

Jei aplanke turiu 100 000 csv duomenų failų ir noriu 30% jų naudoti kaip mokymo rinkinį, o likusius - kaip atsitiktinio miško (RF) klasifikacijos testą.

Galiu pasirinkti dominančius failus, pavadinti juos „valdymo failais“. Tada naudokite „fread“ (), tada atsitiktine tvarka paimkite 50% tų failų duomenų, paskambinkite į „CARET“ biblioteką arba „RandomForest“ biblioteką, išmokykite mano & quot; modelį & quot;

Ar galiu modelį kur nors išsaugoti? Taigi man nereikia įkelti visų valdymo failų kiekvieną kartą, kai noriu naudoti modelį?

Tada noriu pritaikyti šį modelį visiems likusiems aplanko csv failams ir noriu, kad jis, taikydamas modelį, skaitytų tuos csv failus po vieną, o ne skaitytų juos visus dėl RAM problemos.


2 atsakymai 2

Parinktis „class_weight“ nieko nedaro, tik padidina klaidos padarymo su nepakankamai atstovaujama klase svorį. Kitaip tariant, už neteisingą retos klasės klasifikavimą baudžiama griežčiau.

Klasifikatorius greičiausiai veiks geriau jūsų bandymų rinkinyje (kai abi klasės yra vienodai atstovaujamos, taigi abi yra vienodai svarbios), tačiau tai galite lengvai patikrinti patys.

Šalutinis poveikis yra tas, kad prognozė_proba grąžina tikimybes, kurios yra toli nuo faktinių tikimybių. (Jei norite suprasti, kodėl, nubraižykite paprastą vidutinę tikimybę ir numatomų balų pasiskirstymą be ir su skirtingu class_weight =. Kaip keičiasi numatomi balai?). Priklausomai nuo jūsų galutinio naudojimo atvejo (klasifikacijos, reitingo, tikimybės įvertinimo), turėtumėte apsvarstyti savo modelio pasirinkimus.

Griežtai tariant, jūsų požiūriu mokymas nustatytą, nesusiduriate su klasės disbalanso problema, todėl galite labai gerai palikti „class_weight“ numatytąją reikšmę Nėra.

Tikroji problema čia ir apskritai nesubalansuotuose duomenų rinkiniuose (apie kuriuos nepateikiate jokios informacijos) yra, jei kaina klaidinga klasifikacija yra vienoda abiem klasėms. Ir tai yra „verslo“ sprendimas (t. Y. Ne statistinis/algoritminis).

Paprastai nesubalansuoti duomenų rinkiniai yra susiję su problemomis, susijusiomis su skirtingomis netinkamo klasifikavimo išlaidomis, medicininė diagnozė yra vadovėlio pavyzdys, nes:

  1. Duomenų rinkiniai beveik nesuderinami, nes sveiki žmonės gerokai viršija užsikrėtusiųjų skaičių
  2. Mes teikiame pirmenybę klaidingam aliarmui (klaidingai priskiriant žmogų ligai, o jis/ji to nedaro), o ne praleistam aptikimui (klaidingai užkrėstą asmenį priskiriant sveikam, todėl rizikuojant jo gyvybe)

Taigi, tai yra tikroji problema, apie kurią turėtumėte galvoti (t. Y. Dar prieš kurdami treniruočių rinkinį).

Jei, dėl verslas problema, kurią bandote spręsti, nėra jokio skirtumo tarp klaidingo „0“ klasifikavimo „1“ ir „1“ į „0“, ir kadangi jūsų treniruočių rinkinys yra subalansuotas, galite tęsti nesirūpindami, kad priskiriate kitą klasę svoriai.


2 atsakymai 2

Taikydami šį metodą, galite naudoti parametrą „suspausti“. Šis parametras priima sveikojo skaičiaus reikšmes nuo 0 iki 9, kuo didesnė vertė, tuo labiau suspaudžiamas failas. Idealiu atveju pakaktų 3 suspaudimo vertės.

Vienintelis trūkumas yra tas, kad kuo didesnė suspaudimo vertė, tuo lėtesnis rašymo/skaitymo greitis!

Atsitiktinio miško modelio dydis nėra griežtai priklausomas nuo duomenų rinkinio, su kuriuo jį mokėte, dydžio. Vietoj to, yra ir kitų parametrų, kuriuos galite pamatyti atsitiktinio miško klasifikatoriaus dokumentuose, kurie kontroliuoja, kokio dydžio modelis gali išaugti. Tokie parametrai kaip:

  • n_estimators - medžių skaičius
  • max_depth - kaip & quottall & quot gali gauti kiekvienas medis
  • min_samples_split ir min_samples_leaf - mėginių, leidžiančių medžio mazgams suskaidyti/tęsti, skaičius

Jei jūs išmokėte savo modelį su daugybe įvertinimų, dideliu maksimaliu gyliu ir labai mažais lapų/suskaidytų mėginių kiekiais, tada jūsų gautas modelis gali būti didžiulis - ir čia susiduriate su atminties problemomis.

Tokiais atvejais dažnai pastebėjau, kad mažesnių modelių mokymas (valdant šiuos parametrus) - jei tai neužmuš našumo metrikos - išspręs šią problemą, o tada galėsite grįžti prie darbo sąrašo ar kito jūsų minėti sprendimai, kaip išsaugoti/įkelti savo modelį.


Apie tai, apie ką kalbate, palaipsniui atnaujinant modelį su papildomais duomenimis, aptariama „sklearn“ vartotojo vadove:

Nors ne visi algoritmai gali mokytis palaipsniui (t. Y. Nematydami visų egzempliorių vienu metu), visi įvertinimai, įgyvendinantys „semi_fit“ API, yra kandidatai. Tiesą sakant, galimybė mokytis palaipsniui naudojant nedidelį egzempliorių paketą (kartais vadinamą „internetiniu mokymusi“) yra esminio mokymosi už pagrindinio dalyko raktas, nes tai garantuoja, kad bet kuriuo metu bus tik nedaug atvejų Pagrindinė ATMINTIS.

Juose yra klasifikatorių ir regresorių, įgyvendinančių partial_fit (), sąrašas, tačiau „RandomForest“ tarp jų nėra. Taip pat galite patvirtinti, kad „RFRegressor“ neįdiegia dalinio pritaikymo „RandomForestRegressor“ dokumentacijos puslapyje.


Atsitiktinis miškas

Dabar jūs suprantate ansamblio mokymosi pagrindus. Jūs taip pat žinote, kokios yra pagrindinės ansamblio mokymosi rūšys ir kas yra gilus. Dabar pereikime ir aptarkime atsitiktinio miško algoritmą. Šiame skyriuje bus aprašytas atsitiktinio miško naudojimas regresijos užduočiai išspręsti. Pasistengsiu būti kuo tikslesnis ir pabandysiu apimti visus aspektus, kurių jums gali prireikti naudojant RF kaip jūsų algoritmą ML projektui.

Kas bus aptarta šiame skyriuje:

  • Kas yra atsitiktinis miškas?
  • Kada naudoti atsitiktinį mišką
  • Privalumai ir trūkumai
  • Kaip naudoti atsitiktinį mišką regresijai?
  • Atsitiktinis miškas vs. kiti algoritmai

Kas yra atsitiktinis miškas?

Atsitiktinis miškas yra prižiūrimas mokymosi algoritmas, pagrįstas mokymosi ansambliu metodu ir daugeliu sprendimų medžių. Atsitiktinis miškas yra maišų metodas, todėl visi skaičiavimai atliekami lygiagrečiai ir juos kuriant sprendimų medžiai nesąveikauja. RF gali būti naudojamas sprendžiant tiek klasifikavimo, tiek regresijos užduotis.

Pavadinimas „Atsitiktinis miškas“ kilęs iš duomenų maišymo (atsitiktinis) ir kelių sprendimų medžių (miškas) kūrimo idėjos. Apskritai tai yra galingas ML algoritmas, kuris apriboja Sprendimų medžio modelio trūkumus (tai aptarsime vėliau). Be to, atsitiktinis miškas yra gana populiarus, kaip matyti iš daugelio „Kaggle“ konkursų, akademinių darbų ir techninių pranešimų.

Atsitiktinis miško algoritmas

Kad viskas būtų aišku, pažvelkime į tikslų atsitiktinio miško algoritmą:

  1. Taigi, jūs turite savo originalų duomenų rinkinį D ir norite, kad mūsų ansamblyje būtų K sprendimų medžiai. Be to, turite skaičių N –, kurite medį, kol kiekviename mazge bus mažiau arba lygu N pavyzdžių (regresijos atveju užduotis N paprastai yra lygi 5). Be to, turite daugybę F – funkcijų, kurios bus atsitiktinai pasirinktos kiekviename Sprendimų medžio mazge. Funkcija, kuri bus naudojama mazgui padalyti, parenkama iš šių F funkcijų (regresijos užduočiai F paprastai yra lygi sqrt (pradinio duomenų rinkinio D funkcijų skaičius)
  2. Visa kita yra gana paprasta. Atsitiktinis miškas sukuria K duomenų pogrupius iš pirminio duomenų rinkinio D. Pavyzdžiai, kurie nerodomi jokiame pogrupyje, vadinami „iš maišo“ esančiais mėginiais.
  3. K medžiai statomi naudojant tik vieną pogrupį. Be to, kiekvienas medis statomas tol, kol kiekviename mazge yra mažiau arba lygu N pavyzdžių. Be to, kiekviename mazge F funkcijos yra pasirinktos atsitiktinai. Vienas iš jų naudojamas mazgui padalyti
  4. K apmokyti modeliai sudaro ansamblį, o galutinis regresijos užduoties rezultatas gaunamas apskaičiuojant atskirų medžių prognozes

Žemiau esančiame paveikslėlyje galite pamatyti atsitiktinio miško klasifikavimo algoritmą.

Privalumai ir trūkumai

Norėdami pradėti, pakalbėkime apie privalumus. Atsitiktinis miškas yra pagrįstas maišymo technika, kuri padeda skatinti algoritmo našumą. Atsitiktinis miškas nėra išimtis. Tai gerai veikia „iš karto“ be jokių hiperparametrų derinimo ir yra geriau nei linijiniai algoritmai, todėl tai yra geras pasirinkimas. Be to, „Random Forest“ yra gana greitas, tvirtas ir gali parodyti svarbias savybes, kurios gali būti gana naudingos.

Be to, atsitiktinis miškas riboja didžiausią sprendimų medžių trūkumą. Dėl pogrupio ir funkcijų atsitiktinės atrankos jis beveik nepersistengia. Pirma, kiekvienam pagrindiniam modeliui jis naudoja unikalų pradinių duomenų pogrupį, kuris padeda sumažinti sprendimų medžių koreliaciją. Antra, jis padalija kiekvieną mazgą kiekviename sprendimų medyje, naudodamas atsitiktinį funkcijų rinkinį. Toks požiūris reiškia, kad nė vienas medis nemato visų duomenų, o tai padeda sutelkti dėmesį į bendrus mokymo duomenų modelius ir sumažina jautrumą triukšmui.

Nepaisant to, atsitiktinis miškas turi trūkumų. Nors tai yra patobulinimas, palyginti su vienu sprendimų medžiu, yra sudėtingesnių metodų nei atsitiktinis miškas. Tiesą sakant, geriausias prognozavimo tikslumas sudėtingoms problemoms paprastai gaunamas naudojant „Boosting“ algoritmus.

Be to, „Random Forest“ negali ekstrapoliuoti pagal duomenis. Jo prognozės visada yra treniruočių rinkinio diapazone. Tai didelis trūkumas, nes ne kiekvieną regresijos problemą galima išspręsti naudojant atsitiktinį mišką. Atsitiktinio miško regresorius negali atrasti tendencijų, kurios leistų ekstrapoliuoti vertes, kurios nepatenka į mokymo rinkinį. Tiesą sakant, todėl atsitiktinis miškas dažniausiai naudojamas klasifikavimo užduočiai atlikti.

Be to, atsitiktinis miškas yra mažiau interpretuojamas nei sprendimų medis. Pavieniai medžiai gali būti vizualizuojami kaip sprendimų seka, o RF negali. Tai gali šiek tiek painioti. Verta paminėti, kad apmokytam RF gali prireikti daug atminties, nes jums reikia išsaugoti informaciją iš kelių šimtų medžių.

Apskritai, „Random Forest“ yra vienas galingiausių ansamblio metodų. Praktiškai jis gali veikti šiek tiek prasčiau nei gradiento stiprinimas, tačiau jį taip pat daug lengviau įgyvendinti. Tikrai turėtumėte pabandyti atlikti regresijos užduotį, jei duomenys turi netiesinę tendenciją, o ekstrapoliacija už mokymo duomenų ribų nėra svarbi. Vis dėlto, jei jūsų problema reikalauja nustatyti bet kokią tendenciją, neturėtumėte naudoti „Random Forest“, nes ji negalės jos suformuluoti.

Aptarkime praktiškesnį atsitiktinio miško pritaikymą.

Kada naudoti atsitiktinį mišką realiame gyvenime

Kaip minėta aukščiau, atsitiktinis miškas dažniausiai naudojamas klasifikavimo problemoms spręsti. Verta paminėti, kad atsitiktinis miškas retai naudojamas gamyboje vien dėl kitų geresnį našumą rodančių algoritmų. Tačiau RF yra būtinas hipotezių tikrinimo algoritmas, nes jis gali padėti jums gauti vertingų įžvalgų. Pavyzdžiui, atsitiktinio miško „iš karto“ modelis buvo pakankamai geras, kad parodytų geresnius rezultatus atliekant sudėtingą sukčiavimo aptikimo užduotį nei sudėtingas kelių modelių neuroninis tinklas.

Iš mano patirties, galbūt norėsite išbandyti „Random Forest“ kaip savo ML klasifikavimo algoritmą, kad išspręstumėte tokias problemas kaip:

  1. Sukčiavimo aptikimas (klasifikacija) ir#8211 skaitykite aukščiau susietą straipsnį. Jums tai gali atrodyti gana jaudinantis, nes tai parodo, kaip paprasti ML modeliai gali įveikti sudėtingus neuroninius tinklus atliekant neaiškią užduotį
  2. Kredito balai (klasifikacija) ir#8211 yra svarbus sprendimas bankų sektoriuje. Kai kurie bankai sukuria didžiulius neuroninius tinklus, kad pagerintų šią užduotį. Tačiau paprasti metodai gali duoti tą patį rezultatą
  3. Pavyzdžiui, el. Prekybos atvejis (klasifikacija) ir#8211 galime pabandyti numatyti, ar produktas patiks klientui, ar ne
  4. Bet kokia klasifikavimo problema, susijusi su lentelės duomenimis, pavyzdžiui, „Kaggle“ varžybos

Regresijos atveju turėtumėte naudoti atsitiktinį mišką, jei:

  1. Tai nėra laiko eilučių problema
  2. Duomenys turi netiesinę tendenciją ir ekstrapoliacija nėra esminė

Pavyzdžiui, atsitiktinis miškas dažnai naudojamas prognozuojant vertę (namo ar naujo prekės ženklo pieno paketo vertė).

Atėjo laikas judėti toliau ir aptarti, kaip „Python“ įdiegti atsitiktinį mišką.

Kaip naudoti atsitiktinį mišką regresijai

Šiam skyriui aš jums paruošiau nedidelį „Google Collab“ užrašų knygelę, kurioje yra darbas su „Random Forest“, mokymai apie Bostono duomenų rinkinį, hiperparametrų derinimas naudojant „GridSearchCV“ ir kai kurios vizualizacijos. Nesivaržykite eksperimentuoti ir žaisti, nes nėra geresnio būdo ką nors įvaldyti nei praktikuoti.

Nustatymas

Kaip minėta aukščiau, „Random Forest“ naudoti yra gana paprasta. Laimei, „Sklearn“ bibliotekoje yra algoritmas, įgyvendintas tiek regresijos, tiek klasifikavimo užduotims. Regresijos problemai turite naudoti „RandomForestRegressor“ () modelį, o klasifikavimo užduočiai - „RandomForestClassifier“ ().

Jei dar neturite sklearn bibliotekos, galite lengvai ją įdiegti per pip. Be to, atminkite, kad reguliariai mokykitės atnaujinti, todėl turėtumėte tai sekti, nes norite naudoti tik naujausias bibliotekos versijas (šiandien tai yra 0.24.0 versija).

Jei turite viską įdiegtą, galite lengvai importuoti „RandomForestRegressor“ modelį iš „sklearn“, priskirti jį kintamajam ir pradėti dirbti su juo.

Mokymas

Jei kada nors išmokėte ML modelį naudodami sklearn, jums nebus sunku dirbti su „RandomForestRegressor“. Viskas, ką jums reikia padaryti, tai atlikti pratimų rinkinio tinkamumo metodą ir bandymų rinkinio nuspėjimo metodą.

Tačiau atsitiktinis miškas sklearn automatiškai neapdoroja trūkstamų verčių. Algoritmas grąžins klaidą, jei jūsų duomenyse aptiks NaN arba Null reikšmių. Jei norite tai patikrinti patys, skaitykite nešiojamojo kompiuterio skyrių „Trūkstamos vertės“. Žinoma, galite lengvai išmesti visus mėginius su trūkstamomis vertėmis ir tęsti mokymą. Vis dėlto yra keletas nestandartinių metodų, kurie padės įveikti šią problemą (juos galite rasti dokumentacijos skyriuose „Trūkstama mokymo rinkinio vertės pakeitimo“ ir „Trūkstama bandymų rinkinio vertės pakeitimo“).

Apskritai nepamirškite apie EGA. Visada geriau prieš pradedant treniruotis geriau išstudijuoti savo duomenis, juos normalizuoti, tvarkyti kategorines savybes ir trūkstamas vertes. Taip pavyks išvengti daugybės kliūčių.

Derinimas

Apskritai, visada turėtumėte derinti savo modelį, nes jis turi padėti pagerinti algoritmo našumą. Kaip žinote, derinimas yra tikrai brangus laikas. Derinant atsitiktinio miško modelį, jis tampa dar blogesnis, nes kiekvieną parametrų tinklelio pogrupį turite kelis kartus treniruoti šimtus medžių. Taigi, jūs neturite bijoti. Patikėkite, tai verta.

Galite lengvai suderinti „RandomForestRegressor“ modelį naudodami „GridSearchCV“. Jei nesate tikri, kokių modelių hiperparametrus norite pridėti prie savo parametrų tinklelio, žr. Oficialią „Sklearn“ dokumentaciją arba „Kaggle“ nešiojamuosius kompiuterius. „Sklearn“ dokumentacija padės išsiaiškinti, kokius hiperparametrus turi „RandomForestRegressor“. Kita vertus, „Kaggle“ nešiojamuosiuose kompiuteriuose bus kitų vartotojų parametrų tinkleliai, kurie gali būti labai naudingi.

Testavimas

Kai jūsų modelis bus apmokytas ir sureguliuotas, laikas išbandyti jo galutinį veikimą. Atsitiktinis miškas yra tik dar vienas regresijos algoritmas, todėl jo rezultatui įvertinti galite naudoti visas regresijos metrikas.

Pavyzdžiui, galite naudoti MAE, MSE, MASE, RMSE, MAPE, SMAPE ir kitus. Tačiau, iš mano patirties, dažniausiai naudojami MAE ir MSE. Abu jie puikiai tiks modelio veiklai įvertinti. Taigi, jei juos naudojate, atminkite, kad kuo mažiau jūsų klaidų, tuo geriau ir tobulo modelio paklaida bus lygi nuliui.

Be to, verta paminėti, kad galbūt nenorėsite naudoti jokios kryžminio patvirtinimo metodo, kad patikrintumėte modelio gebėjimą apibendrinti. Kai kurie duomenų mokslininkai mano, kad atsitiktinio miško algoritmas suteikia nemokamą kryžminį patvirtinimą. Matote, atsitiktinis miškas atsitiktine tvarka pasirenka ypatybes kiekvieno medžio padalijimo metu, kad jis nebūtų per didelis, kaip kiti modeliai. Todėl atsitiktinio miško modelyje kryžminio patvirtinimo naudoti gali būti nereikalinga.

Vis dėlto, jei norite naudoti kryžminio patvirtinimo metodą, galite naudoti sulaikymo rinkinio koncepciją. Kaip minėta anksčiau, pavyzdžiai iš pradinio duomenų rinkinio, kurie nebuvo pateikti jokiame pogrupyje, vadinami „iš maišo“ pavyzdžiais. Jie puikiai tinka laikomam rinkiniui. Paprastai pakaks naudoti „iš maišo“ pavyzdžius kaip laikymo rinkinį, kad suprastumėte, ar jūsų modelis gerai apibendrina.

„Sklearn“ galite lengvai tai padaryti naudodami parametrą „oob_score = True“. Jei nustatyta „True“, šis parametras leidžia atsitiktiniam miško regresoriui naudoti „iš maišo“ pavyzdžius, kad būtų galima įvertinti nematytų duomenų R^2. Jei jūsų vertė didesnė nei 0,75, tai reiškia, kad jūsų modelis nėra per didelis (geriausias įmanomas balas lygus 1)

Vizualizavimas

Labai svarbu turėti keletą vertingų jūsų modelio vizualizacijų. Jums bus lengviau pateikti rezultatus, jei turėsite keletą paprastų grafikų. Be to, tai padaryti gana paprasta.

Pavyzdžiui, galite vizualizuoti modelio prognozes. Žemiau esančiame paveikslėlyje tikrosios vertės pavaizduotos raudona spalva, o numatomos - žalia.

Be to, iš ansamblio galite nubraižyti bet kurį medį. Paveikslėlį rasite užrašų knygelės skyriuje „Vizualizacijos“.

Galite patys sugalvoti kitų vertingų vizualizacijų arba patikrinti „Kaggle“ idėjų. Vis dėlto atminkite, kad jūsų vizualizacija turi būti lengvai interpretuojama, kad būtų efektyvi.

Atsitiktinis miškas prieš kitus algoritmus

Apskritai, „Random Forest“ yra vienas galingiausių ansamblio metodų. Jis gali būti naudojamas tiek klasifikavimui, tiek regresijai ir turi aiškų pranašumą prieš linijinius algoritmus, tokius kaip linijinė ir logistinė regresija bei jų variacijos. Be to, atsitiktinio miško modelį galima puikiai suderinti, kad būtų pasiekti dar geresni našumo rezultatai.

Tačiau atsitiktinis miškas nėra tobulas ir turi tam tikrų apribojimų. Kaip minėta anksčiau, neturėtumėte naudoti atsitiktinio miško, kai turite skirtingų tendencijų duomenų. Be to, „Boosting“ algoritmai veikia geriau nei atsitiktinis miškas. Štai kodėl aš suformavau tam tikrą bendrą ML projekto darbo eigą, kuri padės jums efektyviai dirbti.

  1. Sukurkite naivų modelį. Pavyzdžiui, tiesiog paimkite tikslo mediana ir patikrinkite bandymų duomenų metriką. Nenaudokite jokių ML algoritmų, tiesiog dirbkite su savo duomenimis ir pažiūrėkite, ar rasite įžvalgų. Patikrinkite, ar galite naudoti kitus ML algoritmus, tokius kaip atsitiktinis miškas, kad išspręstumėte užduotį
  2. Naudokite linijinį ML modelį, pavyzdžiui, linijinę arba logistinę regresiją, ir suformuokite pradinę liniją
  3. Naudokite atsitiktinį mišką, sureguliuokite jį ir patikrinkite, ar jis veikia geriau nei pradinis. Jei tai geriau, atsitiktinio miško modelis yra jūsų naujas pagrindas
  4. Naudokite „Boosting“ algoritmą, pvz., „XGBoost“ ar „CatBoost“, sureguliuokite jį ir pabandykite įveikti pradinį lygį
  5. Pasirinkite modelį, kuris pasiekia geriausius rezultatus

Taigi kartais sunku pasakyti, kuris algoritmas veiks geriau. Turite ištirti savo galimybes ir patikrinti visas hipotezes. Tai padės giliai pasinerti į užduotį ir ją išspręsti efektyviau. Iš mano patirties „Random Forest“ tikrai yra algoritmas, į kurį turėtumėte atkreipti dėmesį sprendžiant regresijos užduotį.


Atsitiktinis miškas iš esmės yra įkrovos mėginių ėmimas ir mokymo sprendimų medžiai, todėl atsakant į jūsų klausimą reikia atsižvelgti į šiuos du dalykus.

„Bootstrap“ mėginių ėmimas nėra vaistas nuo mažų mėginių. Jei jūsų duomenų rinkinyje yra tik dvidešimt keturi stebėjimai, kiekvieną iš šių duomenų paimtą mėginį sudarytų ne daugiau kaip dvidešimt keturios skirtingos vertės. Maišant bylas ir nepiešiant kai kurių iš jų labai nepasikeistų jūsų gebėjimas sužinoti ką nors naujo apie pagrindinį paskirstymą. Taigi mažas pavyzdys yra „bootstrap“ problema.

Sprendimų medžiai mokomi sąlygiškai padalijant duomenis į prognozavimo kintamuosius, po vieną kintamąjį, kad būtų rasti tokie pavyzdžiai, kurie turi didžiausią diskriminacinę galią. Jei turite tik dvidešimt keturis atvejus, tada pasakykite, kad jei jums pasisekė ir visi skilimai buvo net dydžio, tada du skilimai baigtųsi keturiomis grupėmis po šešis atvejus, medžių skilimais ir aštuoniomis grupėmis po tris. Jei apskaičiuotumėte imčių sąlygines vidurkius (norėdami prognozuoti nuolatines regresijos medžių reikšmes arba sąlygines tikimybes sprendimų medžiuose), savo išvadą grindžiate tik tais keliais atvejais! Taigi papildomi pavyzdžiai, kuriuos naudosite priimdami sprendimus, būtų dar mažesni nei jūsų pradiniai duomenys.

Naudojant mažus mėginius, paprastai protinga naudoti paprastus metodus. Be to, galite pasivyti nedidelį pavyzdį, naudodamiesi informatyviais prioritetais Bajeso aplinkoje (jei turite pagrįstų žinių apie problemą), todėl galite apsvarstyti galimybę naudoti specialų Bajeso modelį.


3 atsakymai 3

Jūs tikrai galite naudoti „GridSearchCV“ su atsitiktiniu mišku. Tiesą sakant, turėtumėte naudoti „GridSearchCV“, kad surastumėte geriausius parametrus, dėl kurių jūsų „oob_score“ bus labai aukštas.

Kai kurie parametrai, kuriuos reikia sureguliuoti, yra šie:

n_stimiatoriai: Medis, kurį turėtų turėti jūsų atsitiktinis miškas. Kuo daugiau n_estimatorių, tuo mažiau per daug. Turėtumėte pabandyti nuo 100 iki 5000 diapazono.

max_depth: maksimalus kiekvieno medžio gylis. Turėtumėte nurodyti tam tikrą max_depth, kad jūsų modelis neįsimintų traukinio pavyzdžių.

min_sample_split: minimalus mėginių skaičius prieš skaidymą į naujus mazgus.

Bet tai yra pagrindiniai hiperparametrai, kuriuos mes deriname, kad gautume gerai veikiantį mišką. Ir norėdami gauti šiuos hiperparamus, turėtumėte naudoti „GridSeachCV“.

Galite labai gerai naudoti „GridSearchCV“, kad tiksliai sureguliuotumėte „RandomForest“.

Nesuprantu, ką turite omenyje & quot; jei naudoju GridSearchCV (), mokymo rinkinys ir testavimo rinkinys keičiasi kiekvieną kartą. & Quot

Paprastai mes taikome „GridSearchCV“ test_data rinkiniui, atlikę traukinio testo padalijimą. Kryžminis patvirtinimas padalija mokymo duomenis į kelis traukinio ir bandymo skyrius pagal jūsų pateiktą Kfold reikšmę. Pavyzdžiui, jei k reikšmė yra 10, treniruotės duomenys bus padalyti į 10 kartų, kur 1 bus naudojamas testavimui, o 9 - mokymui. Taip atsitinka, kol visi 10 raukšlių naudojami bandymams, todėl gausite 10 tikslumo balų. Be to, „gridsearchcv“ perduodame hiper parametrų rinkinį pagal mūsų naudojamą modelį. Tai padeda rasti geriausius modelio hiperparametrus, kad būtų gautas geriausias tikslumo balas ir išvengta per didelio pritaikymo.

Kita vertus, oob yra keletas nematytų atsitiktinio miško modelio duomenų.

Praneškite man, jei jums reikia išsamesnės informacijos.

Aš galiu tai padaryti su GridSearchCV (), bet ar tai teisinga daryti su atsitiktiniu mišku?

Taip, tai visiškai galioja. Tai ignoruoja atsitiktinių miškų „oob-score“ funkciją, tačiau tai nebūtinai yra blogas dalykas. Žr. Pvz. https://stats.stackexchange.com/a/462720/232706

Kokia yra hiperparametrų derinimo su atsitiktiniu mišku sutartis, kad sklearn būtų geriausias OOB balas? Ar galiu tiesiog peržiūrėti parametrų rinkinį ir prisitaikyti prie to paties mokymo ir bandymų rinkinio?

Manau, kad tai būtų standartinis derinimo būdas naudojant „oob“ balą, išskyrus tai, kad šiuo atveju testavimas nenustatytas. (Tikriausiai norėsite bandymų rinkinio, skirto būsimam galutinio pasirinkto modelio našumui įvertinti: pasirinkus hiperparametrus pagal tuos „Oob“ balus, tai reiškia, kad jie nebėra nešališki būsimo našumo įvertinimai, kaip ir kryžminio patvirtinimo k kartus! Jūsų hiperparametras -kandidatų modeliai neturėtų matyti šio bandymų rinkinio.)


Žiūrėti video įrašą: Pavojingų medžių pjovimas. medžių genėjimas - Aplinkos darbai (Spalio Mėn 2021).