LoslegenKostenlos loslegen

Prädiktoren mit nahezu Null-Varianz entfernen

Wie du im Video gesehen hast, wirst du für die nächsten Aufgaben mit dem Blood-Brain-Datensatz arbeiten. Das ist ein biochemischer Datensatz, in dem folgende Größe für eine Reihe biochemischer Verbindungen vorhergesagt werden soll:

log((concentration of compound in brain) /
      (concentration of compound in blood))

Diese Größe liefert eine quantitative Kennzahl für die Fähigkeit einer Verbindung, die Blut-Hirn-Schranke zu überwinden, und hilft, die biologischen Eigenschaften dieser Schranke zu verstehen.

Ein interessanter Aspekt dieses Datensatzes ist, dass er viele Variablen enthält und viele davon eine extrem geringe Varianz aufweisen. Das bedeutet, dass in diesen Variablen sehr wenig Information steckt, weil sie größtenteils aus einem einzigen Wert bestehen (z. B. Null).

Zum Glück enthält caret eine Hilfsfunktion namens nearZeroVar(), um solche Variablen zu entfernen und beim Modellieren Zeit zu sparen.

nearZeroVar() nimmt Daten x entgegen und betrachtet dann das Verhältnis des häufigsten Werts zum zweithäufigsten Wert, freqCut, sowie den Prozentsatz verschiedener Werte relativ zur Anzahl der Gesamtsamples, uniqueCut. Standardmäßig verwendet caret freqCut = 19 und uniqueCut = 10, was recht konservativ ist. Ich bin gern etwas aggressiver und verwende freqCut = 2 und uniqueCut = 20, wenn ich nearZeroVar() aufrufe.

Diese Übung ist Teil des Kurses

Maschinelles Lernen mit caret in R

Kurs anzeigen

Anleitung zur Übung

bloodbrain_x und bloodbrain_y sind in deinem Workspace geladen.

  • Identifiziere die Prädiktoren mit nahezu Null-Varianz, indem du nearZeroVar() auf den Blood-Brain-Datensatz anwendest. Speichere das Ergebnis in einem Objekt namens remove_cols. Verwende freqCut = 2 und uniqueCut = 20 im Aufruf von nearZeroVar().
  • Verwende names(), um einen Vektor mit allen Spaltennamen von bloodbrain_x zu erstellen. Nenne ihn all_cols.
  • Erstelle einen neuen Data Frame namens bloodbrain_x_small, in dem die Variablen mit nahezu Null-Varianz entfernt sind. Nutze setdiff(), um die Spaltennamen herauszufiltern, die du behalten willst (also die, die du nicht entfernen möchtest).

Interaktive Übung

Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.

# 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 bearbeiten und ausführen