Słownik metodologiczny · Modele regresji

Ważność permutacyjna zmiennych – jak czytać ją w lesie losowym?

Ważność permutacyjna pokazuje, o ile pogarszają się przewidywania lasu losowego po przemieszaniu wartości jednej zmiennej. Wyjaśniamy, jak ją liczyć w ranger, dlaczego myli przy skorelowanych predyktorach i jak ją opisać.

Strona główna / Słownik / Ważność permutacyjna
W skrócie: Ważność permutacyjna to spadek trafności modelu po losowym przemieszaniu wartości jednej zmiennej, w lesie losowym liczony na obserwacjach OOB. Przy skorelowanych predyktorach faworyzuje zmienne skorelowane i nie jest miarą efektu przyczynowego.

Co to jest ważność permutacyjna?

Ważność permutacyjna zmiennych (ang. permutation variable importance) mówi, o ile pogarsza się trafność przewidywań modelu, gdy losowo przemieszasz wartości jednej zmiennej. Permutacja zrywa związek predyktora z wynikiem, ale zachowuje jego rozkład. Pomysł przypomina test permutacyjny, ale służy do opisu modelu, a nie do testowania hipotezy. Breiman (2001) liczył tę miarę w lasach losowych na obserwacjach spoza próby bootstrapowej danego drzewa (OOB). Ocena odbywa się więc na danych, których drzewo nie widziało, co ogranicza wpływ przeuczenia.

Jak ją liczyć?

Dla każdego drzewa liczysz błąd na obserwacjach OOB. Potem permutujesz jedną zmienną, liczysz błąd jeszcze raz i uśredniasz różnicę po drzewach. W regresji to wzrost błędu średniokwadratowego, w klasyfikacji – wzrost odsetka błędnych klasyfikacji. W pakiecie ranger ustawiasz importance = "permutation". Wynik bliski zera lub ujemny oznacza, że zmienna nie poprawia przewidywań.

Przykład

W symulowanych danych 500 osób wypalenie zależało w tym samym stopniu od stresu i snu. Ruminacje korelowały ze stresem na poziomie r = .88, ale nie miały własnego efektu. Las losowy (1000 drzew, R² OOB = .33) dał ważność: sen 0.578, stres 0.478, ruminacje 0.203, wiek 0.016. W regresji liniowej ruminacje były nieistotne (b = 0.067, p = .509). Las przypisał im jednak część ważności stresu, a stres wypadł słabiej niż równie silny sen.

Jak opisać w pracy

Ważność zmiennych oceniono metodą permutacyjną na obserwacjach spoza próby bootstrapowej (ranger, 1000 drzew). Najważniejsze były sen (0.578) i stres (0.478). Ruminacje, silnie skorelowane ze stresem (r = .88), uzyskały ważność 0.203, ale w regresji liniowej nie miały efektu niezależnego od stresu.

Na co uważać

  • Skorelowane predyktory. Zwykła permutacja zrywa też związek zmiennej z innymi predyktorami. Dlatego miara faworyzuje zmienne skorelowane. Strobl i in. (2008) zaproponowali warunkową ważność permutacyjną, która lepiej oddaje wpływ zmiennej. Przy silnej współliniowości interpretuj ważność skorelowanych zmiennych łącznie.
  • Typ predyktora. Strobl i in. (2007) pokazali, że ważność bywa obciążona, gdy predyktory różnią się skalą pomiaru lub liczbą kategorii.
  • Ważność to nie efekt przyczynowy. Nie mówi o kierunku ani sile związku.

Budowę lasu, dobór parametrów i wykresy zależności cząstkowej pokazuje wpis Drzewa decyzyjne i lasy losowe w badaniach naukowych. Ocenę trafności na nowych danych opisuje poradnik Modele predykcyjne: walidacja i kalibracja.

Przykład reprodukowalny

Ważność permutacyjna w R

Kod tworzy dane ze skorelowanymi predyktorami, dopasowuje las losowy w pakiecie ranger z ważnością permutacyjną i porównuje wynik z regresją liniową.

Ważność permutacyjna przy skorelowanych predyktorach

Dane wejściowe: wypalenie, stres, ruminacje, sen i wiek u 500 osób; ruminacje korelują ze stresem, ale nie wpływają na wypalenie (dane symulowane, set.seed(3361)).

Co odczytać: ważność zmiennych (wzrost błędu średniokwadratowego OOB po permutacji), korelację stresu z ruminacjami, R² OOB oraz współczynniki i p z regresji liniowej.

