(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.plot
Funcție din pachetul numit la felrpart.plot
care este aplicat pe brutrpart
obiect model. -
plot.party
Funcționați din pachetpartykit
care se aplică unuirpart
Model obiect după transformarea acestuia într -unparty
Model obiect folosindas.party
funcţie. -
ggparty
Funcție din pachetul numit la felggparty
care se aplică după convertirearpart
Model obiect într -unparty
Model obiect folosindas.party
funcţ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 cumlr3
ai posibilitatea de a setamtry.ratio
în loc demtry
ceea ce vă permite să setați fracția de variabile să fie utilizată în loc să setați numărul de variabile. -
Pentru
rpart
Trebuie să săpăm un pic mai adânc. Uitându -se la?rpart
Nu 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 mlr3
putem 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.