मुख्य सामग्री पर जाएँ

मशीन लर्निंग में बैगिंग क्या है? उदाहरणों सहित एक गाइड

इस ट्यूटोरियल में मशीन लर्निंग में बैगिंग एंसेंबल मेथड का अवलोकन दिया गया है—यह कैसे काम करता है, Python में इम्प्लीमेंटेशन, बूस्टिंग से तुलना, फ़ायदे और श्रेष्ठ अभ्यास।
· 10 मि॰ पढ़ें

AI के साथ खोजें

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

इस ट्यूटोरियल में, हम बैगिंग को गहराई से समझेंगे—यह कैसे काम करता है और कहाँ असरदार है। हम इसकी तुलना एक अन्य एंसेंबल मेथड (बूस्टिंग) से करेंगे और Python में बैगिंग का एक उदाहरण देखेंगे। अंत तक, आपके पास बैगिंग का ठोस ज्ञान होगा, जिसमें श्रेष्ठ अभ्यास भी शामिल हैं।

एंसेंबल लर्निंग को समझना

एंसेंबल मॉडलिंग एक तकनीक है जो कई मशीन लर्निंग मॉडलों को मिलाकर समग्र प्रेडिक्टिव परफॉर्मेंस को बेहतर बनाती है। मूल विचार यह है कि कई कमजोर लर्नर्स मिलकर एक मजबूत लर्नर बना सकते हैं।

एक एंसेंबल मॉडल आमतौर पर दो चरणों में होता है:

  1. कई मशीन लर्निंग मॉडलों को स्वतंत्र रूप से प्रशिक्षित किया जाता है।
  2. उनकी भविष्यवाणियों को किसी तरीके से जोड़ा जाता है, जैसे वोटिंग, एवरेजिंग या वेटिंग के जरिए। यह एंसेंबल फिर समग्र भविष्यवाणी करने के लिए उपयोग किया जाता है।

लेखक द्वारा बनाई गई छवि

एंसेंबल्स बेहतर परिणाम देते हैं क्योंकि अलग-अलग मॉडल एक-दूसरे की पूरकता करते हैं और अपनी-अपनी कमजोरियों को दूर करते हैं। वे वैरिएंस भी घटाते हैं और ओवरफिटिंग से बचाते हैं।

कुछ लोकप्रिय एंसेंबल मेथड्स हैं बैगिंग, बूस्टिंग और स्टैकिंग। एंसेंबल लर्निंग का व्यापक उपयोग वर्गीकरण, रिग्रेशन और क्लस्टरिंग जैसे कार्यों में सटीकता और मजबूती बढ़ाने के लिए किया जाता है।

बैगिंग क्या है?

बैगिंग (बूटस्ट्रैप एग्रिगेटिंग) एक एंसेंबल मेथड है जिसमें डाटा के रैंडम सबसेट्स पर कई मॉडलों को स्वतंत्र रूप से प्रशिक्षित किया जाता है और उनकी भविष्यवाणियों को वोटिंग या एवरेजिंग के जरिए जोड़ा जाता है।

लेखक द्वारा बनाई गई छवि

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

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

बैगिंग विशेष रूप से वैरिएंस और ओवरफिटिंग को घटाने में प्रभावी है, जिससे मॉडल अधिक मजबूत और सटीक बनता है—खासकर तब जब व्यक्तिगत मॉडलों में उच्च परिवर्तनशीलता की प्रवृत्ति हो।

बैगिंग बनाम बूस्टिंग

बूस्टिंग एक और लोकप्रिय एंसेंबल मेथड है जिसकी अक्सर बैगिंग से तुलना की जाती है। मुख्य अंतर इस बात में है कि कॉन्स्टिटुएंट मॉडलों को कैसे प्रशिक्षित किया जाता है।

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

लेखक द्वारा बनाई गई छवि

बैगिंग वैरिएंस घटाता है जबकि बूस्टिंग बायस घटाता है। बैगिंग को डिसीजन ट्री जैसे अस्थिर मॉडलों के साथ इस्तेमाल किया जा सकता है, जबकि बूस्टिंग रैखिक रिग्रेशन जैसे अधिक स्थिर मॉडलों के लिए बेहतर काम करता है।

