La tua intuizione è corretta. Questa risposta la illustra semplicemente su un esempio.
È infatti un malinteso comune che CART / RF siano in qualche modo robusti per gli outlier.
Per illustrare la mancanza di solidità della RF alla presenza di un singolo outlier, possiamo (leggermente) modificare il codice usato nella risposta di Soren Havelund Welling per mostrare che un singolo "outlier" y è sufficiente per influenzare completamente il modello RF montato. Ad esempio, se calcoliamo l'errore di predizione medio delle osservazioni non contaminate in funzione della distanza tra il valore anomalo e il resto dei dati, possiamo vedere (immagine sotto) che introduce un singolo valore anomalo (sostituendo una delle osservazioni originali con un valore arbitrario nello spazio 'y') è sufficiente estrarre le previsioni del modello RF arbitrariamente lontano dai valori che avrebbero avuto se calcolati sui dati originali (non contaminati):
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")
Quanto lontano? Nell'esempio sopra, il singolo outlier ha cambiato così tanto l'adattamento che l'osservazione dell'errore di predizione medio (sull'incontaminato) è ora di 1-2 ordini di grandezza più grande di quanto sarebbe stata se il modello fosse stato adattato ai dati non contaminati.
Quindi non è vero che un singolo outlier non può influenzare l'adattamento RF.
Inoltre, come faccio notare altrove , i valori anomali sono molto più difficili da gestire quando ce ne sono potenzialmente diversi (sebbene non debbano essere una grande proporzione dei dati per mostrare i loro effetti). Naturalmente, i dati contaminati possono contenere più di un valore anomalo; per misurare l'impatto di diversi valori anomali sull'adattamento RF, confrontare il diagramma a sinistra ottenuto dalla RF sui dati non contaminati con il diagramma a destra ottenuto spostando arbitrariamente il 5% dei valori delle risposte (il codice è sotto la risposta) .
Infine, nel contesto della regressione, è importante sottolineare che i valori anomali possono distinguersi dalla maggior parte dei dati sia nello spazio di progettazione che in quello di risposta (1). Nel contesto specifico della RF, i valori anomali di progettazione influenzeranno la stima degli iperparametri. Tuttavia, questo secondo effetto è più evidente quando il numero di dimensioni è elevato.
Ciò che osserviamo qui è un caso particolare di un risultato più generale. L'estrema sensibilità ai valori anomali dei metodi multivariati di adattamento dei dati basati su funzioni di perdita convessa è stata riscoperta più volte. Vedere (2) per un'illustrazione nel contesto specifico dei metodi ML.
Modificare.
Fortunatamente, mentre l'algoritmo CART / RF di base non è decisamente robusto per i valori anomali, è possibile (e abbastanza semplice) modificare la procedura per conferire robustezza ai valori anomali "y". Mi concentrerò ora sulle RF di regressione (poiché questo è più specificamente l'oggetto della domanda del PO). Più precisamente, scrivendo il criterio di divisione per un nodo arbitrario come:t
s∗=argmaxs[pLvar(tL(s))+pRvar(tR(s))]
dove e stanno emergendo nodi dipendenti dalla scelta di ( e sono funzioni implicite di ) e
indica la frazione di dati che ricade sul nodo figlio sinistro e è la condivisione di dati in . Quindi, si può conferire robustezza dello spazio "y" agli alberi di regressione (e quindi alle RF) sostituendo la funzione di varianza utilizzata nella definizione originale con una valida alternativa. Questo è essenzialmente l'approccio usato in (4) in cui la varianza è sostituita da un robusto stimatore M di scala.tLtRs∗tLtRspLtLpR=1−pLtR
- (1) Smascherare valori anomali multivariati e punti di leva. Peter J. Rousseeuw e Bert C. van Zomeren Journal of American Statistical Association Vol. 85, n. 411 (settembre 1990), pagg. 633-639
- (2) Il rumore di classificazione casuale sconfigge tutti i potenziatori del potenziale convesso. Philip M. Long e Rocco A. Servedio (2008). http://dl.acm.org/citation.cfm?id=1390233
- (3) C. Becker e U. Gather (1999). Il punto di rottura del mascheramento delle regole di identificazione dei valori anomali multivariati.
- (4) Galimberti, G., Pillati, M., & Soffritti, G. (2007). Alberi di regressione robusti basati su stimatori 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)]))