W jaki sposób losowe lasy nie są wrażliwe na wartości odstające?

33

Czytałem w kilku źródłach, w tym w tym , że Lasy Losowe nie są wrażliwe na wartości odstające (na przykład tak, jak regresja logistyczna i inne metody ML).

Jednak dwie intuicje mówią mi inaczej:

  1. Ilekroć budowane jest drzewo decyzyjne, wszystkie punkty muszą być klasyfikowane. Oznacza to, że nawet wartości odstające zostaną sklasyfikowane, a zatem wpłyną na drzewa decyzyjne, w których zostały wybrane podczas wzmocnienia.

  2. Bootstrapping jest częścią tego, jak RandomForest robi podpróbkowanie. Bootstrapping jest podatny na wartości odstające.

Czy istnieje sposób na pogodzenie mojej intuicji dotyczącej jej wrażliwości na wartości odstające, ze źródłami, które się nie zgadzają?

Hunle
źródło
Odpowiedź poniżej jest bardzo dobra. Intuicyjna odpowiedź jest taka, że ​​drzewo decyzyjne działa na podziały, a podziały nie są wrażliwe na wartości odstające: podział musi rozpaść się gdziekolwiek między dwiema grupami punktów, aby je podzielić.
Wayne,
Więc przypuszczam, że jeśli min_samples_leaf_nodetak 1, to może być podatne na wartości odstające.
Hunle,
tak próbki min_sampl i próbka ładowania początkowego mogą całkowicie usunąć wpływ wartości odstających 1b w regresji RF
Soren Havelund Welling
Niektórzy statystycy uzyskują wizję tunelową na temat tych danych wewnętrznych, którą można przewidzieć i zrozumieć. Pielęgnuj wartości odstające jako „znane niewiadome” i zastanawiaj się, czy Twój model biznesowy jest wobec nich niestabilny. Niektóre wartości odstające są zasadniczo nieprzewidywalne, ale ich wpływ jest bardzo realny ... parafraza „Czarnego łabędzia”
N. Taleba

Odpowiedzi:

21

Twoja intuicja jest prawidłowa. Ta odpowiedź jedynie ilustruje to na przykładzie.

Rzeczywiście powszechne jest błędne przekonanie, że CART / RF są w pewnym stopniu odporne na wartości odstające.

Aby zilustrować brak odporności RF na obecność pojedynczych wartości odstających, możemy (lekko) zmodyfikować kod użyty w powyższej odpowiedzi Sorena Havelunda Wellinga, aby pokazać, że pojedyncze wartości „y” są wystarczające, aby całkowicie przechylić dopasowany model RF. Na przykład, jeśli obliczymy średni błąd prognozowania niezanieczyszczonych obserwacji jako funkcję odległości między wartością odstającą a resztą danych, możemy zobaczyć (zdjęcie poniżej), że wprowadzenie pojedynczej wartości odstającej (poprzez zastąpienie jednej z oryginalnych obserwacji przez dowolną wartość w przestrzeni „y”) wystarczy wyciągnąć przewidywania modelu RF arbitralnie daleko od wartości, które mieliby, gdyby były obliczone na oryginalnych (niezanieczyszczonych) danych:

 library(forestFloor)
library(randomForest)
library(rgl)
set.seed(1)

X = data.frame(replicate(2,runif(2000)-.5))
y = -sqrt((X[,1])^4+(X[,2])^4)
X[1,]=c(0,0);
y2<-y
rg<-randomForest(X,y)   #RF model fitted without the outlier
outlier<-rel_prediction_error<-rep(NA,10)

for(i in 1:10){
    y2[1]=100*i+2
    rf=randomForest(X,y2)   #RF model fitted with the outlier
    rel_prediction_error[i]<-mean(abs(rf$predict[-1]-y2[-1]))/mean(abs(rg$predict[-1]-y[-1]))
    outlier[i]<-y2[1]
}
plot(outlier,rel_prediction_error,type='l',ylab="Mean prediction error (on the uncontaminated observations) \\\ relative to the fit on clean data",xlab="Distance of the outlier")

wprowadź opis zdjęcia tutaj

Jak daleko? W powyższym przykładzie pojedyncza wartość odstała tak bardzo zmieniła dopasowanie, że średni błąd prognozowania (na niezanieczyszczonych) obserwacjach jest teraz o 1–2 rzędy wielkości większy niż byłby, gdyby model został dopasowany na niezanieczyszczonych danych.

Nie jest więc prawdą, że pojedyncza wartość odstająca nie może wpływać na dopasowanie RF.

