Intuisi Anda benar. Jawaban ini hanya menggambarkannya pada contoh.
Memang merupakan kesalahpahaman umum bahwa CART / RF entah bagaimana kuat untuk outlier.
Untuk mengilustrasikan kurangnya kekokohan RF terhadap keberadaan outlier tunggal, kita dapat (secara ringan) memodifikasi kode yang digunakan dalam jawaban Soren Havelund Welling di atas untuk menunjukkan bahwa satu outlier 'y' cukup untuk sepenuhnya mempengaruhi model RF yang dipasang. Misalnya, jika kita menghitung kesalahan prediksi rata-rata dari pengamatan yang tidak terkontaminasi sebagai fungsi jarak antara pencilan dan sisa data, kita dapat melihat (gambar di bawah) yang memperkenalkan pencilan tunggal (dengan mengganti salah satu pengamatan asli dengan nilai arbitrer pada ruang 'y') cukup untuk menarik prediksi model RF secara sewenang-wenang jauh dari nilai-nilai yang akan mereka miliki jika dihitung berdasarkan data asli (tidak terkontaminasi):
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")
Berapa jauh? Dalam contoh di atas, pencilan tunggal telah banyak mengubah fit sehingga kesalahan prediksi rata-rata (pada yang tidak terkontaminasi) sekarang adalah 1-2 urutan besarnya lebih besar daripada seharusnya, seandainya model telah dipasang pada data yang tidak terkontaminasi.
Jadi tidak benar bahwa pencilan tunggal tidak dapat mempengaruhi kecocokan RF.
Selain itu, seperti yang saya tunjukkan di tempat lain , outlier yang jauh lebih sulit untuk berurusan dengan ketika ada potensi beberapa dari mereka (meskipun mereka tidak perlu menjadi besar proporsi dari data untuk efek mereka muncul). Tentu saja, data yang terkontaminasi dapat mengandung lebih dari satu pencilan; untuk mengukur dampak beberapa pencilan pada kesesuaian RF, bandingkan plot di sebelah kiri yang diperoleh dari RF pada data yang tidak terkontaminasi dengan plot di sebelah kanan yang diperoleh dengan mengubah 5% nilai respons secara sewenang-wenang (kode berada di bawah jawaban) .
Akhirnya, dalam konteks regresi, penting untuk menunjukkan bahwa outlier dapat menonjol dari sebagian besar data baik dalam desain dan ruang respon (1). Dalam konteks spesifik RF, outlier desain akan memengaruhi estimasi parameter-hiper. Namun, efek kedua ini lebih nyata ketika jumlah dimensi besar.
Apa yang kami amati di sini adalah kasus khusus dari hasil yang lebih umum. Sensitivitas ekstrim terhadap pencilan metode pemasangan data multivariat berdasarkan fungsi kehilangan cembung telah ditemukan kembali beberapa kali. Lihat (2) untuk ilustrasi dalam konteks spesifik metode ML.
Edit.
t
s∗= argmakss[ halL.var ( tL.( s ) ) + hlmRvar ( tR( s ) ) ]
tL.tRs∗tL.tRshalL.tL.halR= 1 - halL.tR. Kemudian, seseorang dapat memberikan ketahanan spasi "y" ke pohon regresi (dan dengan demikian RF) dengan mengganti fungsional varians yang digunakan dalam definisi asli dengan alternatif yang kuat. Ini pada dasarnya pendekatan yang digunakan dalam (4) di mana varians digantikan oleh M-estimator skala.
- (1) Menyingkap Multivarian Outliers dan Leverage Points. Peter J. Rousseeuw dan Bert C. van Zomeren Jurnal Asosiasi Statistik Amerika Vol. 85, No. 411 (Sep., 1990), hlm. 633-639
- (2) Kebisingan klasifikasi acak mengalahkan semua pemacu potensial cembung. Philip M. Long dan Rocco A. Servedio (2008). http://dl.acm.org/citation.cfm?id=1390233
- (3) C. Becker dan U. Gather (1999). Titik Masking Breakdown dari Aturan Identifikasi Outlier Multivariat.
- (4) Galimberti, G., Pillati, M., & Soffritti, G. (2007). Pohon regresi yang kuat berdasarkan pada M-estimators. 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)]))