Machine Learning Academy · पाठ

Out-of-Bag त्रुटि: फ़ॉरेस्ट के भीतर निःशुल्क सत्यापन

शिक्षार्थी oob_score सक्षम करेंगे, समझेंगे कि प्रत्येक ट्री केवल लगभग 63% डेटा देखता है और OOB नमूनों को निष्पक्ष सत्यापन-समुच्चय के रूप में उपयोग करेंगे।

पाठ 3, कुल 4 में से13 चरण

Out-of-Bag त्रुटि: फ़ॉरेस्ट के भीतर निःशुल्क सत्यापन, CoddyKit पर Machine Learning Academy का एक निःशुल्क पाठ है। यह 4 में से 3वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह Machine Learning Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Machine Learning Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

आउट-ऑफ़-बैग त्रुटि क्या है

जब रैंडम फ़ॉरेस्ट प्रत्येक ट्री को बूटस्ट्रैप नमूने पर प्रशिक्षित करता है, तो लगभग 37% प्रशिक्षण उदाहरण उस नमूने में शामिल नहीं होते। ये आउट-ऑफ़-बैग (OOB) उदाहरण प्रशिक्षण के दौरान ट्री के लिए अदृश्य रहते हैं, इसलिए उन पर ट्री का पूर्वानुमान ईमानदार, अलग रखे गए डेटा पर किया गया पूर्वानुमान होता है। किसी दिए गए उदाहरण को बाहर रखने वाली सभी ट्री के OOB पूर्वानुमानों को एकत्र करके हमें मॉडल की सामान्यीकरण त्रुटि का लगभग निष्पक्ष अनुमान मिलता है — पूरी तरह निःशुल्क, और अलग सत्यापन विभाजन की कोई आवश्यकता नहीं होती।

OOB पूर्वानुमान की गणना कैसे होती है

प्रत्येक प्रशिक्षण उदाहरण x_i के लिए, scikit-learn उन सभी ट्री की पहचान करता है जिन्होंने अपने बूटस्ट्रैप नमूने में x_i को नहीं देखा। केवल वही ट्री x_i के पूर्वानुमान के लिए मतदान करती हैं। x_i का अंतिम OOB पूर्वानुमान उन ट्री के मतों का बहुमत (वर्गीकरण) या औसत (प्रतिगमन) होता है। यह प्रक्रिया प्रत्येक प्रशिक्षण उदाहरण के लिए होती है, जिससे पूरे प्रशिक्षण समुच्चय का OOB पूर्वानुमान प्राप्त होता है। इन पूर्वानुमानों की वास्तविक लेबल से तुलना करने पर OOB त्रुटि मिलती है।

scikit-learn में OOB स्कोर सक्षम करना

RandomForestClassifier या RandomForestRegressor बनाते समय oob_score=True निर्धारित करें। .fit() चलाने के बाद, oob_score_ विशेषता OOB सटीकता (या प्रतिगमन के लिए R²) रखती है। प्रत्येक नमूने के विस्तृत OOB पूर्वानुमानों के लिए oob_decision_function_ (वर्ग संभावनाएँ) या oob_prediction_ (प्रतिगमन) का उपयोग करें। OOB स्कोर मूलतः ऐसा क्रॉस-वैलिडेशन अनुमान है जिसमें एक फ़ॉरेस्ट को छोड़कर सत्यापन किया जाता है और जो प्रशिक्षण के उप-उत्पाद के रूप में निःशुल्क प्राप्त होता है।

from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import cross_val_score
import numpy as np

X, y = load_breast_cancer(return_X_y=True)
rf = RandomForestClassifier(n_estimators=200, oob_score=True, random_state=42)
rf.fit(X, y)

print('OOB score:', round(rf.oob_score_, 4))
cv_score = cross_val_score(rf, X, y, cv=5).mean()
print('5-fold CV score:', round(cv_score, 4))

OOB त्रुटि बनाम क्रॉस-वैलिडेशन