दोनों तरीकों की अपनी-अपनी खूबियाँ और सीमाएँ हैं। बैगिंग को समानांतर रूप से चलाना सरल है, जबकि बूस्टिंग अधिक शक्तिशाली और सटीक हो सकता है। व्यवहार में, किसी नई समस्या पर दोनों को आज़माना उपयोगी होता है ताकि पता चल सके कि कौन बेहतर प्रदर्शन करता है।

बैगिंग के फ़ायदे

बैगिंग के कुछ प्रमुख फ़ायदे इस प्रकार हैं:

  1. ओवरफिटिंग घटाता है: यह मॉडल के ओवरफिट होने की संभावना को घटा सकता है, जिससे अनदेखे डाटा पर एक्यूरेसी बेहतर होती है।
  2. मॉडल वैरिएंस कम करता है: डाटा के अलग-अलग सबसेट्स पर प्रशिक्षित कई मॉडल अपनी भविष्यवाणियों का औसत लेते हैं, जिससे एकल मॉडल की तुलना में वैरिएंस कम होता है।
  3. स्थिरता बढ़ाता है: प्रशिक्षण डाटासेट में बदलावों का बैग्ड मॉडलों पर कम प्रभाव पड़ता है, जिससे समग्र मॉडल अधिक स्थिर बनता है।
  4. उच्च परिवर्तनशीलता संभालता है: खासकर डिसीजन ट्री जैसे एल्गोरिद्म के लिए प्रभावी, जिनकी वैरिएंस उच्च होती है।
  5. समानांतर रूप से चलने योग्य गणना: एंसेंबल के प्रत्येक मॉडल को स्वतंत्र रूप से प्रशिक्षित किया जा सकता है, जिससे पैरेलल प्रोसेसिंग और कंप्यूट संसाधनों का कुशल उपयोग संभव होता है।
  6. समझने और लागू करने में आसान: बैगिंग के पीछे का सिद्धांत सीधा है और लर्निंग एल्गोरिद्म में जटिल बदलाव किए बिना लागू किया जा सकता है।
  7. शोरयुक्त डाटा के साथ अच्छा: एवरेजिंग प्रक्रिया अंतिम भविष्यवाणी में शोर को घटाने में मदद करती है।
  8. असंतुलित डाटा संभालता है: बैगिंग असंतुलित डाटासेट वाले परिदृश्यों में मदद कर सकता है, जिससे ऐसे मामलों में मॉडल का प्रदर्शन बेहतर होता है।

Python में बैगिंग: एक संक्षिप्त ट्यूटोरियल

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

डाटासेट

टेलीकॉम कस्टमर चर्न पर डाटासेट एक ईरानी टेलीकॉम कंपनी से आता है। डाटासेट की प्रत्येक पंक्ति एक वर्ष के दौरान किसी ग्राहक की गतिविधि से संबंधित है, जिसमें कॉल फ़ेल्योर, सब्सक्रिप्शन की अवधि, और चर्न लेबल जैसी जानकारी शामिल है, जो दर्शाता है कि ग्राहक ने सेवा छोड़ी है या नहीं।

सबसे पहले, हम डाटासेट लोड करेंगे और शीर्ष 5 पंक्तियाँ देखेंगे।

import pandas as pd

customer = pd.read_csv("data/customer_churn.csv")
customer.head()

डाटासेट देखना

इसके बाद, हम स्वतंत्र (X) और आश्रित (y) वेरिएबल बनाएंगे। फिर, हम डाटासेट को प्रशिक्षण और परीक्षण सबसेट्स में बाँटेंगे।

X = customer.drop("Churn", axis=1)
y = customer.Churn

# Split into train and test 
from sklearn.model_selection import train_test_split, cross_val_score
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=1)

मशीन लर्निंग मॉडल प्रशिक्षित करें

हम एक सरल मशीन लर्निंग पाइपलाइन बनाएँगे और उस पर प्रशिक्षण डाटासेट फिट करेंगे। पाइपलाइन डिसीजन ट्री क्लासिफायर में इनपुट भेजने से पहले डाटा को नॉर्मलाइज़ करेगी।

from sklearn.tree import DecisionTreeClassifier
from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import Pipeline

pipeline = Pipeline([
    ('scaler', StandardScaler()),
    ('classifier', DecisionTreeClassifier(random_state=42))
])

