आर में बैगिंग कैसे करें (चरण दर चरण)
जब हम किसी दिए गए डेटासेट के लिए निर्णय वृक्ष बनाते हैं, तो हम मॉडल बनाने के लिए केवल एक प्रशिक्षण डेटासेट का उपयोग करते हैं।
हालाँकि, एकल निर्णय वृक्ष का उपयोग करने का नकारात्मक पक्ष यह है कि इसमें उच्च भिन्नता का सामना करना पड़ता है। अर्थात्, यदि हम डेटासेट को दो हिस्सों में विभाजित करते हैं और निर्णय वृक्ष को दोनों हिस्सों में लागू करते हैं, तो परिणाम बहुत भिन्न हो सकते हैं।
एक विधि जिसे हम एकल निर्णय वृक्ष के विचरण को कम करने के लिए उपयोग कर सकते हैं उसे बैगिंग के रूप में जाना जाता है, जिसे कभी-कभी बूटस्ट्रैप एकत्रीकरण भी कहा जाता है।
बैगिंग इस प्रकार काम करती है:
1. मूल डेटासेट से बी बूटस्ट्रैप्ड नमूने लें।
2. प्रत्येक बूटस्ट्रैप नमूने के लिए एक निर्णय वृक्ष बनाएं।
3. अंतिम मॉडल प्राप्त करने के लिए प्रत्येक पेड़ से पूर्वानुमानों का औसत निकालें।
सैकड़ों या यहां तक कि हजारों व्यक्तिगत निर्णय पेड़ों का निर्माण करके और सभी पेड़ों की औसत भविष्यवाणियां लेने से, हम अक्सर एक फिटेड बैग मॉडल के साथ समाप्त होते हैं जो एकल निर्णय पेड़ की तुलना में बहुत कम परीक्षण त्रुटि दर उत्पन्न करता है।
यह ट्यूटोरियल आर में एक बैग्ड मॉडल बनाने का चरण-दर-चरण उदाहरण प्रदान करता है।
चरण 1: आवश्यक पैकेज लोड करें
सबसे पहले, हम इस उदाहरण के लिए आवश्यक पैकेज लोड करेंगे:
library (dplyr) #for data wrangling library (e1071) #for calculating variable importance library (caret) #for general model fitting library (rpart) #for fitting decision trees library (ipred) #for fitting bagged decision trees
चरण 2: बैग में रखे मॉडल को फिट करें
इस उदाहरण के लिए, हम एयर क्वालिटी नामक एक अंतर्निहित आर डेटासेट का उपयोग करेंगे जिसमें 153 व्यक्तिगत दिनों में न्यूयॉर्क शहर में वायु गुणवत्ता का माप शामिल है।
#view structure of air quality dataset
str(airquality)
'data.frame': 153 obs. of 6 variables:
$ Ozone: int 41 36 12 18 NA 28 23 19 8 NA ...
$Solar.R: int 190 118 149 313 NA NA 299 99 19 194 ...
$ Wind: num 7.4 8 12.6 11.5 14.3 14.9 8.6 13.8 20.1 8.6 ...
$ Temp: int 67 72 74 62 56 66 65 59 61 69 ...
$Month: int 5 5 5 5 5 5 5 5 5 5 ...
$Day: int 1 2 3 4 5 6 7 8 9 10 ...
निम्नलिखित कोड दिखाता है कि आईप्रेड लाइब्रेरी से बैगिंग() फ़ंक्शन का उपयोग करके आर में एक बैग्ड मॉडल को कैसे फिट किया जाए।
#make this example reproducible set.seed(1) #fit the bagged model bag <- bagging( formula = Ozone ~ ., data = airquality, nbagg = 150 , coob = TRUE , control = rpart. control (minsplit = 2 , cp = 0 ) ) #display fitted bagged model bag Bagging regression trees with 150 bootstrap replications Call: bagging.data.frame(formula = Ozone ~ ., data = airquality, nbagg = 150, coob = TRUE, control = rpart.control(minsplit = 2, cp = 0)) Out-of-bag estimate of root mean squared error: 17.4973
ध्यान दें कि हमने बैग्ड मॉडल बनाने के लिए 150 बूटस्ट्रैप्ड नमूनों का उपयोग करना चुना और हमने निर्दिष्ट किया कि अनुमानित आउट-ऑफ-बैग त्रुटि प्राप्त करने के लिए कोब सत्य है।
हमने rpart.control() फ़ंक्शन में निम्नलिखित विशिष्टताओं का भी उपयोग किया है:
- मिनस्प्लिट = 2: यह मॉडल को बताता है कि विभाजित करने के लिए एक नोड में केवल 2 अवलोकनों की आवश्यकता होती है।
- सीपी = 0 . यह जटिलता पैरामीटर है. इसे 0 पर सेट करके, हमें स्प्लिट करने के लिए मॉडल को किसी भी तरह से समग्र फिट में सुधार करने में सक्षम होने की आवश्यकता नहीं है।
अनिवार्य रूप से, ये दो तर्क अलग-अलग पेड़ों को अत्यधिक गहराई तक बढ़ने की अनुमति देते हैं, जिससे उच्च विचरण लेकिन कम पूर्वाग्रह वाले पेड़ बनते हैं। फिर, जब हम बैगिंग लागू करते हैं, तो हम पूर्वाग्रह को कम रखते हुए अंतिम मॉडल के विचरण को कम करने में सक्षम होते हैं।
मॉडल परिणामों से, हम देख सकते हैं कि अनुमानित आउट-ऑफ-बैग आरएमएसई 17.4973 है। यह ओजोन के अनुमानित मूल्य और वास्तविक देखे गए मूल्य के बीच औसत अंतर है।
चरण 3: भविष्यवक्ताओं के महत्व की कल्पना करें
हालाँकि बैग्ड मॉडल व्यक्तिगत निर्णय पेड़ों की तुलना में अधिक सटीक भविष्यवाणियाँ प्रदान करते हैं, लेकिन फिटेड बैग्ड मॉडल के परिणामों की व्याख्या करना और कल्पना करना मुश्किल है।
हालाँकि, हम किसी दिए गए भविष्यवक्ता पर वितरण के कारण आरएसएस (वर्गों का अवशिष्ट योग) में कुल कमी की गणना करके, सभी पेड़ों के औसत से, भविष्यवक्ता चर के महत्व की कल्पना कर सकते हैं। मूल्य जितना बड़ा होगा, भविष्यवक्ता उतना ही महत्वपूर्ण होगा।
निम्नलिखित कोड दिखाता है कि कैरेट लाइब्रेरी से varImp() फ़ंक्शन का उपयोग करके, फिट बैग मॉडल के लिए एक परिवर्तनीय महत्व प्लॉट कैसे बनाया जाए:
#calculate variable importance VI <- data.frame(var= names (airquality[,-1]), imp= varImp (bag)) #sort variable importance descending VI_plot <- VI[ order (VI$Overall, decreasing= TRUE ),] #visualize variable importance with horizontal bar plot barplot(VI_plot$Overall, names.arg= rownames (VI_plot), horiz= TRUE , col=' steelblue ', xlab=' Variable Importance ')
हम देख सकते हैं कि मॉडल में सोलर.आर सबसे महत्वपूर्ण भविष्यवक्ता चर है जबकि महीना सबसे कम महत्वपूर्ण है।
चरण 4: पूर्वानुमान लगाने के लिए मॉडल का उपयोग करें
अंत में, हम नए अवलोकनों के बारे में भविष्यवाणी करने के लिए फिटेड बैग मॉडल का उपयोग कर सकते हैं।
#define new observation new <- data.frame(Solar.R=150, Wind=8, Temp=70, Month=5, Day=5) #use fitted bagged model to predict Ozone value of new observation predict(bag, newdata=new) 24.4866666666667
भविष्यवक्ता चर के मूल्यों के आधार पर, फिटेड बैग मॉडल भविष्यवाणी करता है कि इस विशेष दिन पर ओजोन मूल्य 24,487 होगा।
इस उदाहरण में प्रयुक्त पूरा आर कोड यहां पाया जा सकता है।