Ta bort prediktorer med nära noll-varians
Som du såg i videon kommer du i nästa övningsset att arbeta med blood-brain-datasetet. Det är ett biokemiskt dataset där uppgiften är att förutsäga följande värde för en uppsättning biokemiska föreningar:
log((concentration of compound in brain) /
(concentration of compound in blood))
Detta ger ett kvantitativt mått på föreningens förmåga att passera blod-hjärnbarriären och är användbart för att förstå de biologiska egenskaperna hos den barriären.
En intressant aspekt av det här datasetet är att det innehåller många variabler, och många av dem har extremt låg varians. Det innebär att dessa variabler innehåller mycket lite information – de består nästan uteslutande av ett enda värde (till exempel noll).
Tur nog innehåller caret en hjälpfunktion kallad nearZeroVar() för att ta bort sådana variabler och spara tid under modellering.
nearZeroVar() tar in data x och undersätter sedan kvoten mellan det vanligaste värdet och det näst vanligaste, freqCut, samt andelen distinkta värden av det totala antalet sampel, uniqueCut. Som standard använder caret freqCut = 19 och uniqueCut = 10, vilket är ganska konservativt. Jag föredrar att vara lite mer aggressiv och använda freqCut = 2 och uniqueCut = 20 när jag anropar nearZeroVar().
Den här övningen är en del av kursen
Maskininlärning med caret i R
Övningsinstruktioner
bloodbrain_x och bloodbrain_y är inlästa i din arbetsmiljö.
- Identifiera prediktorer med nära noll-varians genom att köra
nearZeroVar()på blood-brain-datasetet. Spara resultatet i ett objekt som heterremove_cols. AnvändfreqCut = 2ochuniqueCut = 20i anropet tillnearZeroVar(). - Använd
names()för att skapa en vektor med alla kolumnnamn ibloodbrain_x. Kalla denall_cols. - Skapa en ny dataram som heter
bloodbrain_x_smalldär variablerna med nära noll-varians är borttagna. Användsetdiff()för att isolera de kolumnnamn du vill behålla (det vill säga de du inte vill ta bort).
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
# 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(___, ___)]