Ponadto, jak wskazują, gdzie indziej , odstających są dużo trudniejsze do czynienia, gdy istnieją potencjalnie kilka z nich (choć nie musi być duża część danych na ich skutki, aby pokazać się). Oczywiście, zanieczyszczone dane mogą zawierać więcej niż jedną wartość odstającą; aby zmierzyć wpływ kilku wartości odstających na dopasowanie RF, porównaj wykres po lewej uzyskany z RF na niezanieczyszczonych danych z wykresem po prawej uzyskanym przez dowolne przesunięcie 5% wartości odpowiedzi (kod znajduje się poniżej odpowiedzi) .

wprowadź opis zdjęcia tutaj wprowadź opis zdjęcia tutaj

Na koniec, w kontekście regresji, należy zauważyć, że wartości odstające mogą wyróżniać się z dużej ilości danych zarówno w przestrzeni projektowej, jak i odpowiedzi (1). W specyficznym kontekście RF, wartości odstające od projektu wpłyną na oszacowanie hiperparametrów. Jednak ten drugi efekt jest bardziej widoczny, gdy liczba wymiarów jest duża.

To, co obserwujemy tutaj, jest szczególnym przypadkiem bardziej ogólnego wyniku. Niezwykła wrażliwość na wartości odstające wielowymiarowych metod dopasowania danych opartych na wypukłych funkcjach utraty została wielokrotnie odkryta. Zobacz (2) ilustrację w specyficznym kontekście metod ML.

Edytować.

t

s=argmaxs[pL.var(tL.(s))+pRvar(tR(s))]

tL.tRstL.tRspL.tL.pR=1-pL.tR. Następnie można nadać drzewom regresji (a tym samym RF) odporność przestrzeni „y”, zastępując funkcjonalność wariancji zastosowaną w oryginalnej definicji solidną alternatywą. Jest to w istocie podejście zastosowane w (4), w którym wariancja jest zastąpiona solidnym M-estymatorem skali.

  • (1) Demaskowanie wielowymiarowych wartości odstających i punktów dźwigni. Peter J. Rousseeuw i Bert C. van Zomeren Journal of American Statistics Association vol. 85, nr 411 (wrzesień 1990), str. 633–639
  • (2) Losowy hałas klasyfikacyjny pokonuje wszystkie wypukłe potencjalne wzmacniacze. Philip M. Long i Rocco A. Servedio (2008). http://dl.acm.org/citation.cfm?id=1390233
  • (3) C. Becker i U. Gather (1999). Punkt podziału maskowania w wielowymiarowych zasadach identyfikacji wartości odstających.
  • (4) Galimberti, G., Pillati, M., i Soffritti, G. (2007). Solidne drzewa regresji oparte na estymatorach M. Statistica, LXVII, 173–190.

    library(forestFloor)
    library(randomForest)
    library(rgl)
    set.seed(1)

    X<-data.frame(replicate(2,runif(2000)-.5))
    y<--sqrt((X[,1])^4+(X[,2])^4)
    Col<-fcol(X,1:2) #make colour pallete by x1 and x2
    #insert outlier2 and colour it black
    y2<-y;Col2<-Col
    y2[1:100]<-rnorm(100,200,1);    #outliers
    Col[1:100]="#000000FF" #black

    #plot training set
    plot3d(X[,1],X[,2],y,col=Col)
    rf=randomForest(X,y)    #RF on clean data
    rg=randomForest(X,y2)   #RF on contaminated data
    vec.plot(rg,X,1:2,col=Col,grid.lines=200)
    mean(abs(rf$predict[-c(1:100)]-y[-c(1:100)]))
    mean(abs(rg$predict[-c(1:100)]-y2[-c(1:100)]))
