आर में मॉडल प्रदर्शन के लिए क्रॉस-वैलिडेशन कैसे करें


आंकड़ों में, हम अक्सर दो कारणों से मॉडल बनाते हैं:

  • एक या अधिक भविष्यवक्ता चर और एक प्रतिक्रिया चर के बीच संबंध को समझें
  • भविष्य की टिप्पणियों की भविष्यवाणी करने के लिए एक मॉडल का उपयोग करें।

क्रॉस-वैलिडेशन यह अनुमान लगाने के लिए उपयोगी है कि कोई मॉडल भविष्य की टिप्पणियों की भविष्यवाणी करने में कितनी अच्छी तरह सक्षम है।

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

यह निर्धारित करने के लिए कि क्या मॉडल में मजबूत भविष्य कहनेवाला क्षमता है, हमें इसका उपयोग उस डेटा पर भविष्यवाणियां करने के लिए करना होगा जो उसने पहले कभी नहीं देखा है। यह हमें मॉडल की भविष्यवाणी त्रुटि का अनुमान लगाने की अनुमति देगा।

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

क्रॉस-सत्यापन उन विभिन्न तरीकों को संदर्भित करता है जिनसे हम भविष्यवाणी त्रुटि का अनुमान लगा सकते हैं। क्रॉस-सत्यापन के लिए सामान्य दृष्टिकोण है:

1. डेटासेट में एक निश्चित संख्या में अवलोकनों को अलग रखें – आमतौर पर सभी अवलोकनों का 15-25%।
2. डेटासेट में हमारे द्वारा रखे गए अवलोकनों पर मॉडल को फ़िट करें (या “प्रशिक्षित करें”)।
3. परीक्षण करें कि मॉडल उन अवलोकनों के बारे में कितनी अच्छी तरह भविष्यवाणी कर सकता है जिनका उपयोग हमने मॉडल को प्रशिक्षित करने के लिए नहीं किया था।

किसी मॉडल की गुणवत्ता मापना

जब हम नए अवलोकनों के बारे में पूर्वानुमान लगाने के लिए फिट किए गए मॉडल का उपयोग करते हैं, तो हम मॉडल की गुणवत्ता को मापने के लिए कई अलग-अलग मीट्रिक का उपयोग कर सकते हैं, जिनमें शामिल हैं:

एकाधिक आर-वर्ग: यह भविष्यवक्ता चर और प्रतिक्रिया चर के बीच रैखिक संबंध की ताकत को मापता है। 1 का R-वर्ग गुणज एक पूर्ण रैखिक संबंध को इंगित करता है जबकि 0 का R-वर्ग गुणज कोई रैखिक संबंध नहीं दर्शाता है। आर-वर्ग गुणक जितना अधिक होगा, प्रतिक्रिया चर की भविष्यवाणी करने के लिए भविष्यवक्ता चर की संभावना उतनी ही अधिक होगी।

मूल माध्य वर्ग त्रुटि (आरएमएसई): एक नए अवलोकन के मूल्य की भविष्यवाणी करते समय मॉडल द्वारा की गई औसत भविष्यवाणी त्रुटि को मापता है। यह किसी अवलोकन के वास्तविक मान और मॉडल द्वारा अनुमानित मान के बीच की औसत दूरी है। आरएमएसई के लिए कम मान बेहतर मॉडल फिट का संकेत देते हैं।

माध्य निरपेक्ष त्रुटि (एमएई): यह किसी अवलोकन के वास्तविक मूल्य और मॉडल द्वारा अनुमानित मूल्य के बीच औसत पूर्ण अंतर है। यह मीट्रिक आमतौर पर आरएमएसई की तुलना में आउटलेर्स के प्रति कम संवेदनशील है। एमएई के लिए कम मान बेहतर मॉडल फिट का संकेत देते हैं।

आर में चार अलग-अलग क्रॉस-वैलिडेशन तकनीकों को लागू करना

फिर हम बताएंगे कि आर में निम्नलिखित क्रॉस-वैलिडेशन तकनीकों को कैसे लागू किया जाए:

