Python में Boosting का एक इम्प्लीमेंटेशन
Boosting को समझने के सर्वोत्तम तरीकों में से एक है इसे व्यवहार में दिखाने की कोशिश करना। इसके लिए, हम इस Almond Types Classification Kaggle डेटासेट का उपयोग करेंगे, जिसमें बादाम की तीन प्रकारें हैं: MAMRA, SANORA, और REGULAR, तथा उनके विशिष्ट भौतिक गुण जैसे क्षेत्रफल, परिमाप और गोलाई।
प्रत्येक बादाम नमूने की विशेषताएँ उन्नत इमेज प्रोसेसिंग तकनीकों के माध्यम से निकाली गई थीं। डेटासेट में रिक्त मान उन स्थितियों का प्रतिनिधित्व करते हैं जहाँ बादाम की अभिविन्यास—उpright, बगल में या पीठ के बल रखने—ने फ़ीचर निष्कर्षण प्रक्रिया की सटीकता को प्रभावित किया।
आइए अब इस डेटासेट का उपयोग एक वर्गीकरण कार्य आज़माने के लिए करें। हम AdaBoost एल्गोरिदम का उपयोग करेंगे, जो, जैसा कि हमने कहा, कमजोर शिक्षार्थियों को मिलाकर एक मजबूत मॉडल बनाकर प्रदर्शन बढ़ाता है।
1. लाइब्रेरी इम्पोर्ट करना
हम आवश्यक लाइब्रेरियाँ इम्पोर्ट करने और बादाम डेटासेट लोड करने से शुरू करते हैं। फिर, हम फ़ीचर्स और टार्गेट वेरिएबल्स को अलग करते हैं।
import pandas as pd
almonds = pd.read_csv('Almond.csv', index_col=0)
X = almonds.drop('Type', axis=1)
y = almonds['Type']
2. मिसिंग डेटा हैंडल करना
अगले चरण में, हम KNN imputer का उपयोग करके मिसिंग मान भरते हुए डेटासेट को साफ़ करते हैं। इससे हमारे मॉडल के लिए पूर्ण डेटासेट सुनिश्चित होता है।
from sklearn.impute import KNNImputer
imputer = KNNImputer(n_neighbors=5)
X_imputed = imputer.fit_transform(X)
3. प्रशिक्षण और परीक्षण के लिए डेटा विभाजित करना
हम डेटा को प्रशिक्षण और परीक्षण सेट में बाँटते हैं ताकि आंका जा सके कि हमारा मॉडल नए डेटा को कितनी अच्छी तरह सँभालेगा।
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X_imputed, y, test_size=0.2, random_state=42)
4. एक निर्णय वृक्ष क्लासिफ़ायर प्रशिक्षित करना
यहाँ हम एक सरल निर्णय वृक्ष मॉडल प्रशिक्षित करते हैं, जो boosting से पहले एक आधारभूत सटीकता देता है।
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import accuracy_score
tree = DecisionTreeClassifier(max_depth=1, random_state=42)
tree.fit(X_train, y_train)
tree_accuracy = accuracy_score(y_test, tree.predict(X_test))
5. AdaBoost से प्रदर्शन बढ़ाना
इसके बाद हम AdaBoost का उपयोग करते हैं ताकि हमारे निर्णय वृक्ष की गलतियों पर ध्यान देकर उसकी सटीकता बढ़ाई जा सके।
from sklearn.ensemble import AdaBoostClassifier
ada = AdaBoostClassifier(base_estimator=tree, n_estimators=100, learning_rate=1.0, random_state=42)
ada.fit(X_train, y_train)
ada_accuracy = accuracy_score(y_test, ada.predict(X_test))
# Print the accuracies
print(f'Accuracy of the weak learner (Decision Tree): {tree_accuracy * 100:.2f}%')
print(f'Accuracy of AdaBoost model: {ada_accuracy * 100:.2f}%')
6. अंतिम आउटपुट
अंत में, हम परिणामों की तुलना करते हैं और देखते हैं कि AdaBoost सटीकता में उल्लेखनीय सुधार लाता है।
Accuracy of the weak learner (Decision Tree): 43.14%
Accuracy of AdaBoost model: 61.50%
तो, निष्कर्ष क्या है? परिणाम AdaBoost के माध्यम से एंसेंबल लर्निंग की शक्ति को दर्शाते हैं। यहाँ कमजोर शिक्षार्थी एक निर्णय वृक्ष था जिसकी अधिकतम गहराई सिर्फ़ एक थी, जिसकी सटीकता लगभग 43% थी—चूँकि केवल तीन प्रकार के बादाम थे, 43% सटीकता औसत अनुमान से बहुत अधिक नहीं है। हालाँकि, जब इसी कमजोर शिक्षार्थी को 100 इटरेशन वाले AdaBoost मॉडल में बेस एस्टिमेटर के रूप में उपयोग किया गया, तो सटीकता 62% तक बढ़ गई।
एक कदम पीछे हटते हुए, सावधानी के तौर पर, यद्यपि हमारे Almonds डेटासेट पर AdaBoost ने अधिक सटीकता दिखाई, यह हर स्थिति के लिए सर्वोत्तम विकल्प नहीं हो सकता। ओवरफिटिंग का जोखिम रहता है, खासकर ऐसे छोटे डेटासेट के साथ, जहाँ मॉडल अत्यधिक जटिल हो सकता है। वास्तव में, सरल वर्गीकरण तकनीकें कुछ कार्यों के लिए उतना ही अच्छा या उससे बेहतर कर सकती हैं। इसलिए, हमने यहाँ अवधारणा को स्पष्ट करने के लिए AdaBoost का उपयोग किया, पर यह सोचना महत्वपूर्ण है कि क्या हमें सच में इतनी अधिक जटिलता चाहिए।
निष्कर्ष
Boosting मशीन लर्निंग के क्षेत्र में एक महत्वपूर्ण प्रगति का प्रतिनिधित्व करता है, जो भविष्यवाणी सटीकता बढ़ाने में एंसेंबल विधियों की शक्ति को प्रदर्शित करता है। जैसा कि हमने देखा, AdaBoost, Gradient Boosting और XGBoost जैसे boosting एल्गोरिदम एक बुनियादी सिद्धांत पर काम करते हैं: कई कमजोर मॉडलों को मिलाकर एक एकल, अधिक प्रभावी भविष्यवक्ता बनाना।
हालाँकि, यह याद रखना महत्वपूर्ण है कि boosting मशीन लर्निंग टूलकिट का सिर्फ़ एक उपकरण है। इसकी प्रभावशीलता विशिष्ट समस्या पर निर्भर कर सकती है। किसी भी मशीन लर्निंग तकनीक की तरह, boosting को कब और कैसे लागू करना है, यह समझना ही इसकी पूरी क्षमता का कुंजी है।
Boosting और अन्य मशीन लर्निंग अवधारणाओं की समझ को गहरा करने के लिए, DataCamp के व्यापक Machine Learning for Everyone करियर ट्रैक को देखें। जो और विशेषज्ञता हासिल करना चाहते हैं, उनके लिए Machine Learning Scientist with Python करियर ट्रैक उन्नत तकनीकों और व्यावहारिक अनुप्रयोगों पर गहन प्रशिक्षण प्रदान करता है।

