Nieuwe levels
Als een level van een categorische variabele zeldzaam is, kan het gebeuren dat het niet in de trainingsdata voorkomt. Als dat zeldzame level daarna wél in toekomstige data opduikt, weten downstream-modellen soms niet wat ze ermee moeten. Wanneer zulke nieuwe levels verschijnen, werken model.matrix of caret::dummyVars voor one-hot-encoding niet correct.
vtreat is een "veiligere" variant op model.matrix voor one-hot-encoding, omdat het nieuwe levels veilig kan afhandelen. vtreat gaat ook om met ontbrekende waarden in de data (zowel categorisch als continu).
In deze oefening zie je hoe vtreat categorische waarden verwerkt die niet in de trainingsset voorkwamen.
Het treatmentplan treatplan en de set variabelen newvars uit de vorige oefening zijn nog beschikbaar.
dframe en een nieuw gegevensframe testframe zijn vooraf ingeladen.
Deze oefening maakt deel uit van de cursus
Supervised Learning in R: Regressie
Oefeninstructies
- Print
dframeentestframe.- Staan er kleuren in
testframedie niet indframevoorkwamen?
- Staan er kleuren in
- Roep
prepare()aan om een one-hot-gecodeerde versie vantestframete maken (zonder de uitkomst). Noem dietestframe.treaten print hem.- Gebruik het argument
varRestrictionom te beperken tot alleen de variabelen innewvars. - Hoe zijn de gele rijen gecodeerd?
- Gebruik het argument
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
# treatplan is available
summary(treatplan)
# newvars is available
newvars
# Print dframe and testframe
___
___
# Use prepare() to one-hot-encode testframe
(testframe.treat <- ___(___, ___, varRestriction = ___))