5 개의 독립 변수가있는 데이터 세트에서 OLS 회귀 모델을 실행했습니다. 독립 변수와 종속 변수는 연속적이고 선형 적으로 관련되어 있습니다. R 광장은 약 99.3 %입니다. 그러나 R에서 임의의 포리스트를 사용하여 동일하게 실행하면 결과는 '% Var 설명 : 88.42'입니다. 임의의 숲 결과가 회귀보다 열등한 이유는 무엇입니까? 나는 임의의 숲이 최소한 OLS 회귀만큼 좋을 것이라고 가정했다.
5 개의 독립 변수가있는 데이터 세트에서 OLS 회귀 모델을 실행했습니다. 독립 변수와 종속 변수는 연속적이고 선형 적으로 관련되어 있습니다. R 광장은 약 99.3 %입니다. 그러나 R에서 임의의 포리스트를 사용하여 동일하게 실행하면 결과는 '% Var 설명 : 88.42'입니다. 임의의 숲 결과가 회귀보다 열등한 이유는 무엇입니까? 나는 임의의 숲이 최소한 OLS 회귀만큼 좋을 것이라고 가정했다.
답변:
나는 당신이 한 일을 정확히 알지 못하므로 소스 코드로 추측하는 데 도움이 될 것입니다.
많은 임의의 포리스트는 기본적으로 평균이 시스템을 나타내는 것으로 간주되는 창입니다. 과장된 CAR- 트리입니다.
두 잎의 CAR- 트리가 있다고 가정 해 봅시다. 데이터는 두 개의 파일로 분할됩니다. 각 파일의 (일정한) 출력은 평균이됩니다.
이제 임의의 데이터 하위 집합으로 1000 번 수행하십시오. 평균 출력을 갖는 불연속 영역이 계속 유지됩니다. RF의 승자가 가장 빈번한 결과입니다. 그것은 범주 사이의 경계를 "퍼지"만합니다.
CART 트리의 부분 선형 출력 예 :
예를 들어 함수가 y = 0.5 * x + 2라고 가정 해 봅시다. 그 플롯은 다음과 같습니다.
두 개의 잎만있는 단일 분류 트리를 사용하여이를 모델링하는 경우 먼저 최상의 분할 지점을 찾아 해당 지점에서 분할 한 다음 각 리프의 함수 출력을 리프의 평균 출력으로 근사합니다.
우리가 CART 트리에 더 많은 잎을 가지고 이것을 다시하면 다음과 같은 결과를 얻을 수 있습니다.
왜 자동차 삼림인가?
무한 잎의 한계에서 CART 트리는 허용 가능한 근사치입니다.
문제는 현실 세계가 시끄럽다는 것입니다. 우리는 수단으로 생각하기를 좋아하지만 세계는 중심 경향 (평균)과 변동 경향 (std dev)을 모두 좋아합니다. 소음이 있습니다.
CAR- 트리에 뛰어난 강도와 불연속성을 처리하는 능력을 제공하는 것과 마찬가지로, 마치 노이즈 인 것처럼 모델링 노이즈에 취약합니다.
Leo Breimann은 간단하지만 강력한 제안을했습니다. 분류 및 회귀 트리를 강력하게 만들기 위해 Ensemble 방법을 사용하십시오. 그는 임의의 부분 집합 (부트 스트랩 리샘플링의 사촌)을 사용하여 CAR- 트리의 숲을 훈련시킵니다. 포리스트에 대한 질문을하면 전체 포리스트가 말하고 가장 일반적인 답변이 출력으로 간주됩니다. 숫자 데이터를 처리하는 경우 기대 값을 출력으로 보는 것이 유용 할 수 있습니다.
두 번째 줄거리에서는 랜덤 포레스트를 사용한 모델링에 대해 생각해보십시오. 각 트리에는 데이터의 임의의 하위 집합이 있습니다. 즉, "최상의"분리 점의 위치는 나무마다 다릅니다. 불연속성에 접근 할 때 임의 포리스트의 출력을 플롯으로 표시하려면 처음 몇 개의 분기가 점프를 표시 한 다음 많은 분기를 표시합니다. 해당 영역의 평균값은 부드러운 시그 모이 드 경로를 통과합니다. 부트 스트랩은 가우시안 (Gaussian)과 관련이 있으며 해당 단계 함수의 가우시안 블러가 S 자형이됩니다.
하단 라인:
매우 선형적인 함수에 대한 근사치를 얻으려면 나무 당 많은 가지가 필요합니다.
답변에 영향을주기 위해 변경할 수있는 많은 "다이얼"이 있으며 모두 적절한 값으로 설정하지 않았을 수 있습니다.
참고 문헌 :
나는 이것이 오래된 질문이라는 것을 알았지 만 더 추가해야한다고 생각합니다. @Manoel Galdino가 의견에서 말했듯이 일반적으로 보이지 않는 데이터에 대한 예측에 관심이 있습니다. 그러나이 질문은 훈련 데이터의 성능에 관한 것이며, 무작위 숲이 훈련 데이터에서 나쁜 성능을 보이는 이유는 무엇입니까? 대답은 종종 분류 문제로 인해 문제가 발생하는 분류 된 분류기의 흥미로운 문제를 강조합니다.
문제는 데이터 세트에서 부트 스트랩 샘플을 가져 와서 생성되는 임의 포리스트와 같은 분류 된 분류 기가 극단적으로 성능이 저하되는 경향이 있다는 것입니다. 극단에 많은 데이터가 없기 때문에 데이터가 매끄럽게되는 경향이 있습니다.
구체적으로, 회귀에 대한 랜덤 포레스트는 다수의 분류기의 예측을 평균화한다는 것을 기억하십시오. 단일 지점이 다른 지점과 멀리 떨어져 있으면 많은 분류 기준에서이를 볼 수 없으며 이는 본질적으로 샘플에서 벗어난 예측을하므로 매우 좋지 않을 수 있습니다. 실제로, 이러한 샘플 외부 예측은 데이터 포인트에 대한 예측을 전체 평균으로 끌어 당기는 경향이 있습니다.
단일 의사 결정 트리를 사용하는 경우 극단적 인 값과 동일한 문제는 없지만 적합 회귀도 선형 적이 지 않습니다.
다음은 R의 그림입니다 . y
5 가지 x
변수 의 완벽한 라이너 조합 인 일부 데이터가 생성됩니다 . 그런 다음 선형 모델과 임의 포리스트를 사용하여 예측합니다. 그런 다음 y
훈련 데이터에 대한 값이 예측에 대해 표시됩니다. 값이 매우 크거나 작은 데이터 포인트 y
가 드물기 때문에 임의 포리스트가 극단적으로 나 빠지고 있음을 분명히 알 수 있습니다 .
임의 포리스트가 회귀 분석에 사용될 때 보이지 않는 데이터에 대한 예측 패턴과 동일한 패턴이 표시됩니다. 그것을 피하는 방법을 모르겠습니다. randomForest
R 의 함수에는 바이어스에 corr.bias
선형 회귀를 사용 하는 조잡한 바이어스 수정 옵션 이 있지만 실제로 작동하지는 않습니다.
제안은 환영합니다!
beta <- runif(5)
x <- matrix(rnorm(500), nc=5)
y <- drop(x %*% beta)
dat <- data.frame(y=y, x1=x[,1], x2=x[,2], x3=x[,3], x4=x[,4], x5=x[,5])
model1 <- lm(y~., data=dat)
model2 <- randomForest(y ~., data=dat)
pred1 <- predict(model1 ,dat)
pred2 <- predict(model2 ,dat)
plot(y, pred1)
points(y, pred2, col="blue")