विनोद चुगानी ने टोक्यो में जेपीमॉर्गन के सबसे कम उम्र के हेज फंड सेल्स डेस्क हेड के रूप में अपना करियर शुरू किया और बाद में लेहमन ब्रदर्स में व्यक्तिगत बिक्री का रिकॉर्ड बनाया, फिर 30 देशों में फैला एक इलेक्ट्रॉनिक्स डिस्ट्रीब्यूशन व्यवसाय बनाया, जिसकी आय SG$100 मिलियन से आगे बढ़ी, इसके बाद उन्होंने डेटा की ओर रुख किया। ड्यूक में अर्थशास्त्र के स्नातक और NYC डेटा साइंस अकादमी के पूर्व छात्र, वे मेवन पर ह्यूगो बोव्न-एंडरसन के Building AI Applications कोर्स के लिए 100+ आवेदनों में से तीन छात्रवृत्ति प्राप्तकर्ताओं में से एक थे। आज, वे DataCamp, KDnuggets, Machine Learning Mastery, और Statology के लिए सांख्यिकी से लेकर एजेंटिक एआई तक के विषयों पर लिखते हैं, और NYC डेटा साइंस अकादमी में डेटा प्रोफेशनलों को मेंटर करते हैं, उनके नाम पर 1,000 से अधिक एक-से-एक सत्र हैं।
अक्सर पूछे जाने वाले प्रश्न
मशीन लर्निंग में boosting क्या है?
Boosting एक एंसेंबल लर्निंग तकनीक है, जिसका उपयोग भविष्यवाणी मॉडलों की सटीकता बढ़ाने के लिए किया जाता है। यह कई कमजोर शिक्षार्थियों—जो यादृच्छिक अनुमान से थोड़ा ही बेहतर प्रदर्शन करते हैं—को एक एकल, मजबूत शिक्षार्थी में मिलाकर समग्र मॉडल के प्रदर्शन में महत्वपूर्ण सुधार लाती है।
Boosting bagging से कैसे भिन्न है?
Boosting और bagging दोनों एंसेंबल तकनीकें हैं जो बेहतर भविष्यवाणियों के लिए कई मॉडलों को जोड़ती हैं, लेकिन वे अलग तरह से काम करती हैं। Boosting मॉडल्स को क्रमवार प्रशिक्षित करता है, जहाँ हर नया मॉडल पिछले मॉडलों की त्रुटियों पर ध्यान देकर बायस कम करता और सटीकता बढ़ाता है। इसके विपरीत, bagging डेटा के अलग-अलग उपसमूहों पर मॉडलों को समानांतर में प्रशिक्षित करता है और उनके आउटपुट का औसत लेकर वेरियंस घटाता और स्थिरता बढ़ाता है। जहाँ boosting आउटलायर और शोर के प्रति संवेदनशील है, वहीं औसत लेने की विधि के कारण bagging इनके प्रति अधिक मज़बूत होता है।
क्या boosting का उपयोग क्लासिफिकेशन और रिग्रेशन दोनों समस्याओं में किया जा सकता है?
हाँ, boosting तकनीकों को क्लासिफिकेशन और रिग्रेशन, दोनों के लिए अनुकूलित किया जा सकता है। जहाँ AdaBoost आम तौर पर क्लासिफिकेशन समस्याओं में अधिक प्रयोग होता है, वहीं Gradient Boosting जैसे अन्य रूप रिग्रेशन के लिए भी प्रभावी हैं।
आप boosting इटरेशन की संख्या कैसे चुनते हैं?
Boosting एल्गोरिदम में इटरेशन की संख्या, या कमजोर शिक्षार्थियों की संख्या, आमतौर पर विशिष्ट डेटासेट और समस्या की जटिलता पर निर्भर करती है। इसे अंडरफिटिंग और ओवरफिटिंग के बीच संतुलन बनाने के लिए क्रॉस-वैलिडेशन या समान तकनीकों द्वारा निर्धारित किया जा सकता है।
AdaBoost अन्य boosting तकनीकों, जैसे Gradient Boosting, से कैसे भिन्न है?
AdaBoost गलत वर्गीकृत उदाहरणों के वज़न बढ़ाता है ताकि बाद के मॉडल इन चुनौतीपूर्ण मामलों पर ध्यान केंद्रित करें। इसके विपरीत, Gradient Boost पिछले मॉडलों की अवशिष्ट त्रुटियों पर नए शिक्षार्थियों को फ़िट करता है।
AdaBoost का उपयोग करने के मुख्य लाभ क्या हैं?
AdaBoost के मुख्य फायदे हैं इसकी सरलता, प्रभावशीलता, और यह तथ्य कि इसे कमजोर शिक्षार्थी के बारे में पूर्वज्ञान की आवश्यकता नहीं होती। यह बहुत लचीला भी है, किसी भी लर्निंग एल्गोरिदम के साथ जोड़ा जा सकता है, और अक्सर उन वर्गीकरणों में सफल रहता है जहाँ अन्य विधियाँ संघर्ष कर सकती हैं।
मशीन लर्निंग मॉडलों के प्रदर्शन को बढ़ाने के लिए AdaBoost के कुछ उल्लेखनीय विकल्प कौन से हैं?
AdaBoost के कुछ उल्लेखनीय विकल्पों में Gradient Boosting, XGBoost, CatBoost, LightGBM और HistGradientBoost शामिल हैं।
Boosting के अलावा एंसेंबल लर्निंग विधियों के कौन से प्रकार हैं?
Boosting के अलावा एंसेंबल लर्निंग के सामान्य रूपों में bagging और stacking शामिल हैं, जिनमें से प्रत्येक अधिकतम भविष्यवाणी क्षमता के लिए मॉडलों को एकीकृत करने की अलग रणनीतियाँ अपनाता है।
मशीन लर्निंग में हालिया प्रगति ने जटिल समस्याओं से निपटने के नए तरीके पेश किए हैं। Boosting एक ऐसी तकनीक है जो लगातार आशाजनक साबित हो रही है। यह कई एल्गोरिदम का उपयोग करके प्रदर्शन बेहतर बनाते हुए हमारे डेटा मॉडलिंग के तरीके को बदल रही है। जैसे-जैसे boosting की अवधारणा विकसित हो रही है, Gradient Boosting और XGBoost जैसे नए रूप उभरे हैं, जो गति और सटीकता की सीमाओं को आगे बढ़ा रहे हैं।
यदि आपको भविष्यवाणी मॉडलिंग के क्षेत्र में सीखने के लिए बहुत कुछ लग रहा है, तो चिंता न करें। हमारी Associate Data Scientist in Python या Data Scientist in Python करियर ट्रैक्स, और हमारा Explore Ensemble Learning Techniques ट्यूटोरियल आज़माएँ और सीखते रहें।
मशीन लर्निंग में Boosting
Boosting मशीन लर्निंग में एक शक्तिशाली एंसेंबल लर्निंग विधि है, जिसे विशेष रूप से कई कमजोर शिक्षार्थियों—ऐसे मॉडल जो यादृच्छिक अनुमान से बस थोड़ा बेहतर प्रदर्शन करते हैं—को मिलाकर एक एकल, मजबूत शिक्षार्थी बनाने के लिए डिज़ाइन किया गया है।
Boosting का सार एक आवर्तक प्रक्रिया में निहित है, जहाँ प्रत्येक कमजोर शिक्षार्थी अपने पूर्ववर्ती की त्रुटियों को सुधारने के लिए प्रशिक्षित किया जाता है, जिससे धीरे-धीरे समग्र मॉडल का प्रदर्शन बेहतर होता जाता है। पहले मॉडल्स द्वारा की गई गलतियों पर ध्यान केंद्रित करके, boosting कमजोर शिक्षार्थियों के संग्रह को अधिक सटीक मॉडल में बदल देती है।
Boosting कैसे काम करता है
Boosting क्रमिक मॉडल प्रशिक्षण में त्रुटियाँ घटाने पर ध्यान केंद्रित करते हुए व्यवस्थित प्रक्रिया के माध्यम से कमजोर शिक्षार्थियों को एक एकीकृत, मजबूत शिक्षार्थी में बदल देता है। इसमें शामिल चरण इस प्रकार हैं:
यह विधि प्रशिक्षण डेटा के कठिन मामलों पर अधिक गहनता से ध्यान देकर त्रुटियों को प्रभावी ढंग से कम करती है, जिसके परिणामस्वरूप मजबूत भविष्यवाणी प्रदर्शन मिलता है।
Boosting एल्गोरिदम के प्रकार
आइए कुछ सबसे प्रसिद्ध boosting एल्गोरिदम पर नज़र डालते हैं।
AdaBoost (Adaptive Boosting)
AdaBoost शुरुआती boosting एल्गोरिदम में से एक है। यह हर बार एक शिक्षार्थी जोड़ते समय प्रशिक्षण उदाहरणों का पुनर्वज़न करने पर ध्यान देता है, गलत वर्गीकृत उदाहरणों पर अधिक जोर देता है। AdaBoost विशेष रूप से द्विआधारी वर्गीकरण समस्याओं के लिए प्रभावी है। और जानने के लिए हमारा AdaBoost Classifier in Python ट्यूटोरियल पढ़ें।
Gradient Boosting
Gradient boosting क्रमवार मॉडल बनाता है और रास्ते में त्रुटियाँ सुधारता है। यह नए मॉडल जोड़ते समय लॉस को न्यूनतम करने के लिए ग्रेडिएंट डिसेंट एल्गोरिदम का उपयोग करता है। यह विधि लचीली है और रिग्रेशन तथा क्लासिफिकेशन दोनों समस्याओं के लिए प्रयोग की जा सकती है। हमारा ट्यूटोरियल A Guide to The Gradient Boosting Algorithm इस प्रक्रिया का विस्तार से वर्णन करता है।
XGBoost (Extreme Gradient Boosting)
XGBoost एक अनुकूलित वितरित ग्रेडिएंट बूस्टिंग लाइब्रेरी है और Kaggle पर कई प्रतियोगिता विजेताओं की पसंदीदा विधि है। इसे अत्यधिक कुशल, लचीला और पोर्टेबल होने के लिए डिज़ाइन किया गया है। यह Gradient Boosting फ़्रेमवर्क के अंतर्गत मशीन लर्निंग एल्गोरिदम लागू करता है, जो कई व्यावहारिक डेटा समस्याओं के लिए स्केलेबल और सटीक समाधान प्रदान करता है। अधिक विस्तृत अध्ययन के लिए हमारा Using XGBoost in Python ट्यूटोरियल देखें और हमारा समर्पित कोर्स लें: Extreme Gradient Boosting with XGBoost।
एंसेंबल विधियाँ
Boosting एंसेंबल विधियों के बड़े समूह का हिस्सा है। एंसेंबल विधियाँ मशीन लर्निंग में एक ऐसा दृष्टिकोण हैं जो कई मॉडलों को मिलाकर किसी एकल मॉडल की तुलना में अधिक सटीक भविष्यवाणियाँ उत्पन्न करते हैं। ये तकनीकें विभिन्न मॉडलों की विविधता—प्रत्येक की अपनी-अपनी ताकतों और सीमाओं—का उपयोग कर सामूहिक निर्णय-निर्माण प्रक्रिया तैयार करती हैं।
एंसेंबल विधियों के अलग-अलग प्रकार
Boosting एक प्रमुख एंसेंबल लर्निंग तकनीक है, लेकिन यह कई में से केवल एक है जो मॉडलों की भविष्यवाणी क्षमता को बढ़ाती है। आइए कुछ अन्य तकनीकों पर नज़र डालें।
Boosting बनाम Bagging
Boosting की अक्सर विशेष रूप से bagging से तुलना की जाती है। यद्यपि कुछ मायनों में वे समान हैं, लेकिन उनके बीच बड़े अंतर भी हैं। नीचे boosting और bagging की तुलना करती तालिका दी गई है:
यदि आप bagging के बारे में और जानने में रुचि रखते हैं, तो हमारा sklearn पर आधारित ट्यूटोरियल What is Bagging in Machine Learning? पढ़ें।