Aan de slagGa gratis aan de slag

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

Cursus bekijken

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 object remove_cols. Gebruik freqCut = 2 en uniqueCut = 20 in de aanroep van nearZeroVar().
  • Gebruik names() om een vector te maken met alle kolomnamen van bloodbrain_x. Noem deze all_cols.
  • Maak een nieuw data frame bloodbrain_x_small met de variabelen met bijna-nulvariantie verwijderd. Gebruik setdiff() 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(___, ___)]
Code bewerken en uitvoeren