Zacznij terazZacznij za darmo

Usuwanie predyktorów o bliskiej zerowej wariancji

Jak pokazano w filmie, w kolejnych ćwiczeniach będziesz pracować z zestawem danych blood-brain. To biochemiczny zbiór danych, w którym zadaniem jest przewidywanie następującej wartości dla zestawu związków biochemicznych:

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

Wartość ta stanowi ilościową miarę zdolności związku do przenikania przez barierę krew–mózg i jest przydatna do zrozumienia biologicznych właściwości tej bariery.

Ciekawą cechą tego zbioru danych jest to, że zawiera wiele zmiennych, z których wiele ma bardzo niską wariancję. Oznacza to, że zmienne te niosą bardzo mało informacji – w większości przyjmują jedną wartość (np. zero).

Na szczęście pakiet caret udostępnia funkcję narzędziową nearZeroVar(), która pozwala usunąć takie zmienne i przyspieszyć modelowanie.

Funkcja nearZeroVar() przyjmuje dane x, a następnie sprawdza stosunek najczęstszej wartości do drugiej najczęstszej (freqCut) oraz odsetek unikalnych wartości względem całkowitej liczby próbek (uniqueCut). Domyślnie caret używa freqCut = 19 i uniqueCut = 10, co jest dość zachowawczym podejściem. Warto być nieco bardziej agresywnym i stosować freqCut = 2 oraz uniqueCut = 20 przy wywołaniu nearZeroVar().

To ćwiczenie jest częścią kursu

Uczenie maszynowe z caret w R

Zobacz kurs

Instrukcje do ćwiczenia

bloodbrain_x i bloodbrain_y są wczytane do twojego środowiska pracy.

  • Zidentyfikuj predyktory o bliskiej zerowej wariancji, uruchamiając nearZeroVar() na zbiorze danych blood-brain. Wynik zapisz jako obiekt o nazwie remove_cols. Użyj freqCut = 2 i uniqueCut = 20 w wywołaniu nearZeroVar().
  • Użyj funkcji names(), aby utworzyć wektor zawierający wszystkie nazwy kolumn bloodbrain_x. Nazwij go all_cols.
  • Utwórz nową ramkę danych o nazwie bloodbrain_x_small z usuniętymi zmiennymi o bliskiej zerowej wariancji. Użyj funkcji setdiff(), aby wyodrębnić nazwy kolumn, które chcesz zachować (czyli te, których nie chcesz usuwać).

Interaktywne ćwiczenie praktyczne

Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.

# 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(___, ___)]
Edytuj i uruchom kod