Как случайные леса не чувствительны к выбросам?


33

Я читал в нескольких источниках, в том числе и в этом , что случайные леса не чувствительны к выбросам (например, как логистическая регрессия и другие методы ML).

Тем не менее, две части интуиции говорят мне иначе:

  1. Всякий раз, когда построено дерево решений, все точки должны быть классифицированы. Это означает, что даже выбросы будут классифицированы, и, следовательно, будут влиять на деревья решений, где они были выбраны во время повышения.

  2. Начальная загрузка является частью того, как RandomForest выполняет подвыборку. Самозагрузка восприимчива к выбросам.

Есть ли способ примирить мою интуицию о ее чувствительности к выбросам с источниками, которые не согласны?


Ответ ниже очень хорош. Интуитивно понятный ответ заключается в том, что дерево решений работает с разбиениями, а разбиения не чувствительны к выбросам: разделение должно делиться где-то между двумя группами точек, чтобы разделить их.
Уэйн

Так что я полагаю, что если оно min_samples_leaf_nodeесть 1, то оно может быть подвержено выбросам.
Hunle

да min_samples и bootstrap sample могут полностью устранить влияние выбросов 1b на РЧ-регрессию
Сорен Хавелунд Веллинг

Некоторые статистики получают общее представление о тех внутренностях, которые можно предсказать и понять. Поощряйте выбросы как «известные неизвестные» и задавайтесь вопросом, хрупка ли ваша бизнес-модель по отношению к ним. Некоторые выбросы принципиально непредсказуемы, но их влияние вполне реально ... перефразировка Н. Талеба, «Черный лебедь»
Сорен Хавелунд Веллинг

Ответы:


21

Ваша интуиция верна. Этот ответ просто иллюстрирует это на примере.

Это действительно распространенное заблуждение, что 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вар(TL(s))+првар(Tр(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)]))

Спасибо за ваш подробный ответ. Если в одном и том же многомерном пространстве есть несколько выбросов, возникает вопрос: каковы наши критерии для того, чтобы называть «выбросы»? В таком случае мне интересно, какие гиперпараметры могут быть установлены, чтобы я мог априори указать какие-то критерии для выброса?
Hunle

1
Я добавил свои предыдущие комментарии к своему ответу. Я надеюсь, что теперь лучше ответить на ваш вопрос!
user603

1
Спасибо. Что есть pи sв формуле?
Hunle

1
Почему комбинированные выбросы (1a + 2) плохие? В вашем примере модель RF идеально вписывается в структуру данных, 99,99% OOB MSE. Да, структура модели средней полосы между двумя кластерами довольно грубая, и скорее является продуктом модели, чем данных. Но никакие выводы и / или предсказания не должны быть в этой неизвестной области, поэтому это не имеет значения. Абсолютная устойчивость к выбросам неизбежно игнорирует редкие, но, возможно, важные возможные события. Большинство алгоритмов ML по умолчанию занимают промежуточную позицию между надежностью и «гибкостью», но могут быть изменены для повышения надежности.
Сорен Хавелунд Веллинг

1
@ user603 Ничего добавить к техническому обсуждению, кроме того, что «Сердце тьмы» было моей любимой книгой, когда я был ребенком, с «Испытанием» Франца Кафки, которое было несколько секунд (возможно, оно было первым, если оно было закончено и, возможно, написано на английском языке, - тогда опять, может быть, это было уместно, что это не было закончено). Я на самом деле не думал об этом с внешней стороны, кроме того, что я считал «Сердце тьмы» и «Испытания» как (хорошие) выбросы среди моря «серьезной литературы» BS, я должен был читать и делать BS светло-темные изображения и Подобный анализ на.
Марк Л. Стоун

11

выброс 1a: этот выброс имеет одно или несколько значений экстремальных признаков и расположен далеко от любого другого образца. Выброс будет влиять на начальные расщепления деревьев, как и любой другой образец, поэтому не оказывает сильного влияния. Он будет иметь низкую близость к любому другому образцу и будет определять структуру модели только в удаленной части пространства объектов. Во время прогнозирования большинство новых выборок, скорее всего, не будут похожи на этот выброс, и редко окажутся в одном и том же терминальном узле. Кроме того, деревья решений рассматривают особенности, как если бы они были порядковыми (ранжирование). Значение либо меньше, либо равно, либо больше, чем точка останова, поэтому не имеет значения, является ли значение признака экстремальным выбросом.

выброс 1b: для классификации один отдельный образец может рассматриваться как выброс, если он встроен в середину множества образцов другого класса. Ранее я описал, как эта RF-модель по умолчанию будет зависеть от этого образца нечетного класса, но только очень близко к нему.

выброс 2: этот выброс имеет экстремальное целевое значение, возможно, во много раз превышающее любые другие значения, но значения признаков являются нормальными. У фракции .631 деревьев будет конечный узел с этим образцом. Структура модели будет затронута локально близко к выбросу. Обратите внимание, что структура модели затрагивается в основном параллельно оси объекта, потому что узлы разделены по-разному.

годзнак равно(Икс14+Икс24)12Икс1Икс2

введите описание изображения здесь

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)

РЕДАКТИРОВАТЬ: комментарий к пользователю603

Да, для экстремальных выбросов в целевом масштабе следует рассмотреть возможность преобразования целевого масштаба перед запуском RF. Я добавил ниже функцию robustModel (), которая настраивает randomForest. Другим решением было бы войти преобразование перед тренировкой.

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

введите описание изображения здесь


Вы пишете "никакие другие прогнозы не будут затронуты". Если вы сместите свой единственный выброс в положение, y[1]=200то увидите, что он в одиночку вызывает скачок ошибки прогнозирования для незагрязненных наблюдений в 20 раз!
user603

@ user603 Правда, что в таких случаях целевая шкала может быть преобразована монотонно перед передачей в RF. Я добавил «robustModel: делает модели устойчивыми» к моему ответу ..... конечно, предсказать такую ​​случайную (ые) цель (тип 2) остается невозможным, но оставшаяся структура модели не должна страдать
Сорен Хейлунд Веллинг

Преобразование Log , как правило, не является решением против выбросов (оно просто скрывает проблему). Робустификация RF, которую вы предлагаете, по сути, является подходом, отстаиваемым в Galimberti G., Pillati M. & Soffritti G. (см. Мой ответ). Основное отличие состоит в том, что ваш подход '' robustModel '' имеет максимальную точку разбивки 25% в пространстве ответов (он может выдержать 25% или произвольные 'y'-выбросы), тогда как их подход имеет bdp 50%. Обратите внимание, что ни один из подходов устойчива к выбросам в пространстве дизайна
user603

8

Это не сам алгоритм Случайного леса, который устойчив к выбросам, а базовый учащийся, на котором он основан: дерево решений . Деревья решений выделяют нетипичные наблюдения на маленькие листья (т. Е. На небольшие подпространства исходного пространства). Кроме того, деревья решений являются локальными моделями. В отличие от линейной регрессии, где одно и то же уравнение выполняется для всего пространства, очень простая модель подгоняется локально для каждого подпространства (т. Е. Для каждого листа).

  • В случае регрессии, это, как правило, модель регрессии очень низкого порядка (обычно только среднее значение наблюдений в листе).
  • Для классификации это большинство голосов.

Поэтому, например, для регрессии экстремальные значения не влияют на всю модель, поскольку они усредняются локально. Таким образом, соответствие другим значениям не влияет.

На самом деле, это желательное свойство переносится на другие древовидные структуры, такие как дендограммы. Например, иерархическая кластеризация давно используется для очистки данных, поскольку она автоматически изолирует аберрантные наблюдения в небольшие кластеры. Смотри, например, Loureiro et al. (2004). Обнаружение выбросов с использованием методов кластеризации: приложение для очистки данных .

Таким образом, в двух словах, RF наследует свою нечувствительность к выбросам от рекурсивного разделения и подбора локальной модели .

Обратите внимание, что деревья решений имеют низкое смещение, но модели с высокой дисперсией: их структура подвержена изменениям при небольшой модификации обучающего набора (удаление или добавление нескольких наблюдений). Но это не следует путать с чувствительностью к выбросам, это другое дело.


Я действительно подумал об использовании метода кластеризации, как вы предлагаете, для обнаружения выбросов. Но тогда я не уверен, где применять кластеризацию. Должно ли оно применяться labeledили unlabeledданные? И как эта кластеризация будет достигнута на разнородных данных, которые содержат как категориальные, так и числовые характеристики?
Hunle
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.