użytkownik603
źródło
Dziękuję za szczegółową odpowiedź. Jeśli w tej samej wielkoformatowej przestrzeni jest kilka wartości odstających, nasuwa się pytanie, jakie są nasze kryteria nazywania „wartości odstającej”? W takim przypadku zastanawiam się, jakie hiperparametry można ustawić, aby móc określić jakieś kryteria dla wartości odstającej a priori?
Hunle,
1
Do mojej odpowiedzi dodałem moje wcześniejsze komentarze. Mam nadzieję, że teraz lepiej odpowiedzieć na twoje pytanie!
user603
1
Dzięki. Jakie są pi sw formule?
Hunle,
1
Dlaczego połączone wartości odstające (1a + 2) są złe? W twoim przykładzie model RF idealnie pasuje do struktury danych, 99,99% OOB MSE. Struktura modelu środkowej krainy między dwoma klastrami jest dość szorstka, tak, i jest bardziej produktem modelu niż danych. Jednak żadne wnioski i / lub prognozy nie powinny znajdować się w tym nieznanym obszarze, więc nie ma to znaczenia. Absolutna odporność na wartości odstające nieuchronnie ignoruje rzadkie, ale być może ważne możliwe zdarzenia. Większość algorytmów ML domyślnie przyjmuje pozycję pośrednią między odpornością a „elastycznością”, ale można je modyfikować w celu zwiększenia odporności.
Soren Havelund Welling,
1
@ user603 Nic innego do dodania do dyskusji technicznej, poza tym, że Serce ciemności było moją ulubioną książką jako dziecko, a próba Franza Kafki była na drugim miejscu (mogłaby być pierwsza, gdyby została ukończona i być może napisana po angielsku - wtedy znowu, może było dobrze, że nie było skończone). Tak naprawdę nie myślałem o tym z punktu widzenia wartości odstających, poza tym, że uważałem Heart of Darkness and The Trials za (dobre) wartości odstające między morzem „poważnej literatury” BS. Musiałem przeczytać i wykonać BS jasnych i ciemnych obrazów i podobna analiza na.
Mark L. Stone,
11

wartość odstająca 1a: ta wartość odstająca ma jedną lub więcej skrajnych wartości cech i jest umieszczona z dala od jakiejkolwiek innej próbki. Wartość odstająca wpłynie na początkowe podziały drzew jak każda inna próbka, więc nie ma silnego wpływu. Będzie miał niewielką odległość od jakiejkolwiek innej próbki i zdefiniuje strukturę modelu tylko w odległej części przestrzeni cech. Podczas przewidywania większość nowych próbek prawdopodobnie nie będzie podobna do tej wartości odstającej i rzadko kończy się w tym samym węźle końcowym. Ponadto drzewa decyzyjne traktują cechy tak, jakby były porządkowe (ranking). Wartość jest mniejsza / równa lub większa niż punkt przerwania, dlatego nie ma znaczenia, czy wartość cechy jest skrajną wartością odstającą.

wartość odstająca 1b: Do celów klasyfikacji jedna pojedyncza próbka może być uznana za wartość odstającą, jeżeli jest osadzona pośrodku wielu próbek innej klasy. Opisałem wcześniej, w jaki sposób na domyślny model RF wpłynie ta jedna próbka nieparzystej klasy, ale tylko bardzo blisko próbki.

wartość odstająca 2: ta wartość odstająca ma ekstremalną wartość docelową, być może wielokrotnie wyższą niż jakiekolwiek inne wartości, ale wartości funkcji są normalne. Frakcja 0,631 drzew będzie miała węzeł końcowy z tą próbką. Struktura modelu zostanie zmieniona lokalnie blisko wartości odstającej. Zauważ, że wpływ na strukturę modelu ma głównie równoległość do osi elementu, ponieważ węzły są dzielone jednorodnie.

y=(x14+x2)4)12)x1x2)

wprowadź opis zdjęcia tutaj

library(forestFloor)
library(randomForest)
library(rgl)
set.seed(1)

X = data.frame(replicate(2,runif(2000)-.5))
y = -sqrt((X[,1])^4+(X[,2])^4)^1
Col = fcol(X,1:2) #make colour pallete by x1 and x2
#insert outlier2 and colour it black
X[1,] = c(0,0);y[1]=2 ;Col[1] = "#000000FF" #black

#plot training set
plot3d(X[,1],X[,2],y,col=Col)

rf = randomForest(X,y)
vec.plot(rf,X,1:2,col=Col,grid.lines = 400)

EDYCJA: komentarz do użytkownika603

Tak w przypadku skrajnych wartości odstających na skali docelowej, należy rozważyć przekształcenie skali docelowej przed uruchomieniem RF. Dodałem poniżej funkcję robustModel (), która poprawia randomForest. Innym rozwiązaniem byłoby zalogowanie transformacji przed treningiem.

.
##---code by user603
library(forestFloor)
library(randomForest)
library(rgl)
set.seed(1)

X<-data.frame(replicate(2,runif(2000)-.5))
y<--sqrt((X[,1])^4+(X[,2])^4)
Col<-fcol(X,1:2) #make colour pallete by x1 and x2

#insert outlier2 and colour it black
y2<-y;Col2<-Col
y2[1:100]<-rnorm(100,200,1);    #outliers
Col2[1:100]="#000000FF" #black
##---

