1. Učit se
  2. /
  3. Kurzy
  4. /
  5. Machine Learning s balíčkem caret v R

Connected

cvičení

Odstranění prediktorů s téměř nulovou variancí

Jak jsi viděl/a ve videu, v následující sérii cvičení budeš pracovat s datasetem blood-brain. Jde o biochemický dataset, jehož úkolem je předpovědět tuto hodnotu pro sadu biochemických sloučenin:

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

Tato hodnota poskytuje kvantitativní míru schopnosti sloučeniny prostupovat hematoencefalickou bariérou a pomáhá lépe pochopit biologické vlastnosti této bariéry.

Zajímavostí tohoto datasetu je, že obsahuje mnoho proměnných, z nichž velká část má extrémně nízkou varianci. To znamená, že tyto proměnné nesou velmi málo informací, protože jsou tvořeny převážně jedinou hodnotou (např. nulou).

Naštěstí caret nabízí užitečnou funkci nearZeroVar(), která takové proměnné odstraní a ušetří čas při modelování.

nearZeroVar() přijímá data x a sleduje poměr nejčastější hodnoty k druhé nejčastější hodnotě (freqCut) a podíl unikátních hodnot z celkového počtu vzorků (uniqueCut). Ve výchozím nastavení používá caret hodnoty freqCut = 19 a uniqueCut = 10, což je poměrně konzervativní přístup. Já preferuji trochu agresivnější nastavení: freqCut = 2 a uniqueCut = 20.

Pokyny

100 XP

bloodbrain_x a bloodbrain_y jsou načteny ve tvém pracovním prostředí.

  • Identifikuj prediktory s téměř nulovou variancí spuštěním funkce nearZeroVar() na blood-brain datasetu. Výsledek ulož do objektu remove_cols. Při volání nearZeroVar() použij freqCut = 2 a uniqueCut = 20.
  • Pomocí names() vytvoř vektor obsahující všechny názvy sloupců bloodbrain_x. Pojmenuj ho all_cols.
  • Vytvoř nový datový rámec bloodbrain_x_small s odstraněnými proměnnými s téměř nulovou variancí. Pomocí setdiff() vyber názvy sloupců, které chceš zachovat (tedy ty, které nechceš odstraňovat).