Podczas budowania modelu CART (w szczególności drzewa klasyfikacji) przy użyciu rpart (w R) często interesujące jest wiedzieć, jakie znaczenie mają różne zmienne wprowadzone do modelu.
Tak więc moje pytanie brzmi: jakie wspólne miary istnieją dla uszeregowania / pomiaru znaczenia zmiennych uczestniczących zmiennych w modelu CART? I jak można to obliczyć za pomocą R (na przykład przy użyciu pakietu rpart)
Na przykład, oto sztuczny kod stworzony, abyś mógł pokazać na nim swoje rozwiązania. Ten przykład ma taką strukturę, że jest jasne, że zmienne x1 i x2 są „ważne”, podczas gdy (w pewnym sensie) x1 jest ważniejsze niż x2 (ponieważ x1 powinno mieć zastosowanie do większej liczby przypadków, a zatem mieć większy wpływ na strukturę danych, następnie x2).
set.seed(31431)
n <- 400
x1 <- rnorm(n)
x2 <- rnorm(n)
x3 <- rnorm(n)
x4 <- rnorm(n)
x5 <- rnorm(n)
X <- data.frame(x1,x2,x3,x4,x5)
y <- sample(letters[1:4], n, T)
y <- ifelse(X[,2] < -1 , "b", y)
y <- ifelse(X[,1] < 0 , "a", y)
require(rpart)
fit <- rpart(y~., X)
plot(fit); text(fit)
info.gain.rpart(fit) # your function - telling us on each variable how important it is
(referencje są zawsze mile widziane)
źródło
Odpowiedzi:
Zmienne znaczenie można ogólnie obliczyć na podstawie odpowiedniego zmniejszenia dokładności predykcyjnej, gdy predyktor będący przedmiotem zainteresowania zostanie usunięty (techniką permutacji, jak w Losowym lesie) lub pewną miarą zmniejszenia zanieczyszczenia węzła, ale przegląd (1) zawiera przegląd dostępne metody. Oczywistą alternatywą dla CART jest oczywiście RF ( randomForest , ale patrz także party ). W przypadku RF wskaźnik ważności Gini jest definiowany jako uśredniony spadek Gini zanieczyszczeń w węzłach we wszystkich drzewach w lesie (wynika z faktu, że wskaźnik zanieczyszczenia Gini dla danego węzła macierzystego jest większy niż wartość tej miary dla jego dwóch węzły potomne, patrz np. (2)).
Wiem, że Carolin Strobl i kol. wnieśli wiele badań symulacyjnych i eksperymentalnych dotyczących (warunkowego) zmiennego znaczenia w RF i CART (np. (3-4), ale istnieje wiele innych, lub jej teza, Zagadnienia statystyczne w uczeniu maszynowym - w kierunku niezawodnego wyboru podziału i Zmienne miary ważności ).
Według mojej wiedzy pakiet karetki (5) uwzględnia tylko funkcję straty dla przypadku regresji (tj. Średni błąd kwadratu). Być może zostanie dodany w najbliższej przyszłości (tak czy inaczej, przykład z przypadkiem klasyfikacji przez k-NN jest dostępny w pomocy online dla
dotPlot
).Jednak wydaje się, że Noel M. O'Boyle ma jakiś kod R dla zmiennej zmienności w CART .
Referencje
źródło
importance()
w randomForest ma indywidualne zmienne znaczenie ze średnim zmniejszeniem dokładności i średnim spadkiem gini.Poniższej funkcji (z pakietu Caret) można użyć do oceny zmiennego znaczenia drzew rpart. Poprawiłem błąd w funkcji Caret, gdy jest to jedyny węzeł główny w drzewie.
}
Poniższy kod r wygeneruje wyniki istotności dla „dopasowanego” drzewa rpart
źródło
Myślę, że chl właściwie odpowiedziała na pierwszą część:
W odniesieniu do drugiej części pytania:
Możesz znaleźć zmienną ważność za pomocą rpart, używając podsumowania (dopasowania). Daje to zmienne znaczenie wśród kilku innych rzeczy. Możesz przeczytać więcej na ten temat tutaj: https://cran.r-project.org/web/packages/rpart/rpart.pdf . Patrz strona 25.
źródło
names(result)
przedstawiavariable.importance
result$variable.importance
powinno pomóc?źródło