예측 오류를 테스트하기위한 GAM 교차 검증


10

내 질문은 mgcv R 패키지 의 GAM 을 다루고 있습니다 . 표본 크기가 작기 때문에 leave-one-out 교차 유효성 검사를 사용하여 예측 오류를 결정하고 싶습니다. 이것이 합리적입니까? 이 작업을 수행 할 수있는 패키지 또는 코드가 있습니까? ipred 패키지 의 errorest()기능 이 작동 하지 않습니다. 간단한 테스트 데이터 세트는 다음과 같습니다.

library(mgcv)
set.seed(0)
dat <- gamSim(1,n=400,dist="normal",scale=2)
b<-gam(y~s(x0)+s(x1)+s(x2)+s(x3),data=dat)
summary(b)
pred <- predict(b, type="response")

도와 주셔서 감사합니다!


내부 -r.org/packages/cran/gamclass/docs/CVgam 내부에서 CVgam 기능을 살펴볼 수 있습니다. 이것이 도움이되기를 바랍니다.
user051514

답변:


3

정말 패키지 등 caret이런 것들에 대한하지만 불행히도 난 그냥 당신이 지정할 수 없습니다 읽었 formula에서 gam그것을 정확하게합니다.

"이 모델과 함께 열차를 사용할 때는 현재로서는 게임 공식을 지정할 수 없습니다. 캐럿에는 각 예측 변수의 고유 수준 등을 기반으로 공식을 계산하는 내부 함수가 있습니다. 즉, 열차는 현재 용어가 평활 해지고 평범한 오래된 선형 주요 효과입니다. "

출처 : /programming/20044014/error-with-train-from-caret-package-using-method-gam

그러나 train부드러운 항을 선택하면이 경우 모형이 정확하게 생성됩니다. 이 경우 기본 성능 지표는 RMSE이지만 함수 의 summaryFunction인수를 사용하여 변경할 수 있습니다 trainControl.

LOOCV의 주요 단점 중 하나는 데이터 세트가 클 때 영원히 걸리는 것입니다. 데이터 세트가 작고 매우 빠르게 작동하기 때문에 합리적인 옵션이라고 생각합니다.

도움이 되었기를 바랍니다.

library(mgcv)
library(caret)

set.seed(0)

dat <- gamSim(1, n = 400, dist = "normal", scale = 2)

b <- train(y ~ x0 + x1 + x2 + x3, 
        data = dat,
        method = "gam",
        trControl = trainControl(method = "LOOCV", number = 1, repeats = 1),
        tuneGrid = data.frame(method = "GCV.Cp", select = FALSE)
)

print(b)
summary(b$finalModel)

산출:

> print(b)
Generalized Additive Model using Splines 

400 samples
  9 predictors

No pre-processing
Resampling: 

Summary of sample sizes: 399, 399, 399, 399, 399, 399, ... 

Resampling results

  RMSE      Rsquared 
  2.157964  0.7091647

Tuning parameter 'select' was held constant at a value of FALSE

Tuning parameter 'method' was held constant at a value of GCV.Cp

> summary(b$finalModel)

Family: gaussian 
Link function: identity 

Formula:
.outcome ~ s(x0) + s(x1) + s(x2) + s(x3)

Parametric coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)   7.9150     0.1049   75.44   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1

Approximate significance of smooth terms:
        edf Ref.df       F  p-value    
s(x0) 5.173  6.287   4.564 0.000139 ***
s(x1) 2.357  2.927 103.089  < 2e-16 ***
s(x2) 8.517  8.931  84.308  < 2e-16 ***
s(x3) 1.000  1.000   0.441 0.506929    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1

R-sq.(adj) =  0.726   Deviance explained = 73.7%
GCV =  4.611  Scale est. = 4.4029    n = 400

1

mgcv 라이브러리 pdf에서는 다음과 같이 말합니다.

"gam 모델 공식으로 지정된 모델 구조를 부여한 gam ()은 예측 오류 기준 또는 가능성 기반 방법을 사용하여 적용 가능한 각 모델 용어에 대해 적절한 부드러움을 찾으려고 시도합니다. 사용 된 예측 오류 기준은 일반화 (GCV) 또는 스케일 매개 변수를 알 수없는 경우 또는 알려진 경우 UBRE (Un-Biased Risk Estimator) "

"mg in mgcv는 GCV (Generalized Cross Validation) 기준을 사용하여 평활화 파라미터 추정 문제를 해결합니다. nD / (n − DoF) 2

또는

UBRE (Un-Biased Risk Estimator) 기준 : D / n + 2sDoF / n − s "

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.