1. Nauka
  2. /
  3. Kursy
  4. /
  5. Uczenie maszynowe z caret w R

Connected

ćwiczenie

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().

Instrukcje

100 XP

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ć).