1. सत्यापन सेट दृष्टिकोण
2. के-फोल्ड क्रॉस-वैलिडेशन
3. क्रॉस-वैलिडेशन को एक तरफ छोड़ दें
4. बार-बार के-फोल्ड क्रॉस-वैलिडेशन

इन विभिन्न तकनीकों का उपयोग करने का तरीका बताने के लिए, हम एमटीकार्स में निर्मित आर डेटासेट के एक सबसेट का उपयोग करेंगे:

 #define dataset
data <- mtcars[, c("mpg", "disp", "hp", "drat")]

#view first six rows of new data
head(data)

# mpg disp hp drat
#Mazda RX4 21.0 160 110 3.90
#Mazda RX4 Wag 21.0 160 110 3.90
#Datsun 710 22.8 108 93 3.85
#Hornet 4 Drive 21.4 258 110 3.08
#Hornet Sportabout 18.7 360 175 3.15
#Valiant 18.1 225 105 2.76

हम भविष्यवक्ता चर के रूप में disp , hp और drat और प्रतिक्रिया चर के रूप में mpg का उपयोग करके एक बहु रेखीय प्रतिगमन मॉडल का निर्माण करेंगे।

सत्यापन सेट दृष्टिकोण

सत्यापन सेट दृष्टिकोण निम्नानुसार काम करता है:

1. डेटा को दो सेटों में विभाजित करें: एक सेट का उपयोग मॉडल को प्रशिक्षित करने के लिए किया जाता है (यानी मॉडल मापदंडों का अनुमान लगाएं) और दूसरे सेट का उपयोग मॉडल का परीक्षण करने के लिए किया जाता है। आम तौर पर, प्रशिक्षण सेट 70-80% डेटा को यादृच्छिक रूप से चुनकर उत्पन्न किया जाता है, और शेष 20-30% डेटा का उपयोग परीक्षण सेट के रूप में किया जाता है।

2. प्रशिक्षण डेटासेट का उपयोग करके मॉडल बनाएं।
3. परीक्षण सेट डेटा के बारे में पूर्वानुमान लगाने के लिए मॉडल का उपयोग करें।
4. आर-स्क्वायर, आरएमएसई और एमएई जैसे मेट्रिक्स का उपयोग करके मॉडल की गुणवत्ता को मापें।

उदाहरण:

निम्नलिखित उदाहरण उस डेटासेट का उपयोग करता है जिसे हमने ऊपर परिभाषित किया है। सबसे पहले, हम डेटा को विभाजित करते हैं
एक प्रशिक्षण सेट और एक परीक्षण सेट, 80% डेटा को प्रशिक्षण सेट के रूप में और शेष 20% डेटा को परीक्षण सेट के रूप में उपयोग किया जाता है। अगला, हम प्रशिक्षण सेट का उपयोग करके मॉडल बनाते हैंफिर हम परीक्षण सेट के बारे में पूर्वानुमान लगाने के लिए मॉडल का उपयोग करते हैं। अंत में, हम आर-स्क्वायर, आरएमएसई और एमएई का उपयोग करके मॉडल की गुणवत्ता को मापते हैं

 #load dplyr library used for data manipulation
library(dplyr)

#load caret library used for partitioning data into training and test set
library(caret)

#make this example reproducible
set.seed(0)

#define the dataset
data <- mtcars[, c("mpg", "disp", "hp", "drat")]

#split the dataset into a training set (80%) and test set (20%).
training_obs <- data$mpg %>% createDataPartition(p = 0.8, list = FALSE)

train <- data[training_obs, ]
test <- data[-training_obs, ]

# Build the linear regression model on the training set
model <- lm(mpg ~ ., data = train)

# Use the model to make predictions on the test set
predictions <- model %>% predict(test)

#Examine R-squared, RMSE, and MAE of predictions
data.frame(R_squared = R2(predictions, test$mpg),
           RMSE = RMSE(predictions, test$mpg),
           MAE = MAE(predictions, test$mpg))

#R_squared RMSE MAE
#1 0.9213066 1.876038 1.66614

