एक इंटरैक्शन का मॉडलिंग (2)
इस अभ्यास में, आप पिछले अभ्यास में फिट किए गए इंटरैक्शन मॉडल के प्रदर्शन की तुलना केवल main-effects वाले मॉडल से करेंगे। क्योंकि यह डेटासेट छोटा है, हम out-of-sample डेटा पर प्रेडिक्शन को simulate करने के लिए cross-validation का उपयोग करेंगे.
आप गणनाएँ करने के लिए dplyr पैकेज का उपयोग करना शुरू करेंगे.
mutate()(docs) एक tbl (data frame का एक प्रकार) में नए कॉलम जोड़ता हैgroup_by()(docs) तय करता है कि किसी tbl में पंक्तियाँ कैसे ग्रुप की जाएँगीsummarize()(docs) किसी कॉलम के summary statistics निकालता है
आप tidyr का pivot_longer() (docs) भी उपयोग करेंगे, जो कई कॉलम्स को key-value जोड़ों में समेट देता है। alcohol डेटा फ्रेम और फार्मूले fmla_add और fmla_interaction पहले से लोड किए गए हैं.
यह अभ्यास पाठ्यक्रम का हिस्सा है
R में Supervised Learning: Regression
अभ्यास निर्देश
kWayCrossValidation()(docs) का उपयोग करके 3-fold cross validation के लिए एक splitting प्लान बनाएँ.- पहला आर्ग्युमेंट स्प्लिट की जाने वाली पंक्तियों की संख्या है.
- दूसरा आर्ग्युमेंट cross-validation के folds की संख्या है.
- आप फ़ंक्शन के 3रे और 4थे आर्ग्युमेंट को
NULLसेट कर सकते हैं.
- सैंपल कोड देखें और चलाएँ ताकि बिना इंटरैक्शन वाले मॉडल के 3-fold cross-validation प्रेडिक्शन मिलें और उन्हें कॉलम
pred_addमें असाइन करें. - इंटरैक्शन वाले मॉडल के 3-fold cross-validation प्रेडिक्शन प्राप्त करें। प्रेडिक्शन को कॉलम
pred_interactionमें असाइन करें.- प्रक्रिया सैंपल कोड में दिखाई गई है.
- वही
splitPlanउपयोग करें जो आपने पहले बनाया था.
- खाली स्थान भरें ताकि
pivot_longerकरके प्रेडिक्शनों को एक ही कॉलमpredमें लाया जा सके.- residuals (वास्तविक आउटपुट - प्रेडिक्टेड आउटपुट) का एक कॉलम जोड़ा जा सके.
- प्रत्येक मॉडल प्रकार के लिए cross-validation प्रेडिक्शनों का RMSE निकाला जा सके.
- RMSEs की तुलना करें। इन नतीजों के आधार पर, आपको कौन सा मॉडल उपयोग करना चाहिए?
इंटरैक्टिव व्यावहारिक अभ्यास
इस अभ्यास को इस नमूना कोड को पूरा करके आज़माएँ।
# alcohol is available
summary(alcohol)
# Both the formulae are available
fmla_add
fmla_interaction
# Create the splitting plan for 3-fold cross validation
set.seed(34245) # set the seed for reproducibility
splitPlan <- ___(___(___), ___, ___, ___)
# Sample code: Get cross-val predictions for main-effects only model
alcohol$pred_add <- 0 # initialize the prediction vector
for(i in 1:3) {
split <- splitPlan[[i]]
model_add <- lm(fmla_add, data = alcohol[split$train, ])
alcohol$pred_add[split$app] <- predict(model_add, newdata = alcohol[split$app, ])
}
# Get the cross-val predictions for the model with interactions
alcohol$pred_interaction <- 0 # initialize the prediction vector
for(i ___ ___) {
split <- ___
model_interaction <- lm(___, data = alcohol[split$train, ])
alcohol$___[split$app] <- predict(___, newdata = alcohol[split$app, ])
}
# Get RMSE
alcohol %>%
pivot_longer(cols=c('pred_add', 'pred_interaction'), names_to='modeltype', values_to='pred') %>%
mutate(residuals = ____) %>%
group_by(modeltype) %>%
summarize(rmse = ___(___(___)))