शुरू करेंमुफ़्त में शुरू करें

इनपुट ट्रांसफॉर्म्स: "हॉकी स्टिक" (2)

पिछले अभ्यास में, आपने देखा कि quadratic मॉडल houseprice डेटा पर linear मॉडल से बेहतर fit होता लगता है. इस अभ्यास में, आप जाँचेंगे कि क्या quadratic मॉडल out-of-sample डेटा पर भी बेहतर प्रदर्शन करेगा. क्योंकि यह डेटासेट छोटा है, आप cross-validation का उपयोग करेंगे। पिछले अभ्यास में बनाया गया quadratic फॉर्मूला fmla_sqr और houseprice डेटा फ्रेम आपके उपयोग के लिए उपलब्ध हैं।

तुलना के लिए, sample कोड linear मॉडल price ~ size से cross-validation predictions निकालेगा.

यह अभ्यास पाठ्यक्रम का हिस्सा है

R में Supervised Learning: Regression

पाठ्यक्रम देखें

अभ्यास निर्देश

  • 3-fold cross validation के लिए splitting प्लान बनाने हेतु kWayCrossValidation() का उपयोग करें।
    • आप फंक्शन के 3rd और 4th आर्ग्युमेंट को NULL रख सकते हैं।
  • मॉडल price ~ size के 3-fold cross-validation predictions पाने और उन्हें कॉलम pred_lin में जोड़ने के लिए sample कोड देखें और चलाएँ।
  • squared size के फंक्शन के रूप में price के cross-validation predictions प्राप्त करें। इन्हें कॉलम pred_sqr में असाइन करें।
    • प्रक्रिया sample कोड में दी गई है।
    • आप वही splitting प्लान उपयोग कर सकते हैं जो आपने बनाया है।
  • predictions को pivot करने और residuals निकालने के लिए खाली स्थान भरें।
  • दोनों मॉडलों के RMSE की तुलना करने के लिए खाली स्थान भरें। कौन सा बेहतर fit होता है?

इंटरैक्टिव व्यावहारिक अभ्यास

इस अभ्यास को इस नमूना कोड को पूरा करके आज़माएँ।

# houseprice is available
summary(houseprice)

# fmla_sqr is available
fmla_sqr

# Create a splitting plan for 3-fold cross validation
set.seed(34245)  # set the seed for reproducibility
splitPlan <- ___

# Sample code: get cross-val predictions for price ~ size
houseprice$pred_lin <- 0  # initialize the prediction vector
for(i in 1:3) {
  split <- splitPlan[[i]]
  model_lin <- lm(price ~ size, data = houseprice[split$train,])
  houseprice$pred_lin[split$app] <- predict(model_lin, newdata = houseprice[split$app,])
}

# Get cross-val predictions for price as a function of size^2 (use fmla_sqr)
houseprice$pred_sqr <- 0 # initialize the prediction vector
for(i in 1:3) {
  split <- ___
  model_sqr <- lm(___, data = houseprice[split$train, ])
  houseprice$___[split$app] <- predict(___, newdata = houseprice[split$app, ])
}

# Pivot the predictions and calculate the residuals
houseprice_long <- houseprice %>%
  pivot_longer(cols = c('pred_lin', 'pred_sqr'), names_to = 'modeltype', values_to = 'pred') %>%
  mutate(residuals = ___)

# Compare the cross-validated RMSE for the two models
houseprice_long %>% 
  group_by(modeltype) %>% # group by modeltype
  summarize(rmse = ___)
कोड संपादित करें और चलाएँ