CNTK - वर्गीकरण मॉडल

यह अध्याय आपको यह समझने में मदद करेगा कि CNTK में वर्गीकरण मॉडल के प्रदर्शन को कैसे मापें। आइए हम भ्रम मैट्रिक्स से शुरू करें।

असमंजस का जाल

कन्फ्यूजन मैट्रिक्स - अनुमानित आउटपुट बनाम अनुमानित आउटपुट के साथ एक तालिका एक वर्गीकरण समस्या के प्रदर्शन को मापने का सबसे आसान तरीका है, जहां आउटपुट दो या अधिक प्रकार की कक्षाओं का हो सकता है।

यह समझने के लिए कि यह कैसे काम करता है, हम एक द्विआधारी वर्गीकरण मॉडल के लिए एक भ्रम मैट्रिक्स बनाने जा रहे हैं जो भविष्यवाणी करता है कि क्रेडिट कार्ड लेनदेन सामान्य था या धोखाधड़ी। इसे निम्नानुसार दिखाया गया है -

वास्तविक धोखाधड़ी वास्तविक सामान्य

Predicted fraud

सच्चा सकारात्मक

सकारात्मक झूठी

Predicted normal

मिथ्या नकारात्मक

सच्चा नकारात्मक

जैसा कि हम देख सकते हैं, उपरोक्त नमूना भ्रम मैट्रिक्स में 2 कॉलम हैं, एक वर्ग धोखाधड़ी के लिए और दूसरा वर्ग सामान्य के लिए। उसी तरह हमारे पास 2 पंक्तियाँ हैं, एक को वर्ग धोखाधड़ी के लिए जोड़ा जाता है और दूसरे को सामान्य वर्ग के लिए जोड़ा जाता है। निम्नलिखित भ्रम मैट्रिक्स से जुड़े शब्दों की व्याख्या है -

  • True Positives - जब दोनों वास्तविक बिंदु और अनुमानित बिंदु डेटा बिंदु 1 है।

  • True Negatives - जब डेटा बिंदु का वास्तविक वर्ग और अनुमानित कक्षा दोनों है।

  • False Positives - जब डेटा बिंदु का वास्तविक वर्ग 0 है और डेटा बिंदु का अनुमानित वर्ग 1 है।

  • False Negatives - जब डेटा बिंदु का वास्तविक वर्ग 1 है और डेटा बिंदु का अनुमानित वर्ग 0 है।

आइए देखें, हम भ्रम मैट्रिक्स से विभिन्न चीजों की संख्या की गणना कैसे कर सकते हैं -

  • Accuracy- यह हमारे एमएल वर्गीकरण मॉडल द्वारा की गई सही भविष्यवाणियों की संख्या है। इसकी गणना निम्न सूत्र की सहायता से की जा सकती है -

  • Precision−यह बताता है कि हमने जिन नमूनों की भविष्यवाणी की थी, उनमें से कितने नमूनों की सही ढंग से भविष्यवाणी की गई थी। इसकी गणना निम्न सूत्र की सहायता से की जा सकती है -

  • Recall or Sensitivity- स्मरण करो हमारे एमएल वर्गीकरण मॉडल द्वारा लौटाए गए सकारात्मक की संख्या है। दूसरे शब्दों में, यह हमें बताता है कि मॉडल में डेटासेट के कितने धोखाधड़ी के मामलों का वास्तव में पता लगाया गया था। इसकी गणना निम्न सूत्र की सहायता से की जा सकती है -

  • Specificity- वापस बुलाने के लिए, यह हमारे एमएल वर्गीकरण मॉडल द्वारा लौटाए गए नकारात्मक की संख्या देता है। इसकी गणना निम्न सूत्र की सहायता से की जा सकती है -

एफ उपाय

हम एफ-माप का उपयोग भ्रम मैट्रिक्स के विकल्प के रूप में कर सकते हैं। इसके पीछे मुख्य कारण, हम एक ही समय में रिकॉल और परिशुद्धता को अधिकतम नहीं कर सकते हैं। इन मैट्रिक्स के बीच बहुत मजबूत संबंध है और इसे निम्नलिखित उदाहरण की मदद से समझा जा सकता है -

मान लीजिए, हम सेल के नमूनों को कैंसर या सामान्य के रूप में वर्गीकृत करने के लिए एक डीएल मॉडल का उपयोग करना चाहते हैं। यहां, अधिकतम सटीकता तक पहुंचने के लिए हमें भविष्यवाणियों की संख्या 1 को कम करने की आवश्यकता है। हालांकि, यह हमें लगभग 100 प्रतिशत सटीकता तक पहुंचा सकता है, लेकिन याद रखना वास्तव में कम हो जाएगा।

दूसरी ओर, यदि हम अधिकतम याद तक पहुंचना चाहते हैं, तो हमें यथासंभव भविष्यवाणियां करने की आवश्यकता है। हालांकि, यह हमें लगभग 100 प्रतिशत याद रखने के लिए पहुंचा सकता है, लेकिन परिशुद्धता वास्तव में कम हो जाएगी।

