TATECHATLAS
◎ हिन्दी
गणित और मॉडल / मार्गदर्शिका

दोहरे वर्गीकरण में झूठे सकारात्मक को कम करने के लिए मूल्यांकन मापदंडों का चयन

scikit-learn में दोहरे वर्गीकरण कार्यों में झूठे सकारात्मक दरों को न्यूनतम करने के लिए सटीकता-उन्मुख मेट्रिक्स, थ्रेशोल्ड विश्लेषण और भ्रम मैट्रिक्स विघटन चुनने की एक व्यावहारिक मार्गदर्शिका।

इस पृष्ठ पर

जब व्यावसायिक प्राथमिकता झूठे सकारात्मक (false positives) को कम करना हो, तो मेट्रिक चयन प्रक्रिया यह परिभाषित करने से शुरू होनी चाहिए कि लक्ष्य संभाव्यता पूर्वानुमान है या बाइनरी निर्णय लेना। कड़ाई से सुसंगत स्कोरिंग फलन सत्य सीरम की तरह कार्य करते हैं, जो इस बात की गारंटी देते हैं कि इष्टतम पूर्वानुमानों को पुरस्कृत किया जाएगा। सटीकता (Precision) सीधे उन सकारात्मक पूर्वानुमानों का अनुपात मापती है जो वास्तव में सही हैं, जिससे यह झूठे सकारात्मक नियंत्रण के लिए प्राथमिक मेट्रिक बन जाती है। सटीकता-याददाश्त वक्र और confusion_matrix_at_thresholds थ्रेशोल्ड चयन की अनुमति देते हैं जो याददाश्त और झूठे सकारात्मक कमी के बीच संतुलन बनाता है। DET वक्र त्रुटि ट्रेडऑफ़ का पूरक दृश्यीकरण प्रदान करते हैं। विशिष्टता और fall out स्पष्ट रूप से मात्रा निर्धारित करते हैं कि मॉडल ऋणात्मक उदाहरणों को गलत तरीके से वर्गीकृत करने से कितनी अच्छी तरह बचता है। प्रशिक्षण हानि को मूल्यांकन मेट्रिक के साथ संरेखित करने से यह सुनिश्चित होता है कि अनुकूलन बेहतर अंतिम स्कोर की ओर ले जाता है।

निर्णय लक्ष्य को परिभाषित करें

कोई भी मेट्रिक चुनने से पहले, यह निर्धारित करें कि क्या डाउनस्ट्रीम एप्लिकेशन को कैलिब्रेटेड संभाव्यता अनुमान की आवश्यकता है या एक हार्ड बाइनरी लेबल की। यदि लक्ष्य संभाव्यता पूर्वानुमान है, तो log loss या Brier score जैसे उचित स्कोरिंग नियम अच्छी तरह कैलिब्रेटेड वितरणों को पुरस्कृत करते हैं। यदि लक्ष्य बाइनरी निर्णय लेना है, तो मेट्रिक को निर्णय सीमा की गुणवत्ता का मूल्यांकन करना चाहिए, जहां सटीकता, याददाश्त और भ्रम मैट्रिक्स गणना प्रासंगिक हो जाती हैं। scikit-learn दस्तावेज़ इस अंतर को स्कोरिंग फलन चयन में पहला कदम बताते हैं, जो सांख्यिकीय निर्णय सिद्धांत से प्रेरित है। झूठे सकारात्मक कमी के लिए, बाइनरी निर्णय दृष्टिकोण संचालक है क्योंकि आपको अंततः यह नियंत्रित करने की आवश्यकता है कि कितने ऋणात्मक उदाहरण गलत तरीके से सकारात्मक के रूप में चिह्नित किए जा रहे हैं।

>>> from sklearn.metrics import log_loss, precision_score