pipeline.fit(X_train, y_train)

पाइपलाइन आरेख 1

Python में ट्री-आधारित मॉडलों के साथ मशीन लर्निंग कोर्स लें और scikit-learn के साथ रिग्रेशन और क्लासिफिकेशन के लिए ट्री-आधारित मॉडल और एंसेंबल्स का उपयोग करना सीखें।

मॉडल मूल्यांकन

हम डिसीजन ट्री मॉडल का मूल्यांकन करेंगे ताकि इसे एंसेंबल मॉडल से तुलना कर सकें।

हम टेस्टिंग डाटाशीट पर भविष्यवाणी करके क्लासिफिकेशन रिपोर्ट्स जनरेट करेंगे।

from sklearn.metrics import classification_report

# Make prediction on the testing data
y_pred = pipeline.predict(X_test)

# Classification Report
print(classification_report(y_pred, y_test))

हमारे मॉडल ने बहुसंख्यक क्लास “0” पर 96% प्रिसिज़न और 97% रिकॉल हासिल किया, लेकिन अल्पसंख्यक क्लास “1” पर प्रदर्शन कमजोर रहा।

मॉडल प्रदर्शन परिणाम

मॉडल के प्रदर्शन की बेहतर समझ के लिए, हम क्रॉस-वैलिडेशन करेंगे और संबंधित स्कोर की गणना करेंगे।

# Evaluate the classifier using cross-validation
cv_scores = cross_val_score(pipeline, X, y, cv=5)

print(f"Cross-validation scores: {cv_scores}")
print(f"Mean CV accuracy: {np.mean(cv_scores):.2f}")

स्कोर में उच्च बदलाव है, जहाँ उच्चतम 95% और न्यूनतम 92% हैं।

Cross-validation scores: [0.95079365 0.94126984 0.93492063 0.94285714 0.92222222]
Mean CV accuracy: 0.94

बैगिंग क्लासिफायर

अब, आइए हमारे पाइपलाइन (स्केलर + डिसीजन ट्री क्लासिफायर) को बेस एस्टीमेटर बनाकर एक बैगिंग क्लासिफायर तैयार करें और इसे प्रशिक्षण डाटासेट पर ट्रेन करें।

हम n_estimators बढ़ाकर मॉडल का प्रदर्शन सुधार सकते हैं, लेकिन बेसलाइन परिणामों के लिए 50 पर्याप्त है।

from sklearn.ensemble import BaggingClassifier

# Create a bagging classifier with the decision tree pipeline
bagging_classifier = BaggingClassifier(base_estimator=pipeline, n_estimators=50, random_state=42)

# Train the bagging classifier on the training data
bagging_classifier.fit(X_train, y_train)

BaggingClassifier पाइपलाइन आरेख

एंसेंबल मॉडल का मूल्यांकन

आइए एंसेंबल मॉडल के परिणामों का मूल्यांकन करें और उन्हें एकल मॉडल के प्रदर्शन से तुलना करें। इसके लिए, हम टेस्टिंग डाटासेट पर क्लासिफिकेशन रिपोर्ट्स जनरेट करेंगे।

# Make prediction on the testing data
y_pred = bagging_classifier.predict(X_test)

# Classification Report
print(classification_report(y_pred, y_test))

जैसा कि आप देख सकते हैं, मॉडल प्रदर्शन में तुलनात्मक रूप से सुधार हुआ है। अल्पसंख्यक क्लास के लिए प्रिसिज़न 79% से 80% और रिकॉल 77% से 82% तक बढ़ी है। यह एक उल्लेखनीय सुधार है।

मॉडल प्रदर्शन परिणाम

अब क्रॉस-वैलिडेशन स्कोर की गणना करते हैं।

# Evaluate the classifier using cross-validation
cv_scores = cross_val_score(bagging_classifier, X, y, cv=5)

print(f"Cross-validation scores: {cv_scores}")
print(f"Mean CV accuracy: {np.mean(cv_scores):.2f}")

हमारे क्रॉस-वैलिडेशन स्कोर में वैरिएंस कम है, जो 94% से 96% के बीच है। मॉडल की समग्र एक्यूरेसी भी 94% से बढ़कर 95% हो गई है।

Cross-validation scores: [0.95396825 0.95714286 0.94126984 0.96190476 0.95714286]
Mean CV accuracy: 0.95