OOB त्रुटि क्रॉस-वैलिडेशन सटीकता का निकट अनुमान देती है (आमतौर पर 1–2% के भीतर), लेकिन इसकी गणना प्रशिक्षण की कोई अतिरिक्त लागत के बिना होती है। क्रॉस-वैलिडेशन मॉडल को कई बार प्रशिक्षित करता है (5-फ़ोल्ड या 10-फ़ोल्ड के लिए क्रमशः 5 या 10 बार), जबकि OOB स्कोर एक ही प्रशिक्षण प्रक्रिया का उपयोग करता है। समझौता यह है कि प्रत्येक प्रशिक्षण बिंदु के कई ट्री में आउट-ऑफ़-बैग होने के लिए पर्याप्त ट्री आवश्यक हैं (आमतौर पर 100 या अधिक)। बहुत छोटे फ़ॉरेस्ट में कुछ बिंदु बहुत कम ट्री में आउट-ऑफ़-बैग हो सकते हैं, जिससे OOB अनुमान अस्थिर हो जाता है।

n_estimators के फलन के रूप में OOB स्कोर

जैसे-जैसे आप n_estimators बढ़ाते हैं, OOB स्कोर स्थिर होने लगता है। बहुत कम पेड़ों की स्थिति में, कुछ प्रशिक्षण उदाहरण केवल 1-2 पेड़ों में ही बैग से बाहर हो सकते हैं, जिससे प्रत्येक उदाहरण के लिए पूर्वानुमान अस्थिर हो जाते हैं। जैसे-जैसे वन बड़ा होता है, प्रत्येक उदाहरण का औसत अधिक OOB पेड़ों पर निकाला जाता है और अनुमान अभिसरित होता है। OOB स्कोर बनाम n_estimators का आलेख बनाना घटते लाभ के बिंदु को खोजने का एक तेज़ तरीका है — वह बिंदु जहाँ अधिक पेड़ जोड़ने से स्कोर में सार्थक सुधार नहीं होता।

from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import load_breast_cancer

X, y = load_breast_cancer(return_X_y=True)
for n in [10, 50, 100, 200, 500]:
    rf = RandomForestClassifier(n_estimators=n, oob_score=True, random_state=42)
    rf.fit(X, y)
    print(f'n_estimators={n:4d}: OOB={rf.oob_score_:.4f}')

प्रतिगमन वनों के लिए OOB

RandomForestRegressor के लिए, oob_score=True सक्षम करने पर डिफ़ॉल्ट रूप से OOB पूर्वानुमानों पर R² स्कोर मिलता है। आप oob_prediction_ तक भी पहुँच सकते हैं — ये प्रत्येक प्रशिक्षण बिंदु के लिए उसके OOB पेड़ों से प्राप्त वास्तविक पूर्वानुमानित मान होते हैं — और अपनी पसंद का कोई भी मापदंड, जैसे MAE या RMSE, निकाल सकते हैं। यह तब उपयोगी होता है जब R² आपकी समस्या के लिए सही मापदंड न हो, जैसे तब जब आप त्रुटियों के निरपेक्ष पैमाने पर ध्यान देते हों।

from sklearn.ensemble import RandomForestRegressor
from sklearn.datasets import fetch_california_housing
from sklearn.metrics import mean_absolute_error
import numpy as np

X, y = fetch_california_housing(return_X_y=True)
rfr = RandomForestRegressor(n_estimators=100, oob_score=True, random_state=42)
rfr.fit(X, y)

print('OOB R²:', round(rfr.oob_score_, 4))
oob_mae = mean_absolute_error(y, rfr.oob_prediction_)
print('OOB MAE:', round(oob_mae, 4))

हाइपरपैरामीटर समायोजन के लिए OOB का उपयोग