जब झूठे सकारात्मक एक निश्चित मौद्रिक लागत वहन करते हैं, तो sklearn.metrics.make_scorer के आसपास एक कॉलएबल के साथ एक कस्टम स्कोरर परिभाषित करें जो (y_true, y_pred) लेता है और एक ही संख्या लौटाता है, उदाहरण के लिए confusion_matrix(y_true, y_pred) से गणना किए गए एक भारित योग जैसे -fp_cost * fp - fn_cost * fn। उस स्कोरर को cross_validate में scoring पैरामीटर के माध्यम से पास करें। आवश्यकताएं: कॉलएबल को ठीक y_true और y_pred स्वीकार करना होगा, एक ही float लौटना होगा, और picklable होना चाहिए (इसे नेस्टेड लैम्ब्डा के बजाय मॉड्यूल स्तर पर परिभाषित करें)। cross_validate फिर test_score जैसे कुंजियों के तहत प्रति फोल्ड एक मान रिपोर्ट करेगा; औसत और फैलाव प्राप्त करने के लिए आप स्वयं फोल्ड्स को एकीकृत करें। सीमा: एक स्कोरर डिफ़ॉल्ट रूप से हार्ड पूर्वानुमान प्राप्त करता है, इसलिए थ्रेशोल्ड ट्यूनिंग estimator के अंदर होनी चाहिए या make_scorer में needs_threshold=True सेट करके लगातार स्कोर पास करने के लिए।

कड़ाई से सुसंगत स्कोरिंग का चयन करें

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

>>> from sklearn.metrics import make_scorer, precision_score

झूठे सकारात्मक लागतों का विश्लेषण करें

सटीकता को सच्चे सकारात्मक और कुल सच्चे सकारात्मक तथा झूठे सकारात्मक के योग के अनुपात के रूप में परिभाषित किया गया है। यह सीधे इस प्रश्न का उत्तर देता है: सभी वस्तुओं में से जो सकारात्मक के रूप में चिह्नित की गई थीं, कितनी वास्तव में सकारात्मक थीं? जब झूठे सकारात्मक उच्च संचालन लागत वहन करते हैं, जैसे स्पैम फिल्टर में वैध ईमेल को ब्लॉक करना, तो सटीकता को अधिकतम करने से अप्रत्याशित परिणामों की निरपेक्ष संख्या कम हो जाती है। F-beta स्कोर इसे सामान्यीकृत करता है जब beta एक से कम हो तो सटीकता को याददाश्त की तुलना में अधिक भार देने द्वारा। उदाहरण के लिए, beta=0.5 के साथ fbeta_score हार्मोनिक माध्य में सटीकता को याददाश्त का दोगुना भार देता है, जो FP कमी प्राथमिकता होने पर उपयुक्त बनाता है।

>>> from sklearn import metrics

सटीकता-याददाश्त वक्र के साथ थ्रेशोल्ड चुनें

precision_recall_curve फलन y_score में मौजूद सभी अलग-अलग संभाव्यता थ्रेशोल्ड के पार सटीकता और याददाश्त युग्मों की गणना करता है। यह आपको सच्चे सकारात्मक को पकड़ने और झूठे अलार्म से बचने के बीच ट्रेडऑफ़ को देखने की अनुमति देता है। स्पैम पहचान प्रणाली में झूठे सकारात्मक को कम करने के लिए, वह थ्रेशोल्ड खोजें जहां सटीकता अधिकतम हो जबकि स्वीकार्य याददाश्त बनाए रखी जाए, फिर FP गणना में कमी की पुष्टि करने के लिए confusion_matrix_at_thresholds का उपयोग करके सत्यापित करें। यह वक्र वर्ग असंतुलन के तहत विशेष रूप से सूचनाप्रद है क्योंकि यह समग्र सटीकता के बजाय सकारात्मक वर्ग पर ध्यान केंद्रित करता है, जिसे ROC वक्र ऋणात्मक वर्गों के हावी होने पर छिपा सकते हैं।

>>> from sklearn.metrics import precision_recall_curve, confusion_matrix_at_thresholds

ROC और DET वक्रों का विश्लेषण करें