बैगिंग तकनीक, मशीन लर्निंग अनुप्रयोगों में मॉडल की सटीकता और स्थिरता बढ़ाने का एक उपयोगी साधन है।

Python में उन्नत और प्रभावी मशीन लर्निंग मॉडल बनाने के लिए बैगिंग, बूस्टिंग और स्टैकिंग जैसी एंसेंबल तकनीकें सीखें—इसके लिए Ensemble Methods in Python कोर्स देखें।

श्रेष्ठ अभ्यास और सुझाव

मशीन लर्निंग में बैगिंग का उपयोग करते समय, निम्नलिखित श्रेष्ठ अभ्यास और सुझाव इसकी प्रभावशीलता को अधिकतम कर सकते हैं:

  1. उच्च-वैरिएंस मॉडलों जैसे डिसीजन ट्री के साथ बैगिंग का उपयोग करें ताकि स्थिरता बढ़े।
  2. बैगिंग को क्रॉस-वैलिडेशन के साथ मिलाएँ ताकि आपके मॉडलों का मूल्यांकन अधिक विश्वसनीय हो।
  3. रैंडम फॉरेस्ट का उपयोग करें (बैग्ड डिसीजन ट्री) एक शक्तिशाली, तैयार-उपयोग बैगिंग तकनीक के रूप में।
  4. बैगिंग करते समय n_estimators का मान अधिक रखें, जैसे 100–200, ताकि अधिकतम लाभ मिले।
  5. बैगिंग को आसानी से समानांतर n_jobs का उपयोग करके किया जा सकता है। तेज़ प्रशिक्षण के लिए इसे कई CPU/मशीनों पर लागू करें।
  6. चूँकि बैगिंग बूटस्ट्रैप सैम्पलिंग पर निर्भर है, सुनिश्चित करें कि प्रत्येक मॉडल डाटा के पर्याप्त विविध सबसेट पर प्रशिक्षित हो।
  7. एग्रिगेट करने से पहले, प्रत्येक मॉडल के प्रदर्शन को GridSearchCV का उपयोग कर ऑप्टिमाइज़ करें। व्यक्तिगत मॉडलों का अच्छा प्रदर्शन आमतौर पर एंसेंबल के बेहतर प्रदर्शन में अनुवादित होता है।

MLOps (मशीन लर्निंग ऑपरेशंस) के श्रेष्ठ अभ्यास पढ़ें ताकि मशीन लर्निंग सिस्टम्स की विश्वसनीय और स्केलेबल डिप्लॉयमेंट के सफल तरीकों के बारे में जान सकें।

निष्कर्ष

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

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

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

Abid Ali Awan

लेखक

Abid Ali Awan

एक प्रमाणित डेटा साइंटिस्ट के रूप में, मैं अत्याधुनिक तकनीक का उपयोग करके नवाचारी मशीन लर्निंग अनुप्रयोग बनाने के लिए उत्साहित रहता/रहती हूँ। स्पीच रिकॉग्निशन, डेटा विश्लेषण और रिपोर्टिंग, MLOps, संवादात्मक AI और NLP में मजबूत पृष्ठभूमि के साथ, मैंने ऐसे बुद्धिमान सिस्टम विकसित करने में अपनी विशेषज्ञता निखारी है जो वास्तविक प्रभाव डाल सकें। तकनीकी दक्षता के अलावा, मैं जटिल अवधारणाओं को स्पष्ट और संक्षिप्त भाषा में प्रस्तुत करने में भी निपुण हूँ। परिणामस्वरूप, मैं डेटा साइंस पर एक मांग में रहने वाला/वाली ब्लॉगर बन गया/गई हूँ, और डेटा प्रोफेशनलों के बढ़ते समुदाय के साथ अपने अनुभव और विचार साझा करता/करती हूँ। वर्तमान में, मैं कंटेंट निर्माण और संपादन पर केंद्रित हूँ, बड़े भाषा मॉडलों के साथ काम करते हुए ऐसा प्रभावशाली और आकर्षक कंटेंट विकसित कर रहा/रही हूँ जो व्यवसायों और व्यक्तियों दोनों को अपने डेटा का अधिकतम लाभ उठाने में मदद कर सके।

विषय