(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.
Vă rugăm să activați JavaScript și să reîncărcați pagina,
Sau descărcați fișierele sursă de la GitHub și rulați codul local.
După acest exercițiu, ar trebui să înțelegeți și să puteți efectua selecția de funcții folosind funcții de înveliș cu mlr3fselect
. De asemenea, ar trebui să puteți integra diverse măsuri de performanță și să calculați eroarea de generalizare.
Pe lângă filtrare, metodele de înveliș sunt o altă variantă a selectării funcțiilor. În timp ce în condițiile de filtrare pentru valorile caracteristicilor sunt setate, în metodele de înveliș, elevul este aplicat la diferite subseturi ale setului de caracteristici. Pe măsură ce modelele trebuie să fie reamenajate, această metodă este costisitoare din punct de vedere calcul.
Pentru metode de înveliș, avem nevoie de pachet mlr3fselect
la a cărui inimă următoarele R6
Clasele sunt:
FSelectInstanceSingleCrit
,FSelectInstanceMultiCrit
: Aceste două clase descriu problema de selecție a caracteristicilor și stocați rezultatele.FSelector
: Această clasă este clasa de bază pentru implementările algoritmilor de selecție a caracteristicilor.
Încărcăm cele mai importante pachete și folosim o sămânță fixă pentru reproductibilitate.
library(mlr3verse) library(data.table) library(mlr3fselect) set.seed(7891)
În acest exercițiu, vom folosi german_credit
date și elev classif.ranger
:
task_gc = tsk("german_credit") lrn_ranger = lrn("classif.ranger")
1.1 Creați cadrul
Creați un FSelectInstanceSingleCrit
obiect folosind fsi()
. Instanța ar trebui să utilizeze o validare încrucișată de 3 ori, precizia clasificării ca measure
și încetează după 20 de evaluări. Pentru simplificare, luați în considerare doar caracteristicile age
, amount
, credit_history
şi duration
.
Sugestie 1:
task_gc$select(...) instance = fsi( task = ..., learner = ..., resampling = ..., measure = ..., terminator = ... )
1.2 Porniți selecția caracteristicilor
Porniți pasul de selecție a caracteristicilor selectând sequential
folosind FSelector
clasa via fs()
și trece FSelectInstanceSingleCrit
Obiectiv la $optimize()
metoda inițializată FSelector
obiect.
Sugestie 1:
Sugestie 2:
fselector = fs(...) fselector$optimize(...)
1.3 Evaluați
Vizualizați cele patru caracteristici și precizia din arhiva de instanță pentru fiecare din primele două loturi.
Sugestie 1:
instance$archive$data(...)
Sugestie 2:
instance$archive$data(batch_nr == ..., ...)
1.4 Antrenament model
Ce caracteristici trebuie selectate? Antrenează modelul.
Sugestie 1:
Comparați valorile de precizie pentru diferitele combinații de caracteristici și selectați în consecință caracteristicile (caracteristicile).
Sugestie 2:
task_gc = ... task_gc$select(...) lrn_ranger$train(...)
Pentru a optimiza valorile de performanță multiple, aceiași pași trebuie urmați ca mai sus, cu excepția faptului că sunt transmise mai multe valori. Creați un obiect „Stanstance” ca mai sus, luând în considerare măsurile classif.tpr
şi classif.tnr
. Pentru al doilea pas, utilizarea random search
Și aruncați o privire asupra rezultatelor într -un al treilea pas.
Folosim din nou german_credit
Date:
task_gc = tsk("german_credit")
Sugestie 1:
fselector = fs(...) fselector$...(...)
features = unlist(lapply(...)) cbind(features,...)
Reeșantionarea cuibărită permite găsirea estimatorilor de performanță nepărtinitori pentru selectarea caracteristicilor. În mlr3
Acest lucru este posibil cu clasa AutoFSelector
a cărui instanță poate fi creată de funcție auto_fselector()
.
3.1 Creați un AutoFSelector
Exemplu
Implementați un AutoFSelector
Obiect care folosește căutare aleatorie pentru a găsi o selecție de caracteristici care oferă cea mai mare precizie pentru o regresie logistică cu reeșantionarea de reținere. Ar trebui să se încheie după 10 evaluări.
Sugestie 1:
afs = auto_fselector( fselector = ..., learner = ..., resampling = ..., measure = ..., terminator = ... )
3.2 Benchmark
Comparați AutoFSelector
cu o regresie logistică normală folosind validare încrucișată de 3 ori.
Sugestie 1:
AutoFSelector
moștenește de la Learner
Clasa de bază, motiv pentru care poate fi folosită ca orice alt elev.
Sugestie 2:
Implementați o grilă de referință și agregate rezultatul.
- Metodele de înveliș calculează măsurile de performanță pentru diferite combinații de caracteristici pentru a efectua selecția de caracteristici.
- Sunt scumpe din punct de vedere calculat, deoarece trebuie să fie montate mai multe modele.
-
AutoFSelector
moștenește de laLearner
Clasa de bază, motiv pentru care poate fi folosită ca orice alt elev.