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


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.