OOB स्कोर निकालने के लिए कोई अतिरिक्त लागत नहीं होती, इसलिए आप सत्यापन खंड अलग रखे बिना हाइपरपैरामीटर सेटिंग्स को तेज़ी से आज़माने के लिए इसका उपयोग कर सकते हैं। बस संभावित मानों पर एक-एक करके चलें, प्रत्येक विन्यास के लिए एक बार प्रशिक्षण करें और oob_score_ की तुलना करें। यह तेज़ी से विशेषता चयन करने के लिए विशेष रूप से उपयोगी है (विशेषताएँ हटाकर OOB में बदलाव देखना) या max_features और min_samples_leaf सेट करने के लिए। ध्यान रखें कि बहुत अधिक आयाम वाली स्थितियों में OOB अनुमान थोड़ा अधिक आशावादी हो सकता है।

from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import load_breast_cancer

X, y = load_breast_cancer(return_X_y=True)
results = []
for msl in [1, 3, 5, 10, 20]:
    rf = RandomForestClassifier(n_estimators=200, min_samples_leaf=msl, oob_score=True, random_state=42)
    rf.fit(X, y)
    results.append((msl, round(rf.oob_score_, 4)))

best = max(results, key=lambda x: x[1])
for msl, score in results:
    print(f'min_samples_leaf={msl:3d}: OOB={score}')
print('Best:', best)

प्रायिकता अनुमानों के लिए OOB निर्णय फलन

oob_score=True के साथ प्रशिक्षण के बाद, oob_decision_function_ विशेषता (n_samples, n_classes) आकार का एक मैट्रिक्स संग्रहीत करती है, जिसमें OOB पूर्वानुमानों से प्राप्त वर्ग-प्रायिकताएँ होती हैं। इन प्रायिकताओं का उपयोग स्वयं प्रशिक्षण समुच्चय पर कैलिब्रेशन वक्र, ROC वक्र या प्रिसीजन-रिकॉल वक्र बनाने के लिए किया जा सकता है — इसके लिए परीक्षण समुच्चय को छूने की आवश्यकता नहीं होती। विकास के शुरुआती चरण में मॉडल के व्यवहार की जाँच करने के लिए यह बहुत प्रभावशाली है।

from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import load_breast_cancer
from sklearn.metrics import roc_auc_score

X, y = load_breast_cancer(return_X_y=True)
rf = RandomForestClassifier(n_estimators=200, oob_score=True, random_state=42)
rf.fit(X, y)

oob_probs = rf.oob_decision_function_[:, 1]  # prob of positive class
auc = roc_auc_score(y, oob_probs)
print('OOB AUC-ROC:', round(auc, 4))

पर्याप्त OOB कवरेज सुनिश्चित करना

यदि किसी पेड़ के बूटस्ट्रैप नमूने में कोई प्रशिक्षण उदाहरण शामिल नहीं है, तो वह उदाहरण उस पेड़ द्वारा कवर किया गया OOB उदाहरण माना जाता है। बड़ी संख्याओं के नियम के अनुसार, पर्याप्त पेड़ होने पर प्रत्येक उदाहरण के लिए कई OOB पेड़ होंगे। हालांकि, बहुत छोटे डेटासेट और कम पेड़ों की स्थिति में कुछ उदाहरण केवल 1-2 पेड़ों में OOB हो सकते हैं, जिससे अलग-अलग पूर्वानुमान अस्थिर हो जाते हैं। सामान्य नियम के रूप में, विश्वसनीय OOB अनुमानों के लिए कम-से-कम 100 पेड़ उपयोग करें। आप यह जाँच सकते हैं कि oob_decision_function_ की सभी प्रविष्टियाँ शून्येतर हैं या नहीं।

पूर्ण ML कार्यप्रवाह में OOB त्रुटि

एक सामान्य रैंडम फ़ॉरेस्ट कार्यप्रवाह में: (1) oob_score=True के साथ सभी उपलब्ध लेबलयुक्त डेटा पर प्रशिक्षण करें, (2) तेज़ पुनरावृत्तियों के माध्यम से हाइपरपैरामीटर समायोजित करने के लिए OOB स्कोर का उपयोग करें, (3) संतुष्ट होने पर अंतिम हाइपरपैरामीटर के साथ फिर से प्रशिक्षण करें (ईमानदार स्कोर के लिए OOB का उपयोग जारी रखते हुए), और (4) वास्तविक अलग रखे गए परीक्षण समुच्चय पर केवल एक बार पूर्वानुमान लगाएँ। इस कार्यप्रवाह से आप प्रशिक्षण डेटा का अधिकतम उपयोग कर सकते हैं — आपको कभी भी सत्यापन खंड अलग रखने की आवश्यकता नहीं होती — और फिर भी विकास के दौरान प्रदर्शन का विश्वसनीय अनुमान मिलता रहता है।