ROC वक्र विभिन्न थ्रेशोल्ड पर सकारात्मक दर (true positive rate) के विरुद्ध झूठी सकारात्मक दर (false positive rate) को प्लॉट करते हैं, जबकि DET वक्र सामान्य विचलन पैमाने (normal deviate scale) पर झूठी नकारात्मक दर (false negative rate) के विरुद्ध झूठी सकारात्मक दर को प्लॉट करते हैं। त्रुटि प्रकारों की तुलना करते समय थ्रेशोल्ड विश्लेषण के लिए DET वक्र विशेष रूप से उपयोगी होते हैं क्योंकि लगभग सामान्य स्कोर वितरण के अंतर्गत उनकी रैखिक उपस्थिति ऑपरेटिंग बिंदु चयन को अधिक सहज बनाती है। हालांकि, DET वक्र आसान मॉडल तुलना के लिए कोई एकल संख्यात्मक स्कोर प्रदान नहीं करते हैं, जो कई संभावित मॉडलों को रैंक करने की आवश्यकता होने पर एक व्यावहारिक सीमा है। समग्र भेद क्षमता मूल्यांकन के लिए ROC का उपयोग करें और जब आपको उस ऑपरेटिंग क्षेत्र को दृश्य रूप से पहचानना हो जहाँ FP और FN संतुलित हों, तो DET का उपयोग करें।

>>> from sklearn.metrics import roc_curve, det_curve

विशिष्टता और फॉल आउट की गणना करें

विशिष्टता, जिसे सही नकारात्मक दर (true negative rate) भी कहा जाता है, वास्तविक नकारात्मक उदाहरणों में से सही ढंग से पहचाने गए अनुपात को मापती है। फॉल आउट, या झूठी सकारात्मक दर, उन नकारात्मक उदाहरणों का अनुपात मापती है जिन्हें गलत तरीके से सकारात्मक के रूप में चिह्नित किया गया है। ये दो मेट्रिक्स पूरक हैं: विशिष्टता = 1 माइनस फॉल आउट। जब लक्ष्य झूठे सकारात्मक को कम करना हो, तो विशिष्टता को अधिकतम करने से फॉल आउट सीधे कम हो जाता है। scikit-learn दस्तावेज़ दिखाते हैं कि कैसे भ्रम मैट्रिक्स घटकों से इनकी गणना की जाए: विशिष्टता के लिए tn/(tn+fp) और फॉल आउट के लिए fp/(fp+tn)। थ्रेशोल्ड के पार इनका ट्रैक रखने से आपको वर्ग वितरण से स्वतंत्र रूप से FP दर पर स्पष्ट नियंत्रण मिलता है।

>>> tn, fp, fn, tp = confusion_matrix(y_true, y_pred).ravel().tolist()

भ्रम मैट्रिक्स विश्लेषण लागू करें

confusion_matrix फ़ंक्शन सही नकारात्मक, झूठे सकारात्मक, झूठे नकारात्मक और सही सकारात्मक की गिनती लौटाता है। ये चार मान सभी व्युत्पन्न मेट्रिक्स के आधार बनते हैं और आपको विशिष्ट लागत संरचनाओं को प्रतिबिंबित करने वाले कस्टम स्कोरर्स बनाने की अनुमति देते हैं। confusion_matrix_at_thresholds फ़ंक्शन इसे इस तरह बढ़ाता है कि यह y_score में प्रत्येक विशिष्ट थ्रेशोल्ड के लिए चारों गिनतियाँ लौटाता है, जिससे FP गिनती में कमी के आधार पर सीधा थ्रेशोल्ड चयन संभव होता है। क्रॉस-वैलिडेशन में, आप fold-wise गिनती प्राप्त करने के लिए scorer में confusion_matrix को लपेट सकते हैं, फिर FP दरों पर विश्वास अंतराल (confidence intervals) की गणना करने के लिए folds के पार एकीकृत कर सकते हैं।

>>> from sklearn.model_selection import cross_validate

प्रशिक्षण हानि को मूल्यांकन मेट्रिक के साथ संरेखित करें

