Kom igångKom igång gratis

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

Visa kurs

Ö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 heter remove_cols. Använd freqCut = 2 och uniqueCut = 20 i anropet till nearZeroVar().
  • Använd names() för att skapa en vektor med alla kolumnnamn i bloodbrain_x. Kalla den all_cols.
  • Skapa en ny dataram som heter bloodbrain_x_small där variablerna med nära noll-varians är borttagna. Använd setdiff() 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(___, ___)]
Redigera och kör kod