ผมชอบแพคเกจcaret
สำหรับสิ่งที่ต้องการนี้ แต่โชคร้ายที่ฉันเพิ่งอ่านที่คุณไม่สามารถระบุformula
ในgam
ว่ามัน
"เมื่อคุณใช้รถไฟกับโมเดลนี้คุณจะไม่สามารถระบุสูตรเกมได้ (ในเวลานี้) caret มีฟังก์ชั่นภายในที่แสดงสูตรตามจำนวนระดับที่ไม่ซ้ำกันที่ผู้ทำนายแต่ละคนมีกล่าวอีกนัยหนึ่ง คำศัพท์เหล่านี้เรียบเนียนและเป็นเอฟเฟกต์หลักแบบเส้นตรงแบบเก่า "
แหล่งที่มา: /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