수동으로 계산 된 가 새 데이터를 테스트하기 위해 randomForest () 와 일치하지 않습니다.


38

나는 이것이 상당히 구체적인 R질문 이라는 것을 알고 있지만, R ^ 2 설명 된 비율 분산에 대해 R2잘못 생각하고있을 수 있습니다 . 간다

R패키지 를 사용하려고 합니다 randomForest. 훈련 데이터와 테스트 데이터가 있습니다. 임의 포리스트 모델에 적합하면이 randomForest기능을 통해 테스트 할 새 테스트 데이터를 입력 할 수 있습니다. 그런 다음이 새로운 데이터에 설명 된 분산의 백분율을 알려줍니다. 이것을 보면 하나의 숫자를 얻습니다.

predict()함수를 사용하여 학습 데이터의 모형 적합을 기반으로 테스트 데이터의 결과 값을 예측하고 이러한 값과 테스트 데이터 의 실제 결과 값 사이의 제곱 상관 계수를 취하면 다른 숫자를 얻습니다. 이 값이 일치하지 않습니다 .

다음 R은 문제를 보여주는 코드입니다.

# use the built in iris data
data(iris)

#load the randomForest library
library(randomForest)

# split the data into training and testing sets
index <- 1:nrow(iris)
trainindex <- sample(index, trunc(length(index)/2))
trainset <- iris[trainindex, ]
testset <- iris[-trainindex, ]

# fit a model to the training set (column 1, Sepal.Length, will be the outcome)
set.seed(42)
model <- randomForest(x=trainset[ ,-1],y=trainset[ ,1])

# predict values for the testing set (the first column is the outcome, leave it out)
predicted <- predict(model, testset[ ,-1])

# what's the squared correlation coefficient between predicted and actual values?
cor(predicted, testset[, 1])^2

# now, refit the model using built-in x.test and y.test
set.seed(42)
randomForest(x=trainset[ ,-1], y=trainset[ ,1], xtest=testset[ ,-1], ytest=testset[ ,1])

답변:


52

이유 때문에 값이 일치되지는 보고 변화하면 하도록 대향 설명 분산을 설명했다. 나는 이것이 교과서에서 계속되는 에 대한 일반적인 오해라고 생각합니다 . 나는 다른 날 다른 스레드에서 이것을 언급했습니다. 예를 원한다면 Seber and Lee, Linear Regression Analysis , 2nd 의 (그렇지 않으면 꽤 좋은) 교과서를 참조하십시오 . 에드.R2randomForestR2

대한 일반적인 정의 는 R2

R2=1i(yiy^i)2i(yiy¯)2.

즉, 우리는 평균 제곱 오차를 계산하여 원래 관측치의 분산으로 나눈 다음 이것을 하나에서 뺍니다. 예측이 실제로 나쁜 경우이 값은 음수가 될 수 있습니다.

이제 선형 회귀 ( 인터셉트 용어와 함께! ) 에서 발생하는 것은 의 평균값이 와 일치 한다는 것 입니다. 또한, 잔여 벡터 장착 값의 벡터에 직교 . 이 두 가지를 합치면 정의가 더 일반적으로 발생하는 정의로 줄어 듭니다. 즉, ( 의 첨자 을 사용하여 선형 회귀 를 나타냅니다 .y^iy¯yy^y^

RLR2=Corr(y,y^)2.
LRRLR2

randomForest전화는 당신이 그렇다면, 첫 번째 정의를 사용하고 있습니다

   > y <- testset[,1]
   > 1 - sum((y-predicted)^2)/sum((y-mean(y))^2)

당신은 답변이 일치하는 것을 볼 수 있습니다.


1
+1, 좋은 답변입니다. 나는 항상 원래의 공식이 왜 제곱 상관 대신 사용되는지 궁금했습니다 . 선형 회귀의 경우 동일하지만 다른 컨텍스트에 적용하면 항상 혼란 스럽습니다. R2
mpiktas

(+1) 실제로 매우 우아한 반응.
chl

@mpiktas, @chl, 오늘 조금 더 확장 해 보도록하겠습니다. 기본적으로 백그라운드에서 가설 테스트와 밀접한 관계가 있지만 약간 숨겨져 있습니다. 선형 회귀 설정에서도 상수 벡터가 설계 행렬의 열 공간에 없으면 "상관 관계"정의가 실패합니다.
추기경

Seber / Lee 교과서 (나에게 접근 할 수없는) 이외의 참조가 있다면, 설명 된 변동 (즉, 1-SSerr / SStot)이 제곱 상관 계수 또는 차이 설명과 어떻게 다른지에 대한 좋은 설명을보고 싶습니다. 팁 감사합니다.
Stephen Turner

R 제곱 값이 도구 변수 회귀 결과에서 음수 인 경우이 음수 값을 억제하고보고를 위해 양수 값으로 변환 할 수 있습니까? 이 링크를 참조하십시오 : stata.com/support/faqs/statistics/two-stage-least-squares
Eric
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.