Ваша интуиция верна. Этот ответ просто иллюстрирует это на примере.
Это действительно распространенное заблуждение, что CART / RF так или иначе устойчивы к выбросам.
Чтобы проиллюстрировать отсутствие устойчивости RF к наличию единичных выбросов, мы можем (слегка) изменить код, использованный в ответе Сорена Хавелунда Веллинга выше, чтобы показать, что одного «y-выброса» достаточно, чтобы полностью повлиять на подобранную модель RF. Например, если мы вычислим среднюю ошибку прогноза незагрязненных наблюдений как функцию расстояния между выбросами и остальными данными, мы можем увидеть (изображение ниже), что вводится один выброс (путем замены одного из исходных наблюдений). по произвольному значению в 'y'-пространстве) достаточно, чтобы оттянуть предсказания РЧ-модели как можно дальше от значений, которые они имели бы, если бы вычисляли по исходным (незагрязненным) данным:
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 порядка больше, чем она была бы, если бы модель была подобрана для незагрязненных данных.
Так что это неправда, что один выброс не может повлиять на соответствие RF.
Кроме того, как я отмечаю в другом месте , с выбросами гораздо сложнее иметь дело, когда их потенциально несколько (хотя они не должны составлять значительную долю данных, чтобы их влияние проявилось). Конечно, загрязненные данные могут содержать более одного выброса; Чтобы измерить влияние нескольких выбросов на соответствие RF, сравните график слева, полученный из РФ на незагрязненных данных, с графиком справа, полученным путем произвольного смещения 5% значений ответов (код находится под ответом) ,
Наконец, в контексте регрессии важно указать, что выбросы могут выделяться из объема данных как в плане проектирования, так и в пространстве ответов (1). В конкретном контексте РФ выбросы конструкции будут влиять на оценку гиперпараметров. Однако этот второй эффект более очевиден, когда число измерений велико.
То, что мы наблюдаем здесь, является частным случаем более общего результата. Чрезвычайная чувствительность к выбросам многомерных методов подбора данных, основанных на выпуклых функциях потерь, была открыта много раз. См. (2) для иллюстрации в конкретном контексте методов ML.
Редактировать.
T
s*= argМаксимумs[ рLвар ( тL( s ) ) + pрвар ( тр( s ) ) ]
где и являются появляющимися дочерними узлами, зависящими от выбора ( и являются неявными функциями от ), а
обозначает долю данных, которая попадает в левый дочерний узел а - это доля данных в . Затем можно придать устойчивости пространства «у» деревьям регрессии (и, следовательно, RF), заменив функционал дисперсии, использованный в исходном определении, надежной альтернативой. По сути, это подход, используемый в (4), где дисперсия заменяется надежным М-оценщиком масштаба.t R s ∗ t L t R s p L t L p R = 1 - p L t RTLTрs*TLTрsпLTLпр= 1 - рLTр
- (1) Разоблачение многовариантных выбросов и точек воздействия. Peter J. Rousseeuw и Bert C. van Zomeren Journal от Американской статистической ассоциации Vol. 85, No. 411 (Sep., 1990), pp. 633-639.
- (2) Случайный классификационный шум побеждает все выпуклые потенциальные усилители. Филипп М. Лонг и Рокко А. Серведио (2008). http://dl.acm.org/citation.cfm?id=1390233
- (3) C. Becker и U. Gather (1999). Точка разрыва маскировки многомерных правил идентификации выбросов.
- (4) Galimberti, G., Pillati, M. & Soffritti, G. (2007). Робастные деревья регрессии на основе М-оценок. 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)]))