स्मृति और गति संबंधी विचार

OOB स्कोरिंग सक्षम करने पर scikit-learn को प्रशिक्षण के दौरान अतिरिक्त लेखा-जोखा संबंधी डेटा संग्रहीत करना पड़ता है, जिससे स्मृति का उपयोग थोड़ा बढ़ जाता है। बहुत बड़े डेटासेट (लाखों पंक्तियों) और कई पेड़ों की स्थिति में यह अतिरिक्त बोझ महत्वपूर्ण हो सकता है। ऐसे मामलों में छोटा अलग रखा हुआ समुच्चय या एकल सत्यापन खंड उपयोग करें। यह भी ध्यान दें कि OOB पूर्वानुमान केवल प्रशिक्षण उदाहरणों के लिए उपलब्ध होते हैं — नए, अनदेखे परीक्षण उदाहरणों पर सामान्य तरीके से .predict() के माध्यम से पूर्वानुमान लगाने के लिए आपको अब भी मॉडल की आवश्यकता होगी।

त्वरित जाँच

इस पाठ में सिखाई गई बैग से बाहर की त्रुटि की अवधारणाओं की अपनी समझ जाँचें।

पाठ का पुनरावलोकन

इस पाठ में आपने सीखा: OOB उदाहरण प्रशिक्षण डेटा के वे लगभग 37% भाग होते हैं जिन्हें प्रत्येक बूटस्ट्रैप नमूने से बाहर रखा जाता है, OOB पूर्वानुमानों का समुच्चयन सामान्यीकरण त्रुटि का बिना अतिरिक्त लागत वाला ईमानदार अनुमान देता है, और अलग सत्यापन खंड के बिना हाइपरपैरामीटर को तेज़ी से समायोजित करने के लिए oob_score_ का उपयोग किया जा सकता है। अगले पाठ में हम अलग-अलग मॉडल प्रकारों को मिलाने वाले Voting Ensembles का अध्ययन करेंगे।

शुरुआत निःशुल्क

एआई शिक्षक के साथ Python सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
30
पाठ
120

अक्सर पूछे जाने वाले प्रश्न

क्या “Out-of-Bag त्रुटि: फ़ॉरेस्ट के भीतर निःशुल्क सत्यापन” पाठ निःशुल्क है?

हाँ—“Out-of-Bag त्रुटि: फ़ॉरेस्ट के भीतर निःशुल्क सत्यापन” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और Machine Learning Academy पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। Machine Learning Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“Out-of-Bag त्रुटि: फ़ॉरेस्ट के भीतर निःशुल्क सत्यापन” में मैं क्या सीखूँगा?

शिक्षार्थी oob_score सक्षम करेंगे, समझेंगे कि प्रत्येक ट्री केवल लगभग 63% डेटा देखता है और OOB नमूनों को निष्पक्ष सत्यापन-समुच्चय के रूप में उपयोग करेंगे। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Machine Learning Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या Machine Learning Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Machine Learning Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 3वाँ पाठ है।

“Out-of-Bag त्रुटि: फ़ॉरेस्ट के भीतर निःशुल्क सत्यापन” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस Machine Learning Academy पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर Machine Learning Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. Bootstrap Aggregation (Bagging) की व्याख्या
  2. यादृच्छिक फ़ीचर चयन: Random Forest की युक्ति
  3. Out-of-Bag त्रुटि: फ़ॉरेस्ट के भीतर निःशुल्क सत्यापन
  4. Voting Ensemble: Hard Vote बनाम Soft Vote
← Machine Learning Academy पर वापस जाएँ