R
library(ranger)
set.seed(3361)
n <- 500
stres <- rnorm(n)
ruminacje <- 0.9 * stres + rnorm(n, sd = sqrt(1 - 0.81))   # r ≈ .90 ze stresem, bez własnego efektu
sen <- rnorm(n)
wiek <- rnorm(n)                                            # szum
wypalenie <- 0.6 * stres + 0.6 * sen + rnorm(n)
d <- data.frame(wypalenie, stres, ruminacje, sen, wiek)
las <- ranger(wypalenie ~ ., data = d, num.trees = 1000,
              importance = "permutation", seed = 3361)
round(sort(las$variable.importance, decreasing = TRUE), 3)  # wzrost MSE po permutacji (OOB)
round(c(r_stres_rumin = cor(stres, ruminacje), R2_OOB = las$r.squared), 3)
round(coef(summary(lm(wypalenie ~ ., data = d)))[, c(1, 4)], 3)
Wynik w R
      sen     stres ruminacje      wiek
    0.578     0.478     0.203     0.016
r_stres_rumin        R2_OOB
        0.884         0.334
            Estimate Pr(>|t|)
(Intercept)    0.036    0.425
stres          0.584    0.000
ruminacje      0.067    0.509
sen            0.572    0.000
wiek           0.042    0.355

Bibliografia oprogramowania

Wyniki pochodzą z uruchomienia pokazanego kodu w R 4.5.3 (pakiet ranger). W pracy podaj wersje faktycznie użytych pakietów (sessionInfo()).

  1. R: R Core Team. (2026). R: A language and environment for statistical computing (Version 4.5.3) [Computer software]. R Foundation for Statistical Computing. https://www.R-project.org/
  2. ranger (wersja 0.18.0): Wright, M. N., & Ziegler, A. (2017). ranger: A fast implementation of random forests for high dimensional data in C++ and R. Journal of Statistical Software, 77(1), 1–17. https://doi.org/10.18637/jss.v077.i01

Najczęstsze pytania

Czym ważność permutacyjna różni się od ważności opartej na nieczystości węzłów?

Ważność permutacyjna mierzy spadek trafności na obserwacjach OOB. Ważność oparta na nieczystości (importance = "impurity") sumuje poprawę dopasowania w podziałach na danych uczących i bywa obciążona na korzyść zmiennych z wieloma wartościami.

Co oznacza ujemna ważność permutacyjna zmiennej?

Po przemieszaniu zmiennej błąd był przypadkowo nieco mniejszy. Traktuj to jak ważność równą zeru: zmienna nie poprawia przewidywań.

Czy ważność permutacyjna zastąpi współczynniki regresji?

Nie. Ważność mówi, jak bardzo model korzysta ze zmiennej przy przewidywaniu, a nie o kierunku i wielkości związku. Kierunek pokażą wykresy zależności cząstkowej albo model regresji.

Powiązane hasła

Poradniki, w których użyjesz tego pojęcia

Potrzebujesz wsparcia w analizie danych?

Wybierz ofertę dopasowaną do pracy dyplomowej albo profesjonalnego projektu naukowego.

Wyceń analizęOferta dla studentów

Bibliografia i dalsza literatura naukowa (APA 7)

  1. Breiman, L. (2001). Random forests. Machine Learning, 45(1), 5–32. https://doi.org/10.1023/a:1010933404324 ● Otwarty dostęp: pełny tekst
  2. Strobl, C., Boulesteix, A.-L., Kneib, T., Augustin, T., & Zeileis, A. (2008). Conditional variable importance for random forests. BMC Bioinformatics, 9(1), Article 307. https://doi.org/10.1186/1471-2105-9-307 ● Otwarty dostęp
  3. Strobl, C., Boulesteix, A.-L., Zeileis, A., & Hothorn, T. (2007). Bias in random forest variable importance measures: Illustrations, sources and a solution. BMC Bioinformatics, 8(1), Article 25. https://doi.org/10.1186/1471-2105-8-25 ● Otwarty dostęp

Cytowania BibTeX

@article{breiman2001random, author={Breiman, Leo}, title={{Random forests}}, journal={Machine Learning}, year={2001}, volume={45}, number={1}, pages={5--32}, doi={10.1023/a:1010933404324}}
@article{strobl2008conditional, author={Strobl, Carolin and Boulesteix, Anne-Laure and Kneib, Thomas and Augustin, Thomas and Zeileis, Achim}, title={{Conditional variable importance for random forests}}, journal={BMC Bioinformatics}, year={2008}, volume={9}, number={1}, eid={307}, doi={10.1186/1471-2105-9-307}}
@article{strobl2007bias, author={Strobl, Carolin and Boulesteix, Anne-Laure and Zeileis, Achim and Hothorn, Torsten}, title={{Bias in random forest variable importance measures: Illustrations, sources and a solution}}, journal={BMC Bioinformatics}, year={2007}, volume={8}, number={1}, eid={25}, doi={10.1186/1471-2105-8-25}}
R