Metode de arbore | R-BLOGGERS

URMĂREȘTE-NE
16,065FaniÎmi place
1,142CititoriConectați-vă

(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 fel rpart.plot care este aplicat pe brut rpart obiect model.
  • plot.party Funcționați din pachet partykit care se aplică unui rpart Model obiect după transformarea acestuia într -un party Model obiect folosind as.party funcţie.
  • ggparty Funcție din pachetul numit la fel ggparty care se aplică după convertirea rpart Model obiect într -un party Model obiect folosind as.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 cu mlr3ai posibilitatea de a seta mtry.ratio în loc de mtry ceea 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 ?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 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 cu ranger.
  • Î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.

Dominic Botezariu
Dominic Botezariuhttps://www.noobz.ro/
Creator de site și redactor-șef.

Cele mai noi știri

Pe același subiect

LĂSAȚI UN MESAJ

Vă rugăm să introduceți comentariul dvs.!
Introduceți aici numele dvs.