2012-04-11 8 views
19

Strona pomoc dla randomforest::randomforest() mówi:Co oznacza parametr "classwt" w funkcji RandomForest w pakiecie RandomForest w języku R?

„classwt - Przeorzy klas nie muszą sumować się do jednego ignorowana dla regresji.”.

Czy ustawienie parametru classwt może pomóc w przypadku dużych niewyważonych danych, np. priors klas różni się mocno?

Jak ustawić classwt podczas szkolenia modelu na zestawie danych z 3 klasami z wektorem wektorów równym (p1, p2, p3), a w zestawach testowych priors to (q1, q2, q3)?

+3

Nie jestem pewien co do twojego drugiego pytania, ale 'classwt' uważam, że jest używany podczas próbkowania z twoich danych, tak, że każda próbka dla każdego drzewa jest pobierana z twoich klas z tymi prawdopodobieństwami (po normalizacji). – joran

+0

warstwy dają taką samą wydajność jak classwt i są łatwiejsze do kontrolowania, sprawdź ten przewodnik na stronie SO: http://stats.stackexchange.com/questions/157714/r-package-for-weighted-random-forest-classwt-option/158030 # 158030 –

+0

@joran to stratafikacja, którą opisujesz. Classwt służy do ważenia próbek, kiedy można znaleźć optymalny punkt przerwania dla podziału węzłów i określić predykcję węzła podczas treningu. –

Odpowiedz

21

można ustawić pomoc parametru classwt, gdy masz ciężkie niezbalansowane dane - priors klas różni się mocno?

Tak, ustawienia wartości classwt mogą być przydatne w przypadku niezbalansowanych zestawów danych. Zgadzam się z Jororem, że wartości te są przekształcane w prawdopodobieństwa do pobierania próbek danych treningowych (zgodnie z argumentami Breimana w jego oryginalnym artykule).

Jak zestaw classwt gdy w zbiorze treningowym z 3 klas masz wektor priors równy (P1, P2, P3), aw teście zestaw priors są (Q1, Q2, Q3)?

Na szkoleniu można po prostu określić

rf <- randomForest(x=x, y=y, classwt=c(p1,p2,p3)) 

Do testu ustawiony żaden priors można stosować: 1) nie ma takiej opcji w predict metody pakietu lasy losowe; 2) wagi mają sens jedynie w odniesieniu do szkolenia modelu, a nie do przewidywania.

+0

Jak rozumiem priors (p1, p2, p3) są charakterystyczne dla ogólnej populacji, a nie dla konkretnego zbioru danych treningowych. Jeśli chcę przewidzieć klasy w zestawie danych testowych i wiem, że probabilje zajęć w zestawie to (q1, q2, q3) niż ustawienie classwt = c (q1, q2, q3) powinno pomóc przypadkowemu lasowi w lepszym poznaniu przestrzeni treningowej . – Qbik

+0

Nie, te wagi klas są specyficzne tylko dla zestawu treningowego. Na przykład, jeśli masz zrównoważony zestaw treningowy, nie ma potrzeby używania parametru 'classwt'. Ale w tym samym czasie możesz mieć niezbalansowany zestaw testów i oczekuję, że zmiana klasy weghts nie poprawi w takim przypadku przewidywania zestawu testów. Innymi słowy, używając 'classwt' możesz zwiększyć dokładność przewidywania dla jednej z klas i jednocześnie zmniejszyć dla innej. Możesz grać z tym parametrem i na przykład patrzeć na statystyki przewidywania ustawień OOB. – DrDom

Powiązane problemy