あなたの直感は正しいです。この答えは、単に例で説明しているだけです。
実際、CART / RFは異常値に対して何らかの形で堅牢であるという一般的な誤解です。
単一の外れ値の存在に対するRFの堅牢性の欠如を説明するために、上記のSoren Havelund Wellingの回答で使用されているコードを(わずかに)変更して、単一の 'y'外れ値で適合したRFモデルを完全に振ることができることを示します。たとえば、汚染されていない観測値の平均予測誤差を外れ値と残りのデータ間の距離の関数として計算すると、(元の観測値の1つを置き換えることにより)単一の外れ値が導入されていることがわかります(下の画像)「y」スペースの任意の値)で、元の(汚染されていない)データで計算された場合の値からRFモデルの予測を任意に引き離すだけで十分です。
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")
どこまで?上記の例では、単一の外れ値が適合度を大きく変更しているため、(汚染されていない)観測の平均予測誤差は、モデルが汚染されていないデータに適合している場合に比べて1桁から2桁大きくなります。
そのため、1つの外れ値がRFフィットに影響を与えないことは事実ではありません。
さらに、他の場所で指摘しているように、外れ値は潜在的にそれらがいくつかある場合に対処するのがはるかに困難です(ただし、それらの影響を表示するためにデータの大部分を占める必要はありません)。もちろん、汚染されたデータには複数の外れ値が含まれる場合があります。RF適合に対するいくつかの外れ値の影響を測定するには、汚染されていないデータのRFから得られた左側のプロットと、応答値の5%を任意にシフトすることによって得られた右側のプロットを比較します(コードは回答以下です) 。
最後に、回帰のコンテキストでは、外れ値が設計空間と応答空間の両方のデータの大部分から際立っている可能性があることを指摘することが重要です(1)。RFの特定のコンテキストでは、設計の外れ値がハイパーパラメーターの推定に影響します。ただし、次元の数が多い場合、この2番目の効果はより顕著になります。
ここで観察しているのは、より一般的な結果の特定のケースです。凸損失関数に基づく多変量データ近似法の異常値に対する極端な感度は、何度も再発見されています。MLメソッドの特定のコンテキストの図については、(2)を参照してください。
編集。
幸いなことに、ベースのCART / RFアルゴリズムは異常値に対して強くは堅牢ではありませんが、手順を変更して「y」異常値に堅牢性を与えることができます。次に、回帰RFに焦点を当てます(より具体的にはOPの質問の対象であるため)。より正確には、任意のノード分割基準を次のように記述します。t
s∗= arg最大s[ pLvar (tL(s ))+ pRvar (tR(s ))]
ここと子を浮上していることの選択に依存してノード(との陰関数である)及び
左の子ノードに落ちるデータの画分示しとシェアであります内のデータの。次に、元の定義で使用された分散関数を堅牢な代替物に置き換えることにより、回帰ツリー(およびRF)に「y」空間の堅牢性を付与できます。これは本質的に(4)で使用されるアプローチであり、分散は堅牢なスケールのM推定量に置き換えられます。tLtRs∗tLtRspLtLpR= 1 − pLtR
- (1)多変量の外れ値とレバレッジポイントのマスク解除。Peter J. Rousseeuw and Bert C. van Zomeren Journal of the American Statistics Association Vol。85、No。411(1990年9月)、pp。633-639
- (2)ランダム分類ノイズは、すべてのコンベックスポテンシャルブースターを無効にします。フィリップM.ロングおよびロッコA.セルベディオ(2008)。http://dl.acm.org/citation.cfm?id=1390233
- (3)C. Becker and U. Gather(1999)。多変量外れ値識別ルールのマスキングのブレークダウンポイント。
- (4)Galimberti、G.、Pillati、M。、およびSoffritti、G。(2007)。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)]))