In che modo le foreste casuali non sono sensibili ai valori anomali?


33

Ho letto in alcune fonti, tra cui questa , che le foreste casuali non sono sensibili ai valori anomali (come lo sono la regressione logistica e altri metodi ML).

Tuttavia, due pezzi di intuizione mi dicono diversamente:

  1. Ogni volta che viene costruito un albero decisionale, tutti i punti devono essere classificati. Ciò significa che anche i valori anomali verranno classificati, e quindi influenzeranno gli alberi decisionali in cui sono stati selezionati durante il potenziamento.

  2. Il bootstrap fa parte del modo in cui un RandomForest esegue il sottocampionamento. Il bootstrap è suscettibile agli outlier.

Esiste un modo per conciliare la mia intuizione sulla sua sensibilità ai valori anomali, con fonti che non sono d'accordo?


La risposta, di seguito, è molto buona. La risposta intuitiva è che un albero decisionale funziona su divisioni e divisioni non sono sensibili ai valori anomali: una divisione deve cadere in qualsiasi punto tra due gruppi di punti per dividerli.
Wayne,

Quindi suppongo che se lo min_samples_leaf_nodeè 1, allora potrebbe essere suscettibile agli outlier.
Hunle,

si min_samples e bootstrap sample possono rimuovere completamente l'influenza degli outlier 1b nella regressione RF
Soren Havelund Welling,

Alcuni statistici ottengono una visione a tunnel su quegli inlier, che si possono prevedere e comprendere. Accarezza gli outlier come "sconosciuti noti" e chiediti se il tuo modello di business è fragile nei loro confronti. Alcuni valori anomali sono fondamentalmente imprevedibili, ma il loro impatto è molto reale ... una parafrasi di N. Taleb, "Black Swan"
Soren Havelund Welling,

Risposte:


21

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")

inserisci qui la descrizione dell'immagine

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) .

inserisci qui la descrizione dell'immagine inserisci qui la descrizione dell'immagine

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.tLtRstLtRspLtLpR=1pLtR

  • (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)]))

Grazie per la tua risposta dettagliata. Se ci sono diversi valori anomali nello stesso spazio di alta dimensione, si pone la domanda quali sono i nostri criteri per chiamare un "valore anomalo"? In tal caso, mi chiedo quali parametri iper possano essere impostati in modo da poter specificare un tipo di criteri per un outlier a priori?
Hunle,

1
Ho aggiunto i miei commenti precedenti alla mia risposta. Spero che ora faccia un lavoro migliore nel rispondere alla tua domanda!
user603

1
Grazie. Cosa sono pe snella formula?
Hunle,

1
Perché i valori anomali combinati (1a + 2) sono cattivi? Nel tuo esempio, il modello RF si adatta perfettamente alla struttura dei dati, MSE OOB 99,99%. La struttura del modello della terra di mezzo tra i due cluster è piuttosto approssimativa, sì, e più un prodotto del modello che dei dati. Ma nessuna inferenza e / o previsione dovrebbe essere in questa area sconosciuta, quindi non importa. La robustezza assoluta verso gli outlier è inevitabilmente ignorare eventi rari ma forse importanti importanti. La maggior parte degli alghe ML dovrebbe assumere una posizione di mezzo tra robustezza e "flessibilità", ma può essere modificata per aumentarne la robustezza.
Soren Havelund Welling,

1
@ user603 Nulla da aggiungere alla discussione tecnica, tranne che Heart of Darkness era il mio libro preferito da bambino, con The Trial di Franz Kafka al secondo (potrebbe essere stato il primo se fosse stato finito e forse scritto in inglese - poi di nuovo, forse era giusto che non fosse finito). Non ci ho pensato davvero dal punto di vista esteriore, a parte quello che ho considerato Heart of Darkness e The Trials come (buoni) valori anomali nel mare della "letteratura seria" di BS che dovevo leggere e fare con BS luce e oscurità l'analisi simile su.
Mark L. Stone,

11

valore anomalo 1a: questo valore anomalo ha uno o più valori estremi delle caratteristiche ed è posizionato distante da qualsiasi altro campione. Il valore anomalo influenzerà le spaccature iniziali degli alberi come qualsiasi altro campione, quindi nessuna forte influenza. Avrà una bassa vicinanza a qualsiasi altro campione e definirà la struttura del modello solo in una parte remota dello spazio delle caratteristiche. Durante la previsione è probabile che la maggior parte dei nuovi campioni non sia simile a questo valore anomalo e raramente finirà nello stesso nodo terminale. Inoltre, gli alberi delle decisioni considerano le caratteristiche come se fossero ordinali (classifica). Il valore è più piccolo / uguale o maggiore del punto di interruzione, quindi non importa se un valore di caratteristica è un valore anomalo estremo.

