Last chance! 50% off DataCamp Premium
Sale ends in
पिछले कुछ वर्षों में, बूस्टिंग एल्गोरिदम ने डेटा साइंस या मशीन लर्निंग प्रतियोगिताओं में जबरदस्त लोकप्रियता हासिल की है। इन प्रतियोगिताओं के अधिकांश विजेता उच्च सटीकता पाने के लिए बूस्टिंग एल्गोरिदम का उपयोग करते हैं। ये डेटा साइंस प्रतियोगिताएँ सीखने, खोजबीन करने और विभिन्न व्यावसायिक व सरकारी समस्याओं के समाधान देने के लिए वैश्विक मंच प्रदान करती हैं। बूस्टिंग एल्गोरिदम कई कम-सटीकता (या कमजोर) मॉडलों को मिलाकर उच्च-सटीकता (या मजबूत) मॉडल बनाते हैं। इसका उपयोग क्रेडिट, इंश्योरेंस, मार्केटिंग और सेल्स जैसे अनेक क्षेत्रों में किया जा सकता है। AdaBoost, ग्रेडिएंट बूस्टिंग और XGBoost जैसे बूस्टिंग एल्गोरिदम डेटा साइंस प्रतियोगिताओं में व्यापक रूप से इस्तेमाल किए जाते हैं। इस ट्यूटोरियल में, आप AdaBoost एंसेंबल बूस्टिंग एल्गोरिदम सीखेंगे, और निम्न विषय शामिल होंगे:
एंसेंबल एक संयोजित मॉडल है, जो बेहतर क्लासिफायर बनाने के उद्देश्य से कम-प्रदर्शन करने वाले क्लासिफायरों की एक शृंखला को जोड़ता है। यहाँ, प्रत्येक व्यक्तिगत क्लासिफायर वोट देता है और बहुमत वोटिंग के आधार पर अंतिम प्रेडिक्शन लेबल लौटाया जाता है। एंसेंबल, व्यक्तिगत या बेस क्लासिफायर की तुलना में अधिक सटीकता प्रदान करते हैं। एंसेंबल मेथड्स को पैरेललाइज किया जा सकता है, जहाँ प्रत्येक बेस लर्नर को अलग-अलग मशीनों पर आवंटित किया जाता है। अंततः, आप कह सकते हैं कि एंसेंबल लर्निंग मेथड्स मेटा-एल्गोरिदम हैं जो कई मशीन लर्निंग तरीकों को एकल प्रेडिक्टिव मॉडल में मिलाकर प्रदर्शन बढ़ाते हैं। एंसेंबल मेथड्स बैगिंग अप्रोच से वैरिएंस को घटा सकते हैं, बूस्टिंग अप्रोच से बायस को घटा सकते हैं, या स्टैकिंग अप्रोच से प्रेडिक्शन में सुधार कर सकते हैं।

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

बेस लर्नरों की विन्यास के आधार पर, एंसेंबल मेथड्स दो समूहों में बाँटे जा सकते हैं: पैरेलल एंसेंबल मेथड्स में बेस लर्नर समानांतर रूप से बनाए जाते हैं, उदाहरण के लिए रैंडम फॉरेस्ट। सीक्वेंशियल एंसेंबल मेथड्स में बेस लर्नर क्रमिक रूप से बनाए जाते हैं, उदाहरण के लिए AdaBoost।
बेस लर्नरों के प्रकार के आधार पर, एंसेंबल मेथड्स दो समूहों में बाँटे जा सकते हैं: होमोजीनस एंसेंबल मेथड में हर इटरेशन में एक ही प्रकार का बेस लर्नर इस्तेमाल होता है। हेटरोजीनस एंसेंबल मेथड में हर इटरेशन में अलग प्रकार का बेस लर्नर इस्तेमाल होता है।
Ada-boost या एडाप्टिव बूस्टिंग, 1996 में Yoav Freund और Robert Schapire द्वारा प्रस्तावित एंसेंबल बूस्टिंग क्लासिफायरों में से एक है। यह कई क्लासिफायरों को मिलाकर उनकी सटीकता बढ़ाता है। AdaBoost एक इटरेटिव एंसेंबल मेथड है। AdaBoost क्लासिफायर कई कमजोर प्रदर्शन वाले क्लासिफायरों को मिलाकर एक मजबूत क्लासिफायर बनाता है ताकि आपको उच्च सटीकता वाला मजबूत क्लासिफायर मिले। Adaboost के पीछे मूल विचार यह है कि प्रत्येक इटरेशन में क्लासिफायरों और प्रशिक्षण नमूनों के वज़न ऐसे सेट किए जाएँ कि असामान्य ऑब्ज़र्वेशनों की सटीक प्रेडिक्शन सुनिश्चित हो। कोई भी मशीन लर्निंग एल्गोरिदम, यदि वह प्रशिक्षण सेट पर वज़न स्वीकार करता है, तो बेस क्लासिफायर के रूप में इस्तेमाल किया जा सकता है। Adaboost को दो शर्तें पूरी करनी चाहिए:
यह निम्न चरणों में काम करता है:

