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

Python में AdaBoost क्लासिफायर

एंसेंबल अप्रोच, AdaBoost एल्गोरिदम का कामकाज समझें और Python में AdaBoost मॉडल बनाना सीखें।
अपडेट किया गया 25 सित॰ 2026  · 8 मि॰ पढ़ें

AI के साथ खोजें

ChatGPTClaudePerplexity

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

एंसेंबल मशीन लर्निंग अप्रोच

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

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

  2. बूस्टिंग एल्गोरिदम कम-सटीकता क्लासिफायरों के सेट से अत्यधिक सटीक क्लासिफायर बनाते हैं। कम-सटीकता क्लासिफायर (या कमजोर क्लासिफायर) सिक्का उछालने से बेहतर सटीकता प्रदान करते हैं। उच्च-सटीकता क्लासिफायर (या मजबूत क्लासिफायर) की त्रुटि दर 0 के करीब होती है। बूस्टिंग एल्गोरिदम उन मॉडलों पर नज़र रखते हैं जो सटीक प्रेडिक्शन करने में विफल रहे। बूस्टिंग एल्गोरिदम पर ओवरफिटिंग की समस्या का कम असर पड़ता है। निम्न तीन एल्गोरिदम डेटा साइंस प्रतियोगिताओं में अत्यधिक लोकप्रिय हुए हैं।

    • AdaBoost (एडाप्टिव बूस्टिंग)
    • ग्रेडिएंट ट्री बूस्टिंग
    • XGBoost
  3. स्टैकिंग (या स्टैक्ड जेनरलाइज़ेशन) एक एंसेंबल तकनीक है जो कई बेस क्लासिफिकेशन मॉडलों की प्रेडिक्शनों को मिलाकर एक नया डेटा सेट बनाती है। इस नए डेटा को किसी दूसरे क्लासिफायर के लिए इनपुट डेटा माना जाता है। यही क्लासिफायर समस्या को हल करने के लिए लगाया जाता है। स्टैकिंग को अक्सर ब्लेंडिंग भी कहा जाता है।

एंसेंबल मशीन लर्निंग अप्रोच

बेस लर्नरों की विन्यास के आधार पर, एंसेंबल मेथड्स दो समूहों में बाँटे जा सकते हैं: पैरेलल एंसेंबल मेथड्स में बेस लर्नर समानांतर रूप से बनाए जाते हैं, उदाहरण के लिए रैंडम फॉरेस्ट। सीक्वेंशियल एंसेंबल मेथड्स में बेस लर्नर क्रमिक रूप से बनाए जाते हैं, उदाहरण के लिए AdaBoost।

बेस लर्नरों के प्रकार के आधार पर, एंसेंबल मेथड्स दो समूहों में बाँटे जा सकते हैं: होमोजीनस एंसेंबल मेथड में हर इटरेशन में एक ही प्रकार का बेस लर्नर इस्तेमाल होता है। हेटरोजीनस एंसेंबल मेथड में हर इटरेशन में अलग प्रकार का बेस लर्नर इस्तेमाल होता है।

AdaBoost क्लासिफायर

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

  1. क्लासिफायर को विभिन्न वज़नित प्रशिक्षण उदाहरणों पर इंटरएक्टिव तरीके से प्रशिक्षित किया जाना चाहिए।
  2. हर इटरेशन में, यह प्रशिक्षण त्रुटि को न्यूनतम कर इन उदाहरणों के लिए उत्कृष्ट फिट देने की कोशिश करता है।

AdaBoost एल्गोरिदम कैसे काम करता है?

यह निम्न चरणों में काम करता है:

  1. शुरुआत में, Adaboost यादृच्छिक रूप से एक प्रशिक्षण सबसेट चुनता है।
  2. यह गत प्रशिक्षण की सटीक प्रेडिक्शन के आधार पर प्रशिक्षण सेट का चयन करके AdaBoost मशीन लर्निंग मॉडल को क्रमवार प्रशिक्षित करता है।
  3. गलत वर्गीकृत ऑब्ज़र्वेशनों को उच्च वज़न सौंपता है ताकि अगली इटरेशन में इन ऑब्ज़र्वेशनों के वर्गीकरण की संभावना अधिक हो।
  4. साथ ही, प्रत्येक इटरेशन में क्लासिफायर की सटीकता के अनुसार प्रशिक्षित क्लासिफायर को वज़न दिया जाता है। अधिक सटीक क्लासिफायर को अधिक वज़न मिलता है।
  5. यह प्रक्रिया तब तक चलती है जब तक पूरा प्रशिक्षण डेटा बिना त्रुटि के फिट न हो जाए, या निर्दिष्ट अधिकतम एस्टिमेटर्स की संख्या तक न पहुँच जाए।
  6. वर्गीकरण के लिए, आपने जो सभी लर्निंग एल्गोरिदम बनाए हैं, उनके बीच "वोट" कराएँ।
AdaBoost एल्गोरिदम कैसे काम करता है?

Python में मॉडल बनाना

आवश्यक लाइब्रेरी आयात करना

पहले आवश्यक लाइब्रेरी लोड करते हैं।

# 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

AdaBoost मॉडल बनाना

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)

  • base_estimator: यह मॉडल को प्रशिक्षित करने के लिए उपयोग किया जाने वाला कमजोर लर्नर है। डिफ़ॉल्ट रूप से प्रशिक्षण के लिए DecisionTreeClassifier का उपयोग करता है। आप अलग मशीन लर्निंग एल्गोरिदम भी निर्दिष्ट कर सकते हैं।
  • n_estimators: क्रमवार प्रशिक्षित किए जाने वाले कमजोर लर्नरों की संख्या।
  • learning_rate: यह कमजोर लर्नरों के वज़नों में योगदान देता है। डिफ़ॉल्ट मान 1 होता है।

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

आइए अनुमान लगाएँ कि क्लासिफायर या मॉडल किस सटीकता से कल्टीवार के प्रकार का अनुमान लगा सकता है।

सटीकता वास्तविक टेस्ट सेट के मानों और प्रेडिक्टेड मानों की तुलना करके निकाली जा सकती है।

# 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

Python कोर्स

कोर्स

Python परिचय

4 घंटा
7.1M
Python के साथ डेटा विश्लेषण की बुनियादी बातें सिर्फ चार घंटे में सीखें। यह ऑनलाइन पाठ्यक्रम Python इंटरफ़ेस का परिचय देगा और लोकप्रिय पैकेजों का अन्वेषण करेगा।
विवरण देखेंRight Arrow
पाठ्यक्रम शुरू करें

कोर्स

Python में Data Science परिचय

4 घंटा
503.8K
Python से डेटा विज्ञान में उतरें और अपने डेटा का प्रभावी विश्लेषण व विज़ुअलाइज़ेशन करना सीखें। कोई कोडिंग अनुभव या कौशल की आवश्यकता नहीं।
और देखेंRight Arrow