(Acest articol a fost publicat pentru prima dată pe mlr-orgși a contribuit cu drag la R-Bloggers). (Puteți raporta problema despre conținutul de pe această pagină aici)
Doriți să vă împărtășiți conținutul pe R-Bloggers? Faceți clic aici dacă aveți un blog sau aici dacă nu.
Scopul acestui exercițiu este de a vă familiariza cu două metode de învățare auto foarte importantă, arborele decizional și pădurea aleatorie. După acest exercițiu, ar trebui să puteți antrena aceste modele și să extrageți informații importante pentru a înțelege modelul intern.
Potriviți unui arbore de decizie
Utilizare task = tsk("german_credit") pentru a crea sarcina de clasificare pentru german_credit date și creează un elev de arbori de decizie (de exemplu, un învățător de căruțe). Antrenează arborele de decizie pe german_credit sarcină de clasificare. Uitați -vă la producția arborelui de decizie instruit (trebuie să accesați obiectul modelului brut).
Sugestie 1:
Elevul pe care ne concentrăm aici este un arbore de decizie implementat în rpart. Cel corespunzător mlr3 Cheia elevului este "classif.rpart". Pentru acest exercițiu, folosim elevul cu hiperparametre implicite. Obiectul modelului brut poate fi accesat de la $model Slotul cursantului instruit.
Sugestie 2:
library(mlr3) task = tsk(...) lrn_rpart = lrn(...) # create the learner lrn_rpart$train(...) # train the learner on the task lrn_rpart$... # access the raw model object that was fitted
Vizualizați structura arborelui
Pentru a interpreta modelul și pentru a obține mai multe informații despre luarea deciziilor predicțiilor, decidem să aruncăm o privire mai atentă asupra structurii arborelui decizional, vizualizându -l.
Sugestie 1:
Consultați exemplul de cod în pagina de ajutor ?rpart::plot.rpart care arată cum să folosești plot şi text Funcție la rpart obiect model. Rețineți că există diferite pachete pentru a complota structura arborelui de decizie într -un mod vizual mai atrăgător:
-
rpart.plotFuncție din pachetul numit la felrpart.plotcare este aplicat pe brutrpartobiect model. -
plot.partyFuncționați din pachetpartykitcare se aplică unuirpartModel obiect după transformarea acestuia într -unpartyModel obiect folosindas.partyfuncţie. -
ggpartyFuncție din pachetul numit la felggpartycare se aplică după convertirearpartModel obiect într -unpartyModel obiect folosindas.partyfuncţie.
Sugestie 2:
library("rpart")
...(lrn_rpart$...)
text(lrn_rpart$...)
# Alternative using e.g. the rpart.plot package
library("rpart.plot")
...(lrn_rpart$...)
Potriviți o pădure aleatorie
Pentru a obține un cursant mai puternic, decidem să ne potrivim și o pădure aleatorie. Prin urmare, potriviți o pădure aleatorie cu hiperparametre implicite la german_credit sarcină.
Memento
Unul dintre dezavantajele utilizării copacilor este instabilitatea predictorului. Mici modificări ale datelor pot duce la un model foarte diferit și, prin urmare, o variație ridicată a predicțiilor. Pădurea aleatorie prezintă avantaje și reduce variația prin aplicarea bagajului la arbori de decizie.
Sugestie 1:
Folosiți mlr3 elev classif.ranger care folosește ranger Implementare pentru a antrena o pădure aleatorie.
Sugestie 2:
library(mlr3) library(mlr3learners) lrn_ranger = lrn(...) # create the learner lrn_ranger$...(...) # train the learner on the task
Analiza ROC
Banca dorește să utilizeze un model bazat pe arbori pentru a prezice riscul de credit. Efectuați un punct de referință simplu pentru a evalua dacă un arbore de decizie sau o pădure aleatorie funcționează mai bine în aceste scopuri. Mai exact, banca dorește ca printre aplicațiile de credit să prezinte că sistemul să fie „bun”, se poate aștepta ca cel mult 10% să fie „rău”. Simultan, banca își propune să clasifice corect 90% sau mai mult din toate aplicațiile care sunt „bune”. Vizualizați rezultatele de referință într -un mod care ajută la răspunsul la această întrebare. Poate banca să se aștepte ca modelul să își îndeplinească cerințele? Care model funcționează mai bine?
Sugestie 1:
Un referință necesită trei argumente: o sarcină, o listă de cursanți și un obiect de eșantionare.
Înțelegeți hiperparametre
Utilizare task = tsk("german_credit") pentru a crea sarcina de clasificare pentru german_credit date. În acest exercițiu, dorim să încadrăm arbori de decizie și păduri aleatorii cu diferite hiperparametre (ceea ce poate avea un impact semnificativ asupra performanței). Fiecare elev implementat în R (de exemplu ranger sau rpart) are o mulțime de setări de control care influențează direct montarea modelului (așa-numitele hiperparametre). Aici, vom consdida hiperparametrele mtry pentru ranger elev și maxdepth pentru rpart elev.
Sarcina dvs. este să creați manual o listă care conține mai multe rpart şi ranger elevii cu diferite valori de hiperparameter (de exemplu, încearcă să crească maxdepth valori pentru rpart) În pasul următor, vom folosi această listă pentru a vedea cum se schimbă performanța modelului pentru diferite valori de hiperparameter.
-
Pagina de ajutor a Ranger (
?ranger) oferă o explicație detaliată a hiperparametrelor:mtry: Numărul de variabile care pot fi împărțite în fiecare nod. Valoarea implicită este rădăcina pătrată (rotunjită) a variabilelor de număr. În mod alternativ, o funcție unică de argument care returnează un număr întreg, având în vedere numărul de variabile independente.Notă: în a
rangerÎnvățător creat cumlr3ai posibilitatea de a setamtry.ratioîn loc demtryceea ce vă permite să setați fracția de variabile să fie utilizată în loc să setați numărul de variabile. -
Pentru
rpartTrebuie să săpăm un pic mai adânc. Uitându -se la?rpartNu conține nicio descriere despre hiperparametre. Pentru a obține informații suplimentare, trebuie să deschidem?rpart.control:maxdepth: Setați adâncimea maximă a oricărui nod al arborelui final, cu nodul rădăcină numărat ca adâncime 0. Valorile mai mari de 30 rpardă vor da rezultate prostii pe mașini pe 32 de biți.
Sugestie 1:
Elevii pe care ne concentrăm aici este un arbore de decizie implementat în rpart și o pădure aleatorie implementată în ranger. Cel corespunzător mlr3 Cheia elevului este "classif.rpart" şi "classif.ranger". În mlr3putem obține o imagine de ansamblu despre toate hiperparametrele din $param_set slot. Cu un mlr3 Învățător Este posibil să obțineți ajutor cu privire la metoda de bază prin utilizarea $help() metodă (de exemplu ?lrn_ranger$help()):
lrn("classif.rpart")$help()
lrn("classif.ranger")$help()
Dacă sunteți în căutarea unei scurte descrieri a sensului unui hiperparameter, trebuie să vă uitați la pagina de ajutor a pachetului corespunzător care implementează elevul, de exemplu ?rpart::rpart.control şi ?ranger::ranger.
Sugestie 2:
Posibilele alegeri pentru hiperparametre pot fi, de asemenea, vizualizate $param_set. Setarea hiperparametrelor se poate face direct în lrn() apel:
# Define a list of learners for the benchmark:
lrns = list(
lrn("classif.rpart", ...),
lrn("classif.rpart", ...),
lrn("classif.rpart", ...),
lrn("classif.ranger", ...),
lrn("classif.ranger", ...),
lrn("classif.ranger", ...))
Comparația copacilor și a pădurilor aleatorii
Face o diferență de performanță a modelului WRT dacă folosim hiperparametre diferite? Folosiți cursanții din exercițiul anterior și comparați -i într -un punct de referință. Utilizați validarea încrucișată de 5 ori ca tehnică de eșantionare și eroarea de clasificare ca măsură de performanță. Vizualizați rezultatele de referință.
Sugestie 1:
Funcția de a efectua punctul de referință este benchmark și necesită definirea eșantionării cu rsmp și grila de referință cu benchmark_grid.
Sugestie 2:
set.seed(31415L)
lrns = list(
lrn("classif.rpart", maxdepth = 1),
lrn("classif.rpart", maxdepth = 5),
lrn("classif.rpart", maxdepth = 20),
lrn("classif.ranger", mtry.ratio = 0.2),
lrn("classif.ranger", mtry.ratio = 0.5),
lrn("classif.ranger", mtry.ratio = 0.8))
cv5 = rsmp(..., folds = ...)
cv5$instantiate(...)
bmr = ...(...(task, lrns, cv5))
mlr3viz::autoplot(bmr, measure = msr("classif.ce"))
- Am învățat cum să folosim doi dintre cei mai utilizați cursanți pentru construirea unui copac cu
rpartși o pădure aleatorie curanger. - În cele din urmă, ne -am uitat la diferite hiperparameter și la modul în care acestea afectează performanța într -un punct de referință.
- Următorul pas ar fi utilizarea unui algoritm pentru a căuta automat configurații bune de hiperparameter.
Implementări arbore: Unul dintre cele mai lungi paragrafe din vizualizarea sarcinii CRAN despre învățarea automată și învățarea statistică oferă o imagine de ansamblu asupra implementărilor de arbori existente:
„(……) Modelele structurate de arbori pentru regresie, clasificare și analiză de supraviețuire, urmând ideile din cartea de cărucior, sunt implementate în RPART (expediate cu baza R) și arbore. Pachetul RPART este recomandat pentru calcularea copacilor de tip coș. Modele (similar cu arbori) cu modele de regresie liniară în frunzele terminale, corecții bazate pe instanță și stimulare.