#function to make models robust
robustModel = function(model,keep.outliers=TRUE) {
  f = function(X,y,lim=c(0.1,.9),keep.outliers="dummy",...) {
  limits = quantile(y,lim)
  if(keep.outliers) {#keep but reduce outliers
  y[limits[1]>y] = limits[1] #lower limit
  y[limits[2]<y] = limits[2] #upper limit
  } else {#completely remove outliers
    thrashThese = mapply("||",limits[1]>y,limits[2]>y)
    y = y[thrashThese]
    X = X[thrashThese,]
  }
  obj = model(x=X,y=y,...)
  class(obj) = c("robustMod",class(obj))
  return(obj)
  }
  formals(f)$keep.outliers = keep.outliers
  return(f)
}

robustRF = robustModel(randomForest) #make RF robust
rh = robustRF(X,y2,sampsize=250)     #train robustRF
vec.plot(rh,X,1:2,col=Col2)          #plot model surface
mean(abs(rh$predict[-c(1:100)]-y2[-c(1:100)]))

wprowadź opis zdjęcia tutaj

Soren Havelund Welling
źródło
Piszesz „nie wpłynie to na żadną inną prognozę”. Jeśli przesuniesz swoją pojedynczą wartość odstającą y[1]=200, zobaczysz, że pojedynczo powoduje błąd prognozy na niezanieczyszczonych obserwacjach skokowy o współczynnik 20!
user603,
@ user603 To prawda, że ​​w takich przypadkach skala docelowa może zostać przekształcona monotonicznie przed przekazaniem jej do RF. Dodałem „robustModel: czyni modele solidnymi” do mojej odpowiedzi ..... oczywiście przewidywanie takich losowych wartości odstających (typów 2) pozostaje niemożliwe, ale pozostała struktura modelu nie musi ucierpieć
Soren Havelund Welling
Przekształcenie dziennika jest nie na ogół rozwiązaniem przeciwko wartościom odstającym (jedynie ukrywa problem). Proponowane przez ciebie uzasadnienie RF jest zasadniczo podejściem zalecanym w Galimberti, G., Pillati, M. i Soffritti, G. (patrz moja odpowiedź). Główną różnicą jest to, że twoje podejście „solidneModel” ma maksymalny punkt przebicia 25% w przestrzeni odpowiedzi (może wytrzymać 25% lub dowolne wartości „Y”), podczas gdy ich bdp wynosi 50%. Zauważ, że żadne podejście jest odporny na wartości odstające w przestrzeni projektowej
user603
8

Sam algorytm losowego lasu nie jest odporny na wartości odstające, ale bazowy uczeń, na którym się opiera: drzewo decyzyjne . Drzewa decyzyjne izolują nietypowe obserwacje na małe liście (tj. Małe podprzestrzenie pierwotnej przestrzeni). Ponadto drzewa decyzyjne są modelami lokalnymi . W przeciwieństwie do regresji liniowej, w której to samo równanie obowiązuje dla całej przestrzeni, bardzo prosty model jest dopasowywany lokalnie do każdej podprzestrzeni (tj. Do każdego liścia).

  • W przypadku regresji jest to ogólnie model regresji bardzo niskiego rzędu (zwykle tylko średnia z obserwacji w liściu).
  • Do klasyfikacji jest głosowanie większością głosów.

Dlatego na przykład w przypadku regresji wartości ekstremalne nie wpływają na cały model, ponieważ są one uśredniane lokalnie. Nie ma to wpływu na dopasowanie do innych wartości.

W rzeczywistości ta pożądana właściwość przenosi się na inne struktury drzewiaste, takie jak dendogramy. Hierarchiczne grupowanie, na przykład, od dawna wykorzystywane jest do czyszczenia danych, ponieważ automatycznie izoluje nieprawidłowe obserwacje na małe klastry. Patrz na przykład Loureiro i in. (2004). Wykrywanie wartości odstających przy użyciu metod grupowania: aplikacja do czyszczenia danych .

Krótko mówiąc, RF dziedziczy swoją niewrażliwość na wartości odstające od partycjonowania rekurencyjnego i dopasowywania modelu lokalnego .

Zauważ, że drzewa decyzyjne są modelami o niskim odchyleniu, ale o dużej wariancji: ich struktura jest podatna na zmiany po niewielkiej modyfikacji zestawu treningowego (usunięcie lub dodanie kilku obserwacji). Ale nie należy tego mylić z wrażliwością na wartości odstające, to inna sprawa.

Antoine
źródło
Rzeczywiście rozważałem zastosowanie metody klastrowania, jak sugerujesz, do wykrywania wartości odstających. Ale nie jestem pewien, gdzie zastosować klastrowanie. Powinna ona być stosowana do labeledlub unlabeleddane? I w jaki sposób można osiągnąć takie grupowanie w przypadku danych heterogenicznych, które zawierają zarówno cechy jakościowe, jak i liczbowe?
Hunle