Sua intuição está correta. Esta resposta apenas ilustra isso em um exemplo.
De fato, é um equívoco comum que o CART / RF seja de alguma forma robusto em relação aos valores extremos.
Para ilustrar a falta de robustez do RF à presença de um único outliers, podemos (levemente) modificar o código usado na resposta de Soren Havelund Welling acima para mostrar que um único 'y'-outliers é suficiente para influenciar completamente o modelo de RF ajustado. Por exemplo, se calcularmos o erro médio de previsão das observações não contaminadas em função da distância entre o outlier e o restante dos dados, podemos ver (imagem abaixo) que apresenta um único outlier (substituindo uma das observações originais por um valor arbitrário no espaço 'y') é suficiente para afastar arbitrariamente as previsões do modelo de RF dos valores que eles teriam se calculados com base nos dados originais (não contaminados):
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")
Quão longe? No exemplo acima, o único outlier mudou tanto o ajuste que as observações do erro médio de previsão (nas não contaminadas) agora são 1-2 ordens de magnitude maiores do que teriam sido, se o modelo tivesse sido ajustado nos dados não contaminados.
Portanto, não é verdade que um único erro não possa afetar o ajuste de RF.
Além disso, como aponto em outros lugares , os discrepantes são muito mais difíceis de lidar quando existem potencialmente vários deles (embora não precisem ser uma grande proporção dos dados para que seus efeitos apareçam). Obviamente, os dados contaminados podem conter mais de um erro externo; para medir o impacto de vários valores discrepantes no ajuste de RF, compare o gráfico à esquerda obtido do RF nos dados não contaminados com o gráfico à direita obtido deslocando arbitrariamente 5% dos valores das respostas (o código está abaixo da resposta) .
Finalmente, no contexto da regressão, é importante ressaltar que os valores discrepantes podem se destacar da maior parte dos dados no espaço de design e resposta (1). No contexto específico da RF, os valores discrepantes do projeto afetarão a estimativa dos hiperparâmetros. No entanto, esse segundo efeito é mais manifesto quando o número de dimensões é grande.
O que observamos aqui é um caso particular de um resultado mais geral. A extrema sensibilidade aos valores extremos de métodos de ajuste de dados multivariados com base em funções de perda convexa foi redescoberta várias vezes. Veja (2) uma ilustração no contexto específico dos métodos de ML.
Editar.
Felizmente, embora o algoritmo CART / RF base não seja enfaticamente robusto para discrepantes, é possível (e silencioso e fácil) modificar o procedimento para conferir robustez aos discadores "y". Agora vou me concentrar nas RF de regressão (já que esse é mais especificamente o objeto da pergunta do OP). Mais precisamente, escrevendo o critério de divisão para um nó arbitrário como:t
s∗=argmaxs[pLvar(tL(s))+pRvar(tR(s))]
onde e estão criança que emerge nodos dependente da escolha de ( e são funções implícitas de ) e
denota a fração de dados que cai para o nó filho esquerdo e é a parcela de dados em . Então, pode-se conferir robustez do espaço "y" a árvores de regressão (e, portanto, RFs) substituindo a funcionalidade de variância usada na definição original por uma alternativa robusta. Essa é, essencialmente, a abordagem usada em (4), onde a variação é substituída por um estimador M robusto de escala.tLtRs∗tLtRspLtLpR=1−pLtR
- (1) Desmascaramento de outliers multivariados e pontos de alavancagem. Peter J. Rousseeuw e Bert C. van Zomeren Jornal da Associação Estatística Americana vol. 85, n. 411 (setembro de 1990), pp. 633-639
- (2) O ruído de classificação aleatória derrota todos os potenciais impulsionadores convexos. Philip M. Long e Rocco A. Servedio (2008). http://dl.acm.org/citation.cfm?id=1390233
- (3) C. Becker e U. Gather (1999). O ponto de decomposição do mascaramento das regras de identificação multivariada de outlier.
- (4) Galimberti, G., Pillati, M. e Soffritti, G. (2007). Árvores de regressão robustas baseadas em estimadores-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)]))