Predictoren met bijna-nulvariantie verwijderen
Zoals je in de video zag, ga je voor de volgende reeks oefeningen werken met de blood-brain-gegevensset. Dit is een biochemische gegevensset waarin de taak is om de volgende waarde te voorspellen voor een set biochemische verbindingen:
log((concentration of compound in brain) /
(concentration of compound in blood))
Dit geeft een kwantitatieve maat voor het vermogen van de verbinding om de bloed-hersenbarrière te passeren, en is nuttig om de biologische eigenschappen van die barrière te begrijpen.
Een interessant aspect van deze gegevensset is dat hij veel variabelen bevat en dat veel van die variabelen een extreem lage variantie hebben. Dat betekent dat er heel weinig informatie in die variabelen zit, omdat ze grotendeels uit één enkele waarde bestaan (bijv. nul).
Gelukkig bevat caret een hulpfunctie genaamd nearZeroVar() om zulke variabelen te verwijderen en zo tijd te besparen tijdens het modelleren.
nearZeroVar() neemt gegevens x als input en bekijkt vervolgens de verhouding van de meest voorkomende waarde tot de op een na meest voorkomende waarde, freqCut, en het percentage verschillende waarden ten opzichte van het totaal aantal waarnemingen, uniqueCut. Standaard gebruikt caret freqCut = 19 en uniqueCut = 10, wat vrij conservatief is. Ik ben graag iets agressiever en gebruik freqCut = 2 en uniqueCut = 20 wanneer ik nearZeroVar() aanroep.
Deze oefening maakt deel uit van de cursus
Machine Learning met caret in R
Oefeninstructies
bloodbrain_x en bloodbrain_y zijn geladen in je werkruimte.
- Identificeer de predictoren met bijna-nulvariantie door
nearZeroVar()uit te voeren op de blood-brain-gegevensset. Sla het resultaat op als een objectremove_cols. GebruikfreqCut = 2enuniqueCut = 20in de aanroep vannearZeroVar(). - Gebruik
names()om een vector te maken met alle kolomnamen vanbloodbrain_x. Noem dezeall_cols. - Maak een nieuw data frame
bloodbrain_x_smallmet de variabelen met bijna-nulvariantie verwijderd. Gebruiksetdiff()om de kolomnamen te isoleren die je wilt behouden (dus die je niet wilt verwijderen.)
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
# Identify near zero variance predictors: remove_cols
remove_cols <- nearZeroVar(___, names = TRUE,
freqCut = ___, uniqueCut = ___)
# Get all column names from bloodbrain_x: all_cols
# Remove from data: bloodbrain_x_small
bloodbrain_x_small <- bloodbrain_x[ , setdiff(___, ___)]