सामान्य तौर पर, क्लासिफायर का प्रदर्शन सटीकता की तुलना में किया जाता है, यह सही ढंग से वर्गीकृत उदाहरणों की संख्या का एक उदाहरण है जो कुल संख्याओं से विभाजित है। हालांकि, प्रशिक्षण डेटा से हम अपने क्लासिफायर से अपेक्षित त्रुटि का एक बेहतर अनुमान प्राप्त कर सकते हैं जब हम कलाकारों की टुकड़ी सीखने या बैगिंग तकनीकों का उपयोग कर रहे हैं।
आउट-ऑफ-बैग त्रुटि
एक्समैं
स्केलेर में ओब को लागू करने के लिए आपको अपनी रैंडम फ़ॉरेस्ट ऑब्जेक्ट बनाते समय इसे निर्दिष्ट करने की आवश्यकता होती है
from sklearn.ensemble import RandomForestClassifier
forest = RandomForestClassifier(n_estimators = 100, oob_score = True)
तब हम मॉडल को प्रशिक्षित कर सकते हैं
forest.fit(X_train, y_train)
print('Score: ', forest.score(X_train, y_train))
स्कोर: 0.979921928817
उम्मीद के मुताबिक प्रशिक्षण सेट का मूल्यांकन करते समय मॉडल की सटीकता बहुत अधिक है। हालांकि, यह अर्थहीन है क्योंकि आप अपने डेटा को बहुत अच्छी तरह से ओवरफिट कर सकते हैं और इस तरह आपका मॉडल बकवास है। हालाँकि, हम आउट-ऑफ-बैग स्कोर का उपयोग कर सकते हैं
print(forest.oob_score_)
.८६४५३२७२१०१
यह केवल उन पेड़ों का उपयोग करके प्रशिक्षण सेट में हमारे उदाहरणों का मूल्यांकन करने के लिए सटीकता है, जिसके लिए उन्हें छोड़ दिया गया था। अब के रूप में परीक्षण सेट पर स्कोर की गणना करते हैं
print('Score: ', forest.score(X_test, y_test))
स्कोर: 0.86517733935
हम देखते हैं कि ऊब द्वारा मापी गई सटीकता परीक्षण सेट के साथ प्राप्त की गई समान है। यह इस प्रकार सिद्धांत के माध्यम से है कि ओब सटीकता एक बेहतर मीट्रिक है जिसके द्वारा केवल स्कोर के बजाय आपके मॉडल के प्रदर्शन का मूल्यांकन किया जा सकता है। यह बैगिंग मॉडल का परिणाम है और इसे अन्य प्रकार के क्लासिफायर के साथ नहीं किया जा सकता है।
विभिन्न मैट्रिक्स का उपयोग करके ओब की गणना
हां, आप यह कर सकते हैं! हालाँकि, यह निर्भर करता है कि आपका कोड वास्तव में कैसे संरचित है। मुझे यकीन नहीं है कि आप cross_val_score
फ़ंक्शन के साथ ऑब और एयूसी को एक साथ कैसे शामिल कर सकते हैं । हालाँकि, यदि आप क्रॉस वेलिडेशन फोल्ड्स मैन्युअल रूप से कर रहे हैं तो आप निम्न कार्य कर सकते हैं, स्केलेर में रैंडम फॉरेस्ट एल्गोरिथ्म आपको ओब का निर्णय कार्य प्रदान करता है।
print(forest.oob_decision_function_)
तब वर्ग का उपयोग करके प्राप्त किया जा सकता है
from sklearn import metrics
pred_train = np.argmax(forest.oob_decision_function_,axis=1)
फिर हम निम्नलिखित का उपयोग करके AUC की गणना कर सकते हैं
metrics.roc_auc_score(y_train, pred_train)
.86217157846471204