valore anomalo 1b: per la classificazione, un singolo campione può essere considerato un valore anomalo, se incorporato nel mezzo di molti campioni di una classe diversa. Ho descritto in precedenza come un modello RF predefinito verrà influenzato da questo campione di classe dispari, ma solo molto vicino al campione.

valore anomalo 2: questo valore anomalo ha un valore target estremo forse molte volte superiore a qualsiasi altro valore, ma i valori della funzione sono normali. Una frazione .631 degli alberi avrà un nodo terminale con questo campione. La struttura del modello verrà interessata localmente vicino al valore anomalo. Si noti che la struttura del modello è influenzata principalmente parallelamente all'asse della funzione, poiché i nodi sono divisi in modo univoco.

Ho incluso una simulazione di regressione RF di outlier_2. 1999 punti estratti da una struttura arrotondata liscia e uno anomalo con un valore obiettivo molto più alto (y = 2, = 0, = 0). Il set di allenamento è mostrato a sinistra. La struttura del modello RF appresa è mostrata a destra.y=(x14+x24)12x1x2

inserisci qui la descrizione dell'immagine

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)

MODIFICA: commento all'utente 603

Sì per valori anomali estremi sulla scala target, si dovrebbe considerare di trasformare la scala target prima di eseguire la RF. Ho aggiunto di seguito una funzione robustModel () che ottimizza randomForest. Un'altra soluzione sarebbe quella di registrare la trasformazione prima dell'allenamento.

.
##---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)]))

inserisci qui la descrizione dell'immagine


Scrivi "nessun'altra previsione sarà influenzata". Se sposti il ​​tuo singolo outlier per dirlo y[1]=200vedrai che da solo provoca l'errore di previsione sulle osservazioni incontaminate di saltare di un fattore 20!
user603

@ user603 Vero che, in questi casi la scala target può essere trasformata monotonicamente prima di essere consegnata a RF. Ho aggiunto un 'robustModel: rende i modelli robusti' alla mia risposta ..... ovviamente per prevedere tali valori anomali casuali (tipo 2) rimane impossibile, ma la struttura del modello rimanente non deve soffrire
Soren Havelund Welling

La trasformazione Log non è , in generale, una soluzione contro i valori anomali (nasconde semplicemente il problema). La robustezza della RF che proponi è essenzialmente l'approccio raccomandato in Galimberti, G., Pillati, M., e Soffritti, G. (vedi la mia risposta). La differenza principale è che il tuo approccio '' robustModel "ha un punto di rottura massimo del 25% nello spazio di risposta (può resistere al 25% o valori anomali" y "anomali) mentre il loro ha un bdp del 50%. è robusto per gli outlier nello spazio di progettazione.
user603

8

Non è l'algoritmo Random Forest in sé robusto per gli outlier, ma lo studente di base su cui si basa: l' albero decisionale . Gli alberi decisionali isolano le osservazioni atipiche in piccole foglie (cioè piccoli spazi secondari dello spazio originale). Inoltre, gli alberi decisionali sono modelli locali . A differenza della regressione lineare, in cui la stessa equazione vale per l'intero spazio, un modello molto semplice è adattato localmente a ciascun sottospazio (cioè a ciascuna foglia).

  • Nel caso della regressione, si tratta generalmente di un modello di regressione di ordine molto basso (di solito solo la media delle osservazioni nella foglia).
  • Per la classificazione, si tratta del voto a maggioranza.

Pertanto, ad esempio per la regressione, i valori estremi non influiscono sull'intero modello perché vengono mediati localmente. Quindi l'adattamento agli altri valori non è influenzato.

In realtà, questa proprietà desiderabile si trasferisce su altre strutture simili ad alberi, come i dendogrammi. Il clustering gerarchico, ad esempio, è stato a lungo utilizzato per la pulizia dei dati perché isola automaticamente le osservazioni aberranti in piccoli cluster. Vedi ad esempio Loureiro et al. (2004). Rilevamento anomalo mediante metodi di clustering: un'applicazione di pulizia dei dati .

Quindi, in breve, RF eredita la sua insensibilità agli outlier dal partizionamento ricorsivo e dall'adattamento del modello locale .

Si noti che gli alberi decisionali sono modelli a bassa inclinazione ma ad alta varianza: la loro struttura è soggetta a modifiche a seguito di una piccola modifica del set di addestramento (rimozione o aggiunta di alcune osservazioni). Ma questo non dovrebbe essere confuso con la sensibilità ai valori anomali, questa è una questione diversa.


In realtà ho considerato l'utilizzo di un metodo di clustering, come suggerisci, per il rilevamento di valori anomali. Ma poi, non sono sicuro di dove applicare il clustering. Dovrebbero essere applicati labeledo unlabeleddati? E come sarebbe possibile ottenere questo raggruppamento su dati eterogenei che contengono caratteristiche sia categoriche che numeriche?
Hunle,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.