पहले आवश्यक लाइब्रेरी लोड करते हैं।
# Load libraries
from sklearn.ensemble import AdaBoostClassifier
from sklearn import datasets
# Import train_test_split function
from sklearn.model_selection import train_test_split
#Import scikit-learn metrics module for accuracy calculation
from sklearn import metrics
मॉडल बनाने के भाग में, आप IRIS डेटासेट का उपयोग कर सकते हैं, जो एक बहुत प्रसिद्ध मल्टी-क्लास क्लासिफिकेशन समस्या है। इस डेटासेट में 4 फीचर्स (sepal length, sepal width, petal length, petal width) और एक टार्गेट (फूल का प्रकार) है। इस डेटा में फूल की तीन क्लासें हैं: Setosa, Versicolour, और Virginica। डेटासेट scikit-learn लाइब्रेरी में उपलब्ध है, या आप इसे UCI Machine Learning लाइब्रेरी से भी डाउनलोड कर सकते हैं।
# Load data
iris = datasets.load_iris()
X = iris.data
y = iris.target
मॉडल के प्रदर्शन को समझने के लिए, डेटासेट को प्रशिक्षण सेट और टेस्ट सेट में बाँटना एक अच्छी रणनीति है।
आइए train_test_split() फ़ंक्शन का उपयोग करके डेटासेट को विभाजित करें। आपको 3 पैरामीटर पास करने हैं: फीचर्स, टार्गेट और टेस्ट सेट का आकार।
# Split dataset into training set and test set
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3) # 70% training and 30% test
Scikit-learn का उपयोग करके AdaBoost मॉडल बनाते हैं। AdaBoost डिफ़ॉल्ट रूप से Decision Tree Classifier का उपयोग करता है।
# Create adaboost classifer object
abc = AdaBoostClassifier(n_estimators=50,
learning_rate=1)
# Train Adaboost Classifer
model = abc.fit(X_train, y_train)
#Predict the response for test dataset
y_pred = model.predict(X_test)
"सबसे महत्वपूर्ण पैरामीटर हैं base_estimator, n_estimators, और learning_rate." (Adaboost Classifier, Chris Albon)
आइए अनुमान लगाएँ कि क्लासिफायर या मॉडल किस सटीकता से कल्टीवार के प्रकार का अनुमान लगा सकता है।
सटीकता वास्तविक टेस्ट सेट के मानों और प्रेडिक्टेड मानों की तुलना करके निकाली जा सकती है।
# Model Accuracy, how often is the classifier correct?
print("Accuracy:",metrics.accuracy_score(y_test, y_pred))
Accuracy: 0.8888888888888888
अच्छा, आपको 88.88% की सटीकता मिली, जिसे अच्छी सटीकता माना जाता है।
आगे के मूल्यांकन के लिए, आप अलग-अलग बेस एस्टिमेटर का उपयोग करके भी मॉडल बना सकते हैं।
मैंने SVC को बेस एस्टिमेटर के रूप में इस्तेमाल किया है। आप किसी भी ML लर्नर को बेस एस्टिमेटर के रूप में इस्तेमाल कर सकते हैं यदि वह sample weight स्वीकार करता है, जैसे Decision Tree, Support Vector Classifier।
# Load libraries
from sklearn.ensemble import AdaBoostClassifier
# Import Support Vector Classifier
from sklearn.svm import SVC
#Import scikit-learn metrics module for accuracy calculation
from sklearn import metrics
svc=SVC(probability=True, kernel='linear')
# Create adaboost classifer object
abc =AdaBoostClassifier(n_estimators=50, base_estimator=svc,learning_rate=1)
# Train Adaboost Classifer
model = abc.fit(X_train, y_train)
#Predict the response for test dataset
y_pred = model.predict(X_test)
# Model Accuracy, how often is the classifier correct?
print("Accuracy:",metrics.accuracy_score(y_test, y_pred))
Accuracy: 0.9555555555555556
अच्छा, आपको 95.55% का क्लासिफिकेशन रेट मिला, जिसे अच्छी सटीकता माना जाता है।
इस मामले में, SVC बेस एस्टिमेटर को Decision Tree बेस एस्टिमेटर की तुलना में बेहतर सटीकता मिल रही है।
AdaBoost लागू करना आसान है। यह कमजोर क्लासिफायर की गलतियों को क्रमवार सुधारता है और कमजोर लर्नरों को मिलाकर सटीकता बढ़ाता है। आप AdaBoost के साथ कई बेस क्लासिफायर का उपयोग कर सकते हैं। AdaBoost ओवरफिटिंग के प्रति कम संवेदनशील है। यह बात प्रयोगात्मक परिणामों से दिखती है, हालाँकि इसके लिए कोई ठोस कारण उपलब्ध नहीं है।
AdaBoost शोरयुक्त डेटा के प्रति संवेदनशील है। यह आउट्लायर्स से काफी प्रभावित होता है क्योंकि यह हर बिंदु को पूरी तरह फिट करने की कोशिश करता है। XGBoost की तुलना में AdaBoost धीमा है।
बधाई हो, आप इस ट्यूटोरियल के अंत तक पहुँच गए हैं!
इस ट्यूटोरियल में, आपने एंसेंबल मशीन लर्निंग अप्रोच, AdaBoost एल्गोरिदम, उसका काम करने का तरीका, Python Scikit-learn पैकेज का उपयोग करके मॉडल बनाना और उसका मूल्यांकन सीखा। साथ ही इसके फायदे और नुकसान पर भी चर्चा की गई।
मुझे आपके किसी भी फीडबैक या प्रश्न का इंतज़ार रहेगा। आप कमेंट छोड़कर प्रश्न पूछ सकते हैं, और मैं पूरी कोशिश करूँगा कि उसका उत्तर दूँ।
यदि आप Python में मशीन लर्निंग के बारे में और सीखना चाहते हैं, तो DataCamp का Extreme Gradient Boosting with XGBoost कोर्स और Python Machine Learning: Scikit-Learn Tutorial देखें।
Python कोर्स
कोर्स
कोर्स
कोर्स