विभिन्न मॉडलों की तुलना करते समय, जो परीक्षण सेट पर सबसे कम आरएमएसई उत्पन्न करता है वह पसंदीदा मॉडल होता है।

इस दृष्टिकोण के फायदे और नुकसान

सत्यापन सेट दृष्टिकोण का लाभ यह है कि यह सरल और कम्प्यूटेशनल रूप से कुशल है। नुकसान यह है कि मॉडल कुल डेटा के केवल एक हिस्से का उपयोग करके बनाया गया है। यदि हम प्रशिक्षण सेट से जो डेटा छोड़ते हैं उसमें दिलचस्प या मूल्यवान जानकारी होती है, तो मॉडल इसे ध्यान में नहीं रखेगा।

के-फोल्ड क्रॉस-वैलिडेशन दृष्टिकोण

के-फोल्ड क्रॉस-वैलिडेशन दृष्टिकोण निम्नानुसार काम करता है:

1. डेटा को बेतरतीब ढंग से k “फ़ोल्ड्स” या उपसमुच्चय में विभाजित करें (उदाहरण के लिए, 5 या 10 उपसमुच्चय)।
2. केवल एक उपसमुच्चय को छोड़कर, सभी डेटा पर मॉडल को प्रशिक्षित करें।
3. छूटे हुए उपसमूह से डेटा के बारे में पूर्वानुमान लगाने के लिए मॉडल का उपयोग करें।
4. इस प्रक्रिया को तब तक दोहराएँ जब तक कि प्रत्येक k उपसमुच्चय का उपयोग परीक्षण सेट के रूप में न कर लिया जाए।
5 . K परीक्षण त्रुटियों के औसत से मॉडल की गुणवत्ता मापें। ये तो पता है
क्रॉस-सत्यापन त्रुटि के रूप में।

उदाहरण

इस उदाहरण में, हम पहले डेटा को 5 उपसमूहों में विभाजित करते हैं। फिर हम डेटा के एक सबसेट को छोड़कर सभी का उपयोग करके मॉडल को फिट करते हैं। फिर हम छूटे हुए सबसेट के बारे में पूर्वानुमान लगाने के लिए मॉडल का उपयोग करते हैं और परीक्षण त्रुटि रिकॉर्ड करते हैं (आर-स्क्वायर, आरएमएसई और एमएई का उपयोग करके)। हम इस प्रक्रिया को तब तक दोहराते हैं जब तक कि प्रत्येक उपसमुच्चय का उपयोग परीक्षण सेट के रूप में न कर लिया जाए। फिर हम केवल 5 परीक्षण त्रुटियों के औसत की गणना करते हैं

 #load dplyr library used for data manipulation
library(dplyr)

#load caret library used for partitioning data into training and test set
library(caret)

#make this example reproducible
set.seed(0)

#define the dataset
data <- mtcars[, c("mpg", "disp", "hp", "drat")]

#define the number of subsets (or "folds") to use
train_control <- trainControl(method = "cv", number = 5)

#train the model
model <- train(mpg ~ ., data = data, method = "lm", trControl = train_control)

#Summarize the results
print(model)

#Linear Regression 
#
#32 samples
#3 predictor
#
#No pre-processing
#Resampling: Cross-Validated (5 fold) 
#Summary of sample sizes: 26, 25, 26, 25, 26 
#Resampling results:
#
# RMSE Rsquared MAE     
#3.095501 0.7661981 2.467427
#
#Tuning parameter 'intercept' was held constant at a value of TRUE

इस दृष्टिकोण के फायदे और नुकसान

सत्यापन सेट दृष्टिकोण की तुलना में के-फोल्ड क्रॉस-वैलिडेशन दृष्टिकोण का लाभ यह है कि यह हर बार डेटा के विभिन्न टुकड़ों का उपयोग करके कई अलग-अलग बार मॉडल बनाता है , इसलिए हमें मॉडल बनाते समय महत्वपूर्ण डेटा को छोड़ने का मौका नहीं मिलता है।