दस्तावेज़ स्पष्ट रूप से सिफारिश करते हैं कि एक बार जब एक सख्त सुसंगत स्कोरिंग फ़ंक्शन चुन लिया जाता है, तो इसे मॉडल प्रशिक्षण के लिए हानि फ़ंक्शन और मूल्यांकन तथा मॉडल तुलना के लिए मेट्रिक दोनों के रूप में उपयोग किया जाना चाहिए। यह संरेखण एक आम विफलता मोड को रोकता है जहाँ मॉडल प्रशिक्षण के दौरान log loss को अनुकूलित करता है लेकिन precision पर मूल्यांकन किया जाता है, जिससे ऑप्टिमाइज़र द्वारा सुधार किए जाने वाले और व्यवसाय की चिंता के बीच असंगति उत्पन्न होती है। विशेष रूप से FP कमी के लिए, यदि आप precision पर मूल्यांकन करते हैं, तो ऐसे हानि फ़ंक्शन के साथ प्रशिक्षण पर विचार करें जो FP को भारी रूप से दंडित करता है, जैसे कि weighted cross-entropy जहाँ सकारात्मक वर्ग का वजन सकारात्मक की अत्यधिक भविष्यवाणी को रोकने के लिए बढ़ाया जाता है।

>>> from sklearn.linear_model import LogisticRegression

क्या जाँचें

  • सटीकता tp/(tp+fp) के रूप में परिभाषित है और सीधे उन सकारात्मक पूर्वानुमानों का अनुपात मापती है जो सही हैं, जिससे यह झूठे सकारात्मक नियंत्रण के लिए प्राथमिक मेट्रिक बन जाती है।
  • कड़ाई से सुसंगत स्कोरिंग फलन इस बात की गारंटी देते हैं कि ईमानदार पूर्वानुमान अपेक्षा में इष्टतम है, मेट्रिक गेमिंग को रोकते हुए।
  • confusion_matrix_at_thresholds प्रत्येक अलग y_score थ्रेशोल्ड के लिए घटते क्रम में tn, fp, fn, tp गणना लौटाता है, FP कमी के लिए सीधा थ्रेशोल्ड चयन सक्षम करते हुए।
  • DET वक्र एक ही संख्यात्मक स्कोर प्रदान नहीं करते हैं, अतिरिक्त विश्लेषण के बिना स्वचालित मॉडल रैंकिंग के लिए उनके उपयोग को सीमित करते हुए।
  • प्रशिक्षण हानि को मूल्यांकन मेट्रिक के साथ संरेखित करने से अनुकूलन और व्यवसाय द्वारा मापे जाने वाले के बीच बेमेल को रोका जाता है।

केवल मेट्रिक्स डेटा गुणवत्ता समस्याओं या एल्गोरिथ्म पूर्वाग्रहों को हल नहीं करते हैं जो कुछ उपसमुच्चयों पर व्यवस्थित रूप से बढ़े हुए झूठे सकारात्मक दरों का उत्पादन करते हैं। एकल-संख्या मेट्रिक्स जैसे सटीकता या AUPRC विभिन्न डेटा उपसमुच्चयों पर प्रदर्शन भिन्नता को छिपा सकते हैं, इसलिए प्रासंगिक खंडों द्वारा परतवार विश्लेषण आवश्यक है। DET वक्र दृश्य अंतर्दृष्टि प्रदान करते हैं लेकिन सरल तुलना के लिए कोई एकल स्कोर नहीं देते हैं। confusion_matrix_at_thresholds फलन लगातार y_score मानों (संभाव्यता या निर्णय स्कोर) की अपेक्षा करता है, पहले से थ्रेशोल्ड किए गए 0/1 पूर्वानुमानों की नहीं, क्योंकि यह अपने थ्रेशोल्ड अलग-अलग y_score मानों से व्युत्पन्न करता है। पूर्वापेक्षाओं में भूमि सत्य लेबल और मॉडल से पूर्वानुमानित स्कोर शामिल हैं, साथ ही झूठे सकारात्मक बनाम झूठे नकारात्मक से जुड़ी विशिष्ट व्यावसायिक लागतों का ज्ञान।

स्रोत

  1. scikit-learn: model evaluation ↗
  2. scikit-learn: mean_absolute_error ↗
  3. scikit-learn: root_mean_squared_error ↗
ऊपर जाएँ ↑