व्यवहार में, हमें सटीक और याद के बीच संतुलन बनाने का तरीका खोजने की आवश्यकता है। एफ-माप मीट्रिक हमें ऐसा करने की अनुमति देता है, क्योंकि यह सटीक और याद के बीच एक हार्मोनिक औसत व्यक्त करता है।

इस सूत्र को एफ 1-माप कहा जाता है, जहां सटीक और याद के बराबर अनुपात प्राप्त करने के लिए बी नामक अतिरिक्त शब्द को 1 पर सेट किया जाता है। याद करने पर जोर देने के लिए, हम कारक B को 2 पर सेट कर सकते हैं। दूसरी ओर, परिशुद्धता पर जोर देने के लिए, हम कारक B को 0.5 पर सेट कर सकते हैं।

वर्गीकरण प्रदर्शन को मापने के लिए CNTK का उपयोग करना

पिछले अनुभाग में हमने आइरिस फूल डेटासेट का उपयोग करके एक वर्गीकरण मॉडल बनाया है। यहां, हम भ्रम मैट्रिक्स और एफ-माप मीट्रिक का उपयोग करके इसके प्रदर्शन को मापेंगे।

कंफ्यूजन मैट्रिक्स बनाना

हमने पहले से ही मॉडल बनाया है, इसलिए हम सत्यापन प्रक्रिया शुरू कर सकते हैं, जिसमें शामिल हैं confusion matrix, उसी पर। सबसे पहले, हम इसकी मदद से भ्रम मैट्रिक्स बनाने जा रहे हैंconfusion_matrix से कार्य करते हैं scikit-learn। इसके लिए, हमें अपने परीक्षण नमूनों के लिए वास्तविक लेबल और समान परीक्षण नमूनों के लिए अनुमानित लेबल की आवश्यकता है।

आइए पायथन कोड का उपयोग करके भ्रम मैट्रिक्स की गणना करें -

from sklearn.metrics import confusion_matrix
y_true = np.argmax(y_test, axis=1)
y_pred = np.argmax(z(X_test), axis=1)
matrix = confusion_matrix(y_true=y_true, y_pred=y_pred)
print(matrix)

उत्पादन

[[10 0 0]
[ 0 1 9]
[ 0 0 10]]

हम भी इस तरह के रूप में एक भ्रम मैट्रिक्स कल्पना करने के लिए हीटमैप समारोह का उपयोग कर सकते हैं -

import seaborn as sns
import matplotlib.pyplot as plt
g = sns.heatmap(matrix,
     annot=True,
     xticklabels=label_encoder.classes_.tolist(),
     yticklabels=label_encoder.classes_.tolist(),
     cmap='Blues')
g.set_yticklabels(g.get_yticklabels(), rotation=0)
plt.show()

हमारे पास एक एकल प्रदर्शन संख्या भी होनी चाहिए, जिसका उपयोग हम मॉडल की तुलना करने के लिए कर सकते हैं। इसके लिए, हमें उपयोग करके वर्गीकरण त्रुटि की गणना करने की आवश्यकता हैclassification_error वर्गीकरण मॉडल बनाते समय CNTK में मेट्रिक्स पैकेज से कार्य किया जाता है।

अब वर्गीकरण त्रुटि की गणना करने के लिए, डेटासेट के साथ हानि फ़ंक्शन पर परीक्षण विधि निष्पादित करें। उसके बाद, CNTK इस फ़ंक्शन के लिए इनपुट के रूप में हमारे द्वारा दिए गए नमूनों को लेगा और इनपुट फीचर्स X_ के आधार पर एक भविष्यवाणी करेगा।test

loss.test([X_test, y_test])

उत्पादन

{'metric': 0.36666666666, 'samples': 30}

एफ-माप को लागू करना

एफ-माप को लागू करने के लिए, CNTK में फमेसर नामक फ़ंक्शन भी शामिल है। हम सेल को रिप्लेस करके NN को प्रशिक्षित करते हुए इस फ़ंक्शन का उपयोग कर सकते हैंcntk.metrics.classification_errorके साथ एक कॉल करने के लिए cntk.losses.fmeasure मानदंड कारखाना कार्य को परिभाषित करते समय निम्नानुसार है -

import cntk
@cntk.Function
def criterion_factory(output, target):
   loss = cntk.losses.cross_entropy_with_softmax(output, target)
metric = cntk.losses.fmeasure(output, target)
   return loss, metric

Cntk.losses.fmeasure फ़ंक्शन का उपयोग करने के बाद, हम के लिए अलग-अलग आउटपुट प्राप्त करेंगे loss.test विधि कॉल इस प्रकार है -

loss.test([X_test, y_test])

उत्पादन

{'metric': 0.83101488749, 'samples': 30}