गाम क्रॉस-सत्यापन को भविष्यवाणी की त्रुटि का परीक्षण करने के लिए


10

मेरा सवाल mgcv आर पैकेज में GAMs से संबंधित है। एक छोटे से नमूने के आकार के कारण मैं छुट्टी-एक-आउट क्रॉस-सत्यापन का उपयोग करके भविष्यवाणी त्रुटि निर्धारित करना चाहता हूं। क्या यह उचित है? क्या कोई पैकेज या कोड है कि मैं यह कैसे कर सकता हूं? errorest()में समारोह ipred पैकेज काम नहीं करता। एक साधारण परीक्षण डेटासेट है:

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")

आपकी मदद करने के लिए बहुत बहुत धन्यवाद!


आप CVगम समारोह में अंदर देख सकते हैं- r.org/packages/cran/gamclass/docs/CVgam मुझे उम्मीद है कि यह मदद कर सकता है
user051514

जवाबों:


3

मैं वास्तव में पैकेज की तरह caretइस तरह बातों के लिए लेकिन दुर्भाग्य से मैं सिर्फ यह है कि आप निर्दिष्ट नहीं कर सकते पढ़ा formulaमें gamइसके लिए वास्तव में।

"जब आप इस मॉडल के साथ ट्रेन का उपयोग करते हैं, तो आप (इस समय) गाम के फॉर्मूले को निर्दिष्ट नहीं कर सकते। कैरेट में एक आंतरिक कार्य होता है, जो एक सूत्र के आधार पर एक सूत्र बताता है कि प्रत्येक भविष्यवक्ता के कितने अनूठे स्तर हैं आदि। दूसरे शब्दों में, ट्रेन वर्तमान में निर्धारित करती है कि शब्द सुचारू हैं और जो सादे पुराने रैखिक मुख्य प्रभाव हैं। "

स्रोत: /programming/20044014/error-with-train-from-caret-package-use-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 लाइब्रेरी पीडीएफ में यह कहता है;

"गम मॉडल फॉर्मूले द्वारा निर्दिष्ट मॉडल संरचना को देखते हुए, गम () भविष्यवाणी त्रुटि मानदंड या संभावना आधारित विधियों का उपयोग करके प्रत्येक लागू मॉडल शब्द के लिए उपयुक्त चिकनाई खोजने का प्रयास करता है। उपयोग की जाने वाली भविष्यवाणी त्रुटि मानदंड सामान्य (अनुमानित) क्रॉस सत्यापन (GCV) या हैं। GACV) जब स्केल पैरामीटर अज्ञात है या अन-बायस्ड रिस्क एस्टिमेटर (UBRE) है जब यह ज्ञात है। "

"एमजीसीवी में गाम सामान्यीकृत क्रॉस वैलिडेशन (GCV) मानदंड: nD / (n - DoF) 2 का उपयोग करके स्मूथिंग पैरामीटर अनुमान समस्या को हल करता है।

या

अन-बायस्ड जोखिम अनुमानक (UBRE) मानदंड: D / n + 2sDoF / n "s

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.