इस दृष्टिकोण का व्यक्तिपरक भाग k के लिए उपयोग करने के लिए मान का चयन करना है, अर्थात, डेटा को विभाजित करने के लिए सबसेट की संख्या। सामान्य तौर पर, कम k मान उच्च पूर्वाग्रह लेकिन कम परिवर्तनशीलता को जन्म देते हैं, जबकि उच्च k मान कम पूर्वाग्रह लेकिन उच्च परिवर्तनशीलता को जन्म देते हैं।

व्यवहार में, k को आमतौर पर 5 या 10 के बराबर चुना जाता है, क्योंकि उपसमुच्चय की यह संख्या एक साथ बहुत अधिक पूर्वाग्रह और बहुत अधिक परिवर्तनशीलता से बचती है।

वन आउट क्रॉस-वैलिडेशन (LOOCV) दृष्टिकोण छोड़ें

LOOCV दृष्टिकोण इस प्रकार काम करता है:

1. डेटासेट में एक को छोड़कर सभी अवलोकनों का उपयोग करके मॉडल बनाएं।
2. लुप्त अवलोकन के मूल्य की भविष्यवाणी करने के लिए मॉडल का उपयोग करें। इस भविष्यवाणी के परीक्षण की त्रुटि रिकॉर्ड करें।
3. डेटासेट में प्रत्येक अवलोकन के लिए इस प्रक्रिया को दोहराएं।
4. सभी पूर्वानुमान त्रुटियों के औसत से मॉडल की गुणवत्ता को मापें।

उदाहरण

निम्नलिखित उदाहरण दर्शाता है कि पिछले उदाहरणों में उपयोग किए गए समान डेटासेट के लिए LOOCV का उपयोग कैसे करें:

 #load dplyr library used for data manipulation
library(dplyr)

#load caret library used for partitioning data into training and test set
library(caret)

#make this example reproducible
set.seed(0)

#define the dataset
data <- mtcars[, c("mpg", "disp", "hp", "drat")]

#specify that we want to use LOOCV
train_control <- trainControl( method = "LOOCV" )

#train the model
model <- train(mpg ~ ., data = data, method = "lm", trControl = train_control)

#summarize the results
print(model)

#Linear Regression 
#
#32 samples
#3 predictor
#
#No pre-processing
#Resampling: Leave-One-Out Cross-Validation 
#Summary of sample sizes: 31, 31, 31, 31, 31, 31, ... 
#Resampling results:
#
# RMSE Rsquared MAE     
#3.168763 0.7170704 2.503544
#
#Tuning parameter 'intercept' was held constant at a value of TRUE

इस दृष्टिकोण के फायदे और नुकसान

LOOCV का लाभ यह है कि हम सभी डेटा बिंदुओं का उपयोग करते हैं, जो आम तौर पर संभावित पूर्वाग्रह को कम करता है। हालाँकि, चूंकि हम प्रत्येक अवलोकन के मूल्य की भविष्यवाणी करने के लिए मॉडल का उपयोग करते हैं, इससे भविष्यवाणी त्रुटि में अधिक परिवर्तनशीलता हो सकती है।

इस दृष्टिकोण का एक और दोष यह है कि इसे इतनी बड़ी संख्या में मॉडलों में फिट होना चाहिए कि यह अक्षम और कम्प्यूटेशनल रूप से भारी हो सकता है।

बार-बार के-फोल्ड क्रॉस-वैलिडेशन दृष्टिकोण

हम बस कई बार के-फोल्ड क्रॉस-वैलिडेशन करके बार-बार के-फोल्ड क्रॉस-वैलिडेशन कर सकते हैं। अंतिम त्रुटि दोहराव की संख्या की औसत त्रुटि है।

निम्नलिखित उदाहरण 5-गुना क्रॉस-सत्यापन करता है, जिसे 4 बार दोहराया जाता है:

 #load dplyr library used for data manipulation
library(dplyr)

#load caret library used for partitioning data into training and test set
library(caret)

#make this example reproducible
set.seed(0)

#define the dataset
data <- mtcars[, c("mpg", "disp", "hp", "drat")]

#define the number of subsets to use and number of times to repeat k-fold CV
train_control <- trainControl(method = "repeatedcv", number = 5, repeats = 4 )

#train the model
model <- train(mpg ~ ., data = data, method = "lm", trControl = train_control)

#summarize the results
print(model)

#Linear Regression 
#
#32 samples
#3 predictor
#
#No pre-processing
#Resampling: Cross-Validated (5 fold, repeated 4 times) 
#Summary of sample sizes: 26, 25, 26, 25, 26, 25, ... 
#Resampling results:
#
# RMSE Rsquared MAE     
#3.176339 0.7909337 2.559131
#
#Tuning parameter 'intercept' was held constant at a value of TRUE

इस दृष्टिकोण के फायदे और नुकसान

बार-बार के-फोल्ड क्रॉस-वैलिडेशन दृष्टिकोण का लाभ यह है कि प्रत्येक पुनरावृत्ति के लिए डेटा को थोड़ा अलग उपसमूहों में विभाजित किया जाएगा, जिससे मॉडल की भविष्यवाणी त्रुटि का और भी अधिक निष्पक्ष अनुमान मिलना चाहिए। इस दृष्टिकोण का नुकसान यह है कि यह कम्प्यूटेशनल रूप से गहन हो सकता है क्योंकि हमें मॉडल फिटिंग प्रक्रिया को कई बार दोहराना पड़ता है।

क्रॉस वैलिडेशन में फोल्ड की संख्या कैसे चुनें

क्रॉस-वैलिडेशन का सबसे व्यक्तिपरक हिस्सा यह तय करना है कि कितने फोल्ड (यानी सबसेट) का उपयोग करना है। सामान्य तौर पर, तहों की संख्या जितनी कम होगी, त्रुटि अनुमान उतना ही अधिक पक्षपातपूर्ण होगा, लेकिन वे उतने ही कम परिवर्तनशील होंगे। इसके विपरीत, तहों की संख्या जितनी अधिक होगी, त्रुटि अनुमान उतना ही कम पक्षपातपूर्ण होगा, लेकिन वे उतने ही अधिक परिवर्तनशील होंगे।

गणना समय का ध्यान रखना भी जरूरी है। प्रत्येक तह के लिए, आपको एक नए पैटर्न को प्रशिक्षित करने की आवश्यकता होगी, और हालांकि यह एक धीमी प्रक्रिया है, यदि आप अधिक संख्या में तह चुनते हैं तो इसमें लंबा समय लग सकता है।

व्यवहार में, क्रॉस-सत्यापन आमतौर पर 5 या 10 गुना के साथ किया जाता है, क्योंकि यह परिवर्तनशीलता और पूर्वाग्रह के बीच एक अच्छा संतुलन प्रदान करता है, साथ ही कम्प्यूटेशनल रूप से कुशल भी होता है।

क्रॉस-वैलिडेशन करने के बाद मॉडल कैसे चुनें

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

एक बार जब हम सर्वश्रेष्ठ मॉडल का चयन करने के लिए क्रॉस-वैलिडेशन का उपयोग कर लेते हैं, तो हम चुने हुए मॉडल में फिट होने के लिए सभी उपलब्ध डेटा का उपयोग करते हैं। हम अपने अंतिम मॉडल के लिए क्रॉस-सत्यापन के दौरान प्रशिक्षित वास्तविक मॉडल उदाहरणों का उपयोग नहीं करते हैं।

उदाहरण के लिए, हम यह निर्धारित करने के लिए 5-गुना क्रॉस सत्यापन का उपयोग कर सकते हैं कि दो अलग-अलग प्रतिगमन मॉडल के बीच कौन सा मॉडल उपयोग करना बेहतर है। हालाँकि, एक बार जब हमने पहचान लिया कि कौन सा मॉडल उपयोग करना सबसे अच्छा है, तो हम अंतिम मॉडल में फिट होने के लिए सभी डेटा का उपयोग करते हैं। दूसरे शब्दों में, अंतिम मॉडल बनाते समय हम किसी भी तह को नहीं भूलते।

एक टिप्पणी जोड़ने

आपका ईमेल पता प्रकाशित नहीं किया जाएगा. आवश्यक फ़ील्ड चिह्नित हैं *