(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.
Vom trece dincolo de reeșantionarea cursanților singuri. Vom învăța cum să comparăm un număr mare de modele diferite folosind evaluarea comparativă. În acest exercițiu, nu vă vom arăta cum să acordați un elev. În schimb, vom compara studenții identici cu diferite hiperparametre care sunt setate manual. În special, vom învăța cum să stabilim instanțe comparative în mlr3
.
Creăm sarcina în ceea ce privește exercițiul de eșantionare: din nou, ne facem din calul nostru de lucru: setul de date de credit german.
library(mlr3verse)
Lade nötiges Paket: mlr3
task = tsk("german_credit") set.seed(20220801)
Vom compara o serie de modele KNN diferite de la un de la 3 până la 30. Mai mult, dorim să evaluăm performanța unei regresii logistice.
Creați cursanții
Creați un elev de regresie logistică și mulți cursanți KNN. Ar trebui să acoperiți toate KNN -urile cu un Între 3 și 30 de ani. Salvați toți cursanții într -o listă. Dă -i cursanților KNN un adecvat
id
asta reflectă .
Afișați Sugestia 1:
Folosiți lapply
funcție sau o buclă pentru a crea lista cursanților cu între 3 și 30. Nu uitați să includeți și elevul de regresie logistică din lista dvs. (
append
Funcția ar putea fi utilă aici pentru a extinde o listă creată). lrn
Funcția are un argument id
care poate fi folosit pentru a schimba numele cursantului (aici, ar trebui să le oferiți cursanților KNN un adecvat id
care reflectă valoarea lor de pentru a putea distinge cursanții).
Afișați Sugestia 2:
Pentru a crea o listă de cursanți KNN, puteți utiliza acest șablon: lapply(..., function(i) lrn("classif.kknn", k = i, id = paste0("classif.knn", i))
Creați eșantionarea
Creați o eșantionare încrucișată de 4 ori. Creați o listă care conține doar această eșantionare (acest lucru este necesar mai târziu pentru benchmark_grid
funcţie).
Show Sugest:
Consultați carcasa de utilizare anterioară de eșantionare.
Creați un design de evaluare comparativă
Pentru a vă proiecta experimentul de referință constând din sarcini, cursanți și tehnica de eșantionare, puteți utiliza benchmark_grid
Funcție din mlr3
. Aici, vom folosi o singură sarcină și o tehnică de eșantionare, dar mai mulți studenți. Utilizați sarcina creată anterior (creditul german), elevii (lista multor studenți KNN și un singur cursant de regresie logistică) și reeșantionarea (CV -ul de 4 ori) ca intrare.
Afișați Sugestia 1:
De asemenea, asigurați -vă că sarcina este inclusă într -o listă ca argumente ale benchmark_grid
Funcția necesită liste ca intrare.
Afișați Sugestia 2:
benchmark_grid(...
Rulați punctul de referință
Acum mai trebuie să rulați toate experimentele specificate în proiectare. Faceți acest lucru folosind benchmark
funcţie. Acest lucru poate dura ceva timp. (Încă mai puțin de un minut.) Asigurați -vă că stocați punctul de referință într -un obiect nou numit bmr
Pe măsură ce veți reutiliza și inspecta rezultatele de referință în exercițiile ulterioare.
Afișați Sugestia 1:
Evaluează punctul de referință
Alegeți două valori adecvate pentru a evalua performanța diferiților cursanți pe sarcină. Calculați aceste valori și vizualizați, de asemenea, cel puțin una dintre ele folosind autoplot
funcţie.
Afișați Sugestia 1:
Obiectul de referință stocat anterior are o metodă $aggregate(...)
la fel ca obiectele create cu resample
Funcție din cazul de utilizare anterioară.
Afișați Sugestia 2:
autoplot(..., measure = msr(...))
Interpretați rezultatele
Interpretează complotul. Care Pare să funcționeze bine, având în vedere sarcina? Ați prefera o regresie logistică față de un elev KNN? ::: {.content-ascuns decât dacă-meta = „params.showsolution”} ::: {.callout-note colapse = „true”} ### Soluție a
de aprox. 12 pare să funcționeze cel mai bine (în ceea ce privește precizia). Un prea mic
Underfits, o mare supraficit. Neștiind adevăratul
o regresie logistică pare de preferat. Dacă
este prea mic, performanța medie a regresiei logistice este mult mai bună. Dacă
Este prea mare, variația performanței este mult mai mare în comparație cu regresia logistică. Cu toate acestea, un KNN un optim
Are o precizie constant ridicată.
::: ::: # Extra: paralelizează -ți eforturile
Benchmarking -ul este În mod embaras paralel. Asta înseamnă că este foarte ușor să rulați experimentele de evaluare comparativă pe diferite mașini sau nuclee. În multe cazuri (nu toate!), Acest lucru poate accelera semnificativ timpul de calcul. Vă recomandăm să faceți acest lucru folosind future::plan
Funcționează la paralellizare mlr3
Repere de referință.
Afișați Sugestia 1:
Trebuie să utilizați plan
Funcționează de două ori. O dată pentru a configura un multisession
apoi întoarce -te la parallel
.
Afișați Sugestia 2:
library(future) plan(multisession) # your code plan(sequential)
Am învățat cum să stabilim punct de referință mlr3
. În timp ce ne -am uitat doar la o singură sarcină și la o singură eșantionare, procedura se aplică cu ușurință pentru repere mai complexe, cu multe sarcini. În plus, am învățat cum să înțelegem rezultatele de referință. Nu în ultimul rând, este posibil să fi paralelizat punctul de referință dacă mai ai mai rămas ceva timp.