임의의 포리스트 회귀 분석에서 반응 분포에 따른 편향


9

R의 randomForest 패키지 (R 버전 2.13.1, randomForest 버전 4.6-2)를 사용하여 회귀 분석 결과에 큰 편견이 있음을 발견했습니다. 예측 오류는 응답 변수의 값에 따라 다릅니다. 높은 값은 과소 예측되고 낮은 값은 과대 예측됩니다. 처음에는 이것이 내 데이터의 결과라고 생각했지만 다음 간단한 예제는 이것이 임의 포리스트 알고리즘에 내재되어 있음을 나타냅니다.

n = 1000; 
x1 = rnorm(n, mean = 0, sd = 1)
response = x1
predictors = data.frame(x1=x1) 
rf = randomForest(x=predictors, y=response)
error = response-predict(rf, predictors)
plot(x1, error)

나는 편향이 반응의 분포에 의존한다고 생각한다. 예를 들어, x1균일하게 분포된다면 편견이 없다. 만약 x1지수 적으로 분포되어, 상기 바이어스는 일방적이다. 기본적으로 정규 분포의 꼬리에서의 반응 값은 특이 치입니다. 모델이 특이 치를 예측하는 데 어려움이 있다는 것은 놀라운 일이 아닙니다. randomForest의 경우, 분포의 꼬리에서 극단적 인 크기의 응답 값이 터미널 리프에서 종료 될 가능성이 적으며 그 효과는 앙상블 평균으로 제거됩니다.

이전 예제 인 "RandomForest in R linear regression tails mtry"에서이 효과를 포착하려고했습니다. 이것은 나쁜 예였습니다. 위의 예에서 편향이 알고리즘에 내재 된 경우, 예측하는 응답 분포를 고려하여 편향 보정이 공식화되어보다 정확한 예측이 가능해집니다.

임의 포리스트와 같은 트리 기반 방법은 응답 분포 편향의 영향을 받습니까? 그렇다면 이전에 통계 커뮤니티에 알려졌으며 일반적으로 어떻게 수정됩니까 (예 : 바이어스 된 모델의 잔차를 입력으로 사용하는 두 번째 모델)?

특성에 따라 응답을 알 수 없기 때문에 응답 종속 바이어스를 수정하기가 어렵습니다. 불행하게도, 추정 / 예측 된 응답은 종종 바이어스와 동일한 관계를 공유하지 않습니다.


나는 거의 12 개월 동안이 같은 질문에 대해 숙고했습니다. stats.stackexchange.com/questions/21530/… 및 kaggle.com/forums/t/1106/random-forests-newbie-question을 참조하십시오 . 문제는 특이 치가 각 노드에서 예측으로 사용되는 평균으로 잘 표현되지 않는 것 같습니다. 예측 조정 또는 노드 내 모델은 합리적인 접근법처럼 보이지만 표준 접근법이 무엇인지 확실하지 않습니다.
— redcalx

답변:


4

리프 노드에 일부 개체 집합에 대한 수단이 포함되어 있다는 사실은 모든 회귀 트리 모델이 반응 분포를 강화하고 외삽이 불가능하게한다는 사실을 알 수 있습니다. 물론 앙상블은 그에 도움이되지 않으며 실제로 상황을 악화시킵니다.

순진한 해결책 (과적 합으로 인해 위험한)은 모형을 고전적인 회귀로 랩핑하여 원하는 분포에 대한 반응을 재조정하는 것입니다.

더 나은 솔루션은 파티 패키지의 MOB 와 같이 리프 모델 트리 모델 중 하나입니다 . 여기서 아이디어는 문제가 단순한 값이 아닌 (일반 트리 에서처럼) 반응과 일부 예측 변수 사이의 단순한 관계 (선형 적)로 단순화 될 때 피처 공간 분할이 끝나야한다는 것입니다. 이러한 관계는 이제 분포를 방해하지 않거나 극단적 인 값을 없애지 않고 외삽 할 수있는 간단한 모델을 적용하여 해결할 수 있습니다.


반응 분포의 크기를 조정하면 왜 과적 합이 발생합니까? 두 포리스트 출력 간의 순서 관계는 다항식 피팅을 통해 크기를 다시 조정 한 후에도 동일한 순서를 유지하므로 출력의 Quantile을 기반으로 결정한 경우 모델의 의사 결정에는 영향을 미치지 않습니다.
— Jase

당신이 맞아요. 나는 RF가 완전히 말도 안되는 답을 만들어 내고 회귀가 그것을 속임수보다 나은 로 무언가로 변환하는 시나리오에 대해 생각하고 있었다 . R2

3

딸랑이 패키지를 통해 액세스 한 조건부 RF와 정확히 동일한 문제가있었습니다. 나는 그에 관해 Graham Williams (rattle의 저자)에게 이메일을 보냈다. 문제, 즉 minplit = 2 및 minbucket = 1입니다.


minsplit, 나는 당신이 의미하는 것으로 추정합니다
— smci

2

고정 된 피처 집합에 해당하는 대응 변수에 대해 서로 다른 mtry, sampsize 매개 변수의 그리드에서 샘플 "교차 검증 된 오류"를 최소화하여 mtry 및 sampsize의 최적 값을 추정 한 다음 결론을 내려야합니다. 결과의 관점에서. expand.grid를 사용하여 그리드 매개 변수 조합을 작성할 수 있습니다.


2
이것은 모델을 구축하기위한 좋은 제안입니다. 일반적으로 최적화 된 매개 변수는보다 정확한 예측을 제공합니다. 그러나이 경우에는 내가 알 수있는 한 튜닝에 관계없이 바이어스가 존재합니다. 예측 변수는 하나뿐이므로 mtry는 1이어야합니다. n보다 작은 샘플 크기는 바이어스를 확대하는 역할 만하며 노드 크기는 거의 영향을 미치지 않습니다.
— rumbleB
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.