कोर्स
मशीन लर्निंग (ML) एल्गोरिद्म अब रोज़मर्रा के कामों को स्वचालित करने और डेटा में छिपे पैटर्न खोजने के लिए तेजी से इस्तेमाल किए जा रहे हैं। लेकिन ये मूल रूप से प्रायिकतामूलक होते हैं, यानी इनकी भविष्यवाणियाँ हमेशा सही नहीं होतीं। इसलिए, ऐसे सिस्टम पर भरोसा बनाने के लिए आपको अपने ML मॉडल की वैधता का आकलन करने का तरीका चाहिए।
एक्यूरेसी, प्रिसिजन, रिकॉल, मीन स्क्वेयर्ड एरर (MSE), मीन एब्सोल्यूट परसेंटेज एरर (MAPE) जैसी इवैल्यूएशन मेट्रिक्स मॉडल के प्रदर्शन को मापने के लिए आम तौर पर इस्तेमाल होती हैं। अलग-अलग मेट्रिक्स आपको अलग मानदंडों और नज़रियों से प्रदर्शन मापने में मदद करती हैं।
ये मेट्रिक्स यह भी सुनिश्चित करती हैं कि मॉडल अपने निर्धारित कार्य को सीखते हुए लगातार बेहतर हो रहा है। आखिर, अगर आप माप ही नहीं सकते, तो ML सिस्टम के प्रदर्शन को सुधार नहीं सकते।
एक्यूरेसी ऐसी ही एक मेट्रिक है जो समझने में आसान है और संतुलित डेटासेट पर अच्छी तरह काम करती है, यानी जहाँ सभी क्लासों का प्रतिनिधित्व बराबर हो। हालांकि, वास्तविक दुनिया की घटनाएँ समान रूप से वितरित नहीं होतीं; इसलिए ऐसे संतुलित डेटासेट मिलना कठिन है। एक्यूरेसी मुख्य रूप से इस बात पर केंद्रित होती है कि अधिकतर उदाहरण सही पहचाने गए हैं या नहीं, चाहे वे किस क्लास के हों। धोखाधड़ी वाले लेन-देन या किसी विज्ञापन पर क्लिक जैसे दुर्लभ लेकिन महत्वपूर्ण घटनाओं के लिए, एक्यूरेसी उस मॉडल को गलत तरीके से बेहतर दिखा सकती है जो हर चीज़ को नकारात्मक क्लास, यानी कोई फ्रॉड नहीं या कोई क्लिक नहीं, भविष्यवाणी कर दे। ऐसी सीमाओं के कारण, एक्यूरेसी सबसे उपयुक्त मेट्रिक नहीं है। तो, ऐसे में हमें अपने मॉडलों के प्रदर्शन को मापने के लिए कौन-सी मेट्रिक का उपयोग करना चाहिए?
प्रिसिजन और रिकॉल असंतुलित क्लासिफिकेशन मॉडल के प्रदर्शन का आकलन करने के लिए व्यापक रूप से उपयोग की जाने वाली मेट्रिक्स हैं, जैसे कस्टमर चर्न की भविष्यवाणी।
प्रिसिजन और रिकॉल, समझें
प्रिसिजन इस भरोसे को दर्शाता है कि किसी पॉजिटिव क्लास को पॉजिटिव के रूप में कितनी निश्चितता से भविष्यवाणी किया गया है, जबकि रिकॉल मापता है कि मॉडल डेटासेट में मौजूद पॉजिटिव क्लास के कितने उदाहरणों को पहचान पाया। ध्यान दें कि पॉजिटिव क्लास वही है जिसमें आपकी रुचि है।
अनुभवजन्य रूप से, प्रिसिजन और रिकॉल को कन्फ्यूज़न मैट्रिक्स की मदद से सबसे अच्छी तरह समझा जा सकता है, जिसमें चार प्रमुख शब्द शामिल होते हैं:
- ट्रू पॉजिटिव (TP): सही पहचाने गए पॉजिटिव क्लास उदाहरणों की संख्या
- फॉल्स पॉजिटिव (FP): नेगेटिव क्लास के वे उदाहरण जिन्हें गलत तरीके से पॉजिटिव माना गया
- ट्रू नेगेटिव (TN): सही पहचाने गए नेगेटिव क्लास उदाहरणों की संख्या
- फॉल्स नेगेटिव (FN): पॉजिटिव क्लास के वे उदाहरण जिन्हें गलत तरीके से नेगेटिव माना गया

प्रस्तुतीकरण लेखक द्वारा निर्मित
प्रिसिजन और रिकॉल इन चार शब्दों की गणितीय अभिव्यक्ति हैं, जहाँ:
प्रिसिजन, TP का उन सभी पॉजिटिव भविष्यवाणियों (TP+FP) में अनुपात है। रिकॉल, सभी पॉजिटिव उदाहरणों (TP+FN) में से TP का अनुपात है।
इसे आगे निम्नलिखित संकेतन से सरल किया जाता है जो दोनों के अंतर को उजागर करता है। मूलतः, दोनों मेट्रिक्स का हर (न्यूमेरेटर) समान है, जो वास्तविक पॉजिटिव उदाहरणों और पॉजिटिव रूप से भविष्यवाणी किए गए उदाहरणों का प्रतिच्छेद है, यानी TP।

चित्र श्रुति सक्सेना द्वारा
अंतर हर में है, जहाँ प्रिसिजन सभी पॉजिटिव भविष्यवाणी किए गए उदाहरणों (TP+FP) को मानता है, जबकि रिकॉल के मामले में वास्तविक पॉजिटिव उदाहरण (TP+FN) लिए जाते हैं।
प्रिसिजन और रिकॉल के पीछे की समझ
कन्फ्यूज़न मैट्रिक्स का नाम यूँ ही नहीं रखा गया है – पहली बार इन अवधारणाओं को समझने पर यह सचमुच भ्रमित कर सकता है।
तो, आइए एक उदाहरण से इस विचार को आत्मसात करें। मान लीजिए आपके पास एक स्टील प्लांट है जहाँ फैक्ट्री लौह अयस्क से लोहा निकालती है और उसे अन्य खनिजों और तत्वों के साथ (कभी-कभी अनजाने में) मिलाती है। निष्कर्षण भाग पर ध्यान देते हुए, आपके पास निकाले गए धातु की शुद्धता और प्रक्रिया के दौरान उत्पन्न होने वाले अपशिष्ट के बारे में कुछ विकल्प हैं, जैसा कि नीचे दिया गया है:
परिदृश्य 1: आप निकाले गए लोहे की शुद्धता को प्राथमिकता देना चाहते हैं, भले ही प्रक्रिया में कितना भी धातु व्यर्थ जाए।
परिदृश्य 2: आप दक्षता को अधिकतम करना चाहते हैं, यानी प्रति इकाई अयस्क से निकाले गए लोहे की मात्रा, भले ही निकाली गई धातु की शुद्धता की परवाह न हो।
परिदृश्य 3: आप दोनों दुनियाओं का सर्वश्रेष्ठ चाहते हैं, यानी निकाली गई धातु की शुद्धता को यथासंभव अधिक रखते हुए अपशिष्ट को कम करना (प्रति इकाई अयस्क निकाले गए लोहे को अधिकतम करना)।
ब्लास्ट फर्नेस या इलेक्ट्रिक आर्क फर्नेस को मॉडलिंग विकल्पों की तरह सोचें जो अलग-अलग नतीजे (लोहे की शुद्धता और अपशिष्ट) देते हैं। मान लें, निष्कर्षण की एक विधि 97.5% शुद्ध लोहा देती है और कीचड़ में 4% लोहा खो देती है। तब हम अपनी प्रिसिजन को निकाली गई धातु में शुद्ध लोहे का अंश, यानी 97.5%, परिभाषित कर सकते हैं, जबकि रिकॉल अयस्क में उपलब्ध कुल लोहे में से निकाला गया लोहा है, जो 96% है (कुल लोहे का 4% व्यर्थ गया)।

आरेख लेखक द्वारा निर्मित
मान लें आप दूसरी विधि अपनाते हैं क्योंकि आप भट्टी से अधिक शुद्ध लोहा चाहते हैं, जिसका अर्थ है निष्कर्षण प्रक्रिया में अधिक अपशिष्ट। मान लीजिए अगर आप लोहे की शुद्धता 0.5% बढ़ाकर 98% करते हैं, तो धातु का अपशिष्ट 11% बढ़ जाता है। इसका मतलब 98% प्रिसिजन के अनुरूप रिकॉल 85% रह जाता है। अधिक प्रिसिजन के बदले रिकॉल में यह कमी और इसके विपरीत, प्रिसिजन और रिकॉल के व्युत्क्रम संबंध को दर्शाती है।
क्या यह बेहतर नहीं होगा अगर आप प्रिसिजन के सभी मान और उनके अनुरूप रिकॉल के मान जान सकें, ताकि आप अपने उद्देश्य के मुताबिक सबसे सही निर्णय ले सकें?
प्रिसिजन–रिकॉल कर्व उस चुनाव में मदद करता है, और आप इसे अगले खंडों में गहराई से समझेंगे। लेकिन उससे पहले, PR कर्व के मूल में मौजूद एक महत्वपूर्ण अवधारणा थ्रेशहोल्ड को समझते हैं।
थ्रेशहोल्ड की अवधारणा
धोखाधड़ी लेन-देन की पहचान का उदाहरण लेते हैं, ताकि समझ सकें कि थ्रेशहोल्ड (या कटऑफ) कैसे काम करता है। नीचे दी गई तालिका में 1 से 4 तक के ट्रांज़ैक्शन आईडी के साथ चार लेन-देन हैं; कोई लेन-देन या तो धोखाधड़ीपूर्ण हो सकता है या सामान्य। फ्रॉड डिटेक्शन मॉडल किसी लेन-देन के धोखाधड़ीपूर्ण होने की प्रायिकता आउटपुट करता है (पीले कॉलम में हाइलाइट किया गया), जो स्वाभाविक रूप से सामान्य लेन-देन की प्रायिकता भी दर्शाता है।
यदि धोखाधड़ी लेन-देन की प्रायिकता कॉलम में आउटपुट प्रायिकता चुने गए थ्रेशहोल्ड से अधिक है, तो लेन-देन को धोखाधड़ीपूर्ण भविष्यवाणी किया जाता है, अन्यथा उसे सामान्य घोषित किया जाता है।
|
Transaction ID |
Probability of Fraud transaction |
Probability of regular transaction |
Is fraudulent? (Threshold = 0.9) |
Is fraudulent? (Threshold = 0.5) |
Is fraudulent? (Threshold = 0.4) |
|
1 |
0.3 |
0.7 |
No |
No |
No |
|
2 |
0.4 |
0.6 |
No |
No |
Yes |
|
3 |
0.6 |
0.4 |
No |
Yes |
Yes |
|
4 |
0.95 |
0.05 |
Yes |
Yes |
Yes |
जब 0.9 जैसा सख्त थ्रेशहोल्ड लगाया जाता है, तो पहले तीन लेन-देन सामान्य के रूप में चिह्नित होते हैं, जबकि अंतिम लेन-देन को धोखाधड़ीपूर्ण चिह्नित किया जाता है। इतना ऊँचा थ्रेशहोल्ड भविष्यवाणियों में भरोसा बढ़ाता है, जिससे उच्च प्रिसिजन की स्थिति बनती है। बदले में, आप कुछ धोखाधड़ीपूर्ण लेन-देन छूट जाने से मॉडल के रिकॉल का बलिदान कर रहे होते हैं।
उच्च प्रिसिजन के बावजूद ऐसी स्थिति वांछनीय नहीं है। क्या आप सोच सकते हैं क्यों?
क्योंकि व्यवसाय धोखाधड़ी पहचान से चूकने की अधिक लागत वहन करता है, जो ऐसे मॉडल बनाने का मूल उद्देश्य है। ध्यान दें कि किसी धोखाधड़ीपूर्ण लेन-देन की लागत, अवरुद्ध लेकिन सामान्य लेन-देन (यानी FP) की लागत से कहीं अधिक होती है।
अब स्पेक्ट्रम के दूसरे छोर पर 0.4 के निम्न थ्रेशहोल्ड को देखें, जो नीचे के तीन लेन-देन को धोखाधड़ीपूर्ण चिह्नित कर देता है। इतना उदार थ्रेशहोल्ड अधिकांश लेन-देन को ब्लॉक कर देगा, जिससे कई ग्राहक नाराज़ हो सकते हैं। साथ ही चिह्नित लेन-देन पर मानव संसाधन का अतिरिक्त बोझ भी पड़ेगा ताकि असली धोखाधड़ी के मामलों की पहचान की जा सके।
इसलिए व्यवसाय को लक्ष्य मेट्रिक्स और उनके वांछित मान तय करने होते हैं ताकि दोनों का संतुलन बने, और निम्नलिखित लागतों को ध्यान में रखा जा सके:
- धोखाधड़ीपूर्ण लेन-देन को सामान्य मानने की लागत (फॉल्स नेगेटिव)
- सामान्य लेन-देन को धोखाधड़ीपूर्ण मानने की लागत (फॉल्स पॉजिटिव)
प्रिसिजन की परिभाषा पर लौटें, तो पाएँगे कि फॉल्स पॉजिटिव हर (डिनॉमिनेटर) में आता है, जिसका अर्थ है कि FP कम करने से प्रिसिजन अधिकतम होगी। इसी तरह, फॉल्स नेगेटिव कम करने से मॉडल का रिकॉल अधिकतम होगा।
इस प्रकार, कोई लेन-देन धोखाधड़ीपूर्ण या सामान्य भविष्यवाणी होगा, यह काफी हद तक थ्रेशहोल्ड मान पर निर्भर करता है।
प्रिसिजन–रिकॉल कर्व क्या है?
प्रिसिजन–रिकॉल कर्व आपको प्रिसिजन और रिकॉल के वांछित मानों के आधार पर थ्रेशहोल्ड तय करने में मदद करता है। यह अलग-अलग मॉडलों के प्रदर्शन की तुलना करने में भी सहायक है, जिसे “एरिया अंडर द प्रिसिजन–रिकॉल कर्व” या AUC कहा जाता है।
कन्फ्यूज़न मैट्रिक्स के माध्यम से समझाया गया है कि किसी बाइनरी क्लासिफिकेशन मॉडल से अलग-अलग थ्रेशहोल्ड मानों पर TP, FP, TN और FN प्राप्त होते हैं, जहाँ हर थ्रेशहोल्ड मान के लिए प्रिसिजन और रिकॉल का संगत जोड़ा मिलता है।
x-अक्ष पर रिकॉल और y-अक्ष पर संगत प्रिसिजन प्लॉट करने से PR कर्व बनती है जो नकारात्मक ढलान दर्शाती है। यह दिए गए मॉडल के लिए प्रिसिजन (FP कम करना) और रिकॉल (FN कम करना) के बीच के ट्रेड-ऑफ को दर्शाती है। प्रिसिजन और रिकॉल के व्युत्क्रम संबंध को देखते हुए, कर्व प्रायः गैर-रेखीय होती है, यानी एक मेट्रिक बढ़ाने पर दूसरी घटती है, लेकिन यह कमी समानुपाती नहीं भी हो सकती।

चित्र StackExchange से
मान लें किसी संस्था ने न्यूनतम स्वीकार्य रिकॉल 98% चुना है। तारे से चिह्नित “लो थ्रेशहोल्ड, लो प्रिसिजन, हाई रिकॉल” बिंदु पर प्रिसिजन 30% है।
अन्य दो चरम बिंदु उन स्थितियों का प्रतिनिधित्व करते हैं जहाँ थ्रेशहोल्ड:
- बहुत कम है – उच्च रिकॉल, पर मानव संसाधन की लागत और नाराज़ ग्राहक
- बहुत अधिक है – उच्च प्रिसिजन, पर धोखाधड़ी की लागत और प्रतिष्ठा का नुकसान
PR कर्व का उपयोग
व्यवसायिक मेट्रिक के अनुरूप सही कटऑफ तय करने के अलावा, कई मॉडलों या एल्गोरिद्म की प्रिसिजन–रिकॉल कर्व के नीचे का क्षेत्रफल (AUC) निकालकर उनके प्रदर्शन की तुलना की जा सकती है। व्यक्तिगत प्रिसिजन, रिकॉल या यहाँ तक कि F1 स्कोर (प्रिसिजन और रिकॉल का हार्मोनिक मीन) की तुलना में PR कर्व के जरिए मॉडलों की तुलना करना विशेष रूप से उपयोगी है।

चित्र Stackoverflow से
ऐसी मेट्रिक्स थ्रेशहोल्ड-निर्भर होती हैं, जहाँ थ्रेशहोल्ड बदलने पर TP, FP और FN का वितरण बदलता है। किसी दिए गए थ्रेशहोल्ड पर दो अलग-अलग मॉडल अलग तरह से प्रदर्शन कर सकते हैं, जो मॉडल तुलना के लिए PR कर्व को एक मजबूत विकल्प बनाता है। ऊपर का प्लॉट किसी दिए गए डेटासेट पर दो अलग-अलग एल्गोरिद्म की PR कर्व दिखाता है – एल्गोरिद्म दो का AUC, एल्गोरिद्म एक से अधिक है, जो इसे दिए गए समस्या के लिए बेहतर विकल्प बनाता है।
Python में प्रिसिजन–रिकॉल कर्व लागू करना
अब जब हमें प्रिसिजन–रिकॉल कर्व क्या है और इसका उपयोग क्यों किया जाता है, समझ आ गया है, तो Python में प्रिसिजन–रिकॉल कर्व बनाने पर नज़र डालते हैं।
कदम 1: आवश्यक Python पैकेज आयात करें
स्तन कैंसर पहचान के मॉडल डेटासेट पर नज़र डालते हैं जहाँ “क्लास 1” कैंसर निदान का प्रतिनिधित्व करती है और “क्लास 0” का अर्थ है कैंसर नहीं है।
पहला आयात “sklearn.datasets” से डेटासेट लोड करता है जिसमें स्वतंत्र और लक्षित वेरिएबल शामिल हैं। चूँकि यह एक ऐसा मॉडल डेटासेट है जिसे अधिकांश एल्गोरिद्म आसानी से सीख लेते हैं, हमने sklearn से “GaussianNB” के रूप में आयात किए गए Naive Bayes एल्गोरिद्म को चुना है।
अगला “Precision_Recall_curve” का आयात अलग-अलग थ्रेशहोल्ड और उनके अनुरूप प्रिसिजन और रिकॉल मान देता है।
from sklearn.datasets import load_breast_cancer
from sklearn.naive_bayes import GaussianNB
from sklearn.metrics import precision_recall_curve
from sklearn.model_selection import train_test_split
import matplotlib.pyplot as plt
कदम 2: ट्रेन और टेस्ट डेटा तैयार करना
स्वतंत्र वेरिएबल “data” कुंजी में और लक्ष्य वेरिएबल “target” कुंजी में “data” डिक्शनरी के भीतर स्टोर होते हैं। इसके बाद डेटा को test_size आर्ग्युमेंट 0.3 देकर ट्रेन और टेस्ट सेट में बाँटा जाता है।
# Load model breast cancer data
data = load_breast_cancer()
X = data['data']
y = data['target']
आइए पॉजिटिव और नेगेटिव क्लास के वितरण पर नज़र डालें, यानी स्तन कैंसर और स्तन कैंसर नहीं के मामलों पर।
import numpy as np
unique, counts = np.unique(y, return_counts=True)
plt.pie(counts, labels=unique, autopct='%.0f%%');

sklearn के model_selection मॉड्यूल की train_test_split विधि का उपयोग करके डेटा को ट्रेन और टेस्ट सेट में बाँटें।
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0)
कदम 3: मॉडल प्रशिक्षण
प्रशिक्षण डेटा को GaussianNB() में आर्ग्युमेंट के रूप में पास किया जाता है ताकि मॉडल प्रशिक्षण शुरू हो सके। फिट किया गया मॉडल ऑब्जेक्ट फिर ट्रेन और टेस्ट डेटासेट पर प्रायिकता के रूप में भविष्यवाणियाँ प्राप्त करने के लिए उपयोग किया जाता है।
# Fit a Naive Bayes model
clf = GaussianNB().fit(X_train, y_train)
कदम 4: भविष्यवाणियाँ जनरेट करना
ट्रेनिंग और टेस्टिंग डेटासेट का उपयोग करके भविष्यवाणी प्रायिकताएँ जनरेट करें, जिनका उपयोग अलग-अलग थ्रेशहोल्ड मानों पर प्रिसिजन और रिकॉल प्राप्त करने के लिए किया जाएगा।
# Predict probability
y_prob_train = clf.predict_proba(X_train)[:,1]
y_prob_test = clf.predict_proba(X_test)[:,1]
कदम 5: PR कर्व प्लॉट करना
Precision_Recall_curve() मेथड दो इनपुट लेता है – ट्रेन डेटासेट से प्रायिकताएँ यानी y_prob_train और वास्तविक ग्राउंड ट्रुथ मान, और तीन वैल्यू लौटाता है: प्रिसिजन, रिकॉल और थ्रेशहोल्ड्स।
precision, recall, thresholds = precision_recall_curve(y_train, y_prob_train)
plt.fill_between(recall, precision)
plt.ylabel("Precision")
plt.xlabel("Recall")
plt.title("Train Precision-Recall curve");
विभिन्न थ्रेशहोल्ड्स पर PR कर्व प्लॉट करने के लिए प्रिसिजन और रिकॉल वेक्टरों का उपयोग किया जाता है, जैसा कि नीचे दिखाया गया है:

PR कर्व लेखक द्वारा जनरेट की गई
क्या प्रिसिजन–रिकॉल कर्व ROC कर्व से बेहतर है?
ROC कर्व PR कर्व के समान है, लेकिन यह अलग-अलग थ्रेशहोल्ड्स पर ट्रू पॉजिटिव रेट (TPR) बनाम फॉल्स पॉजिटिव रेट (FPR) प्लॉट करती है। TPR हम पहले से जानते हैं, यह रिकॉल का ही दूसरा नाम है। तो, FPR पर ध्यान दें, जो नेगेटिव क्लास से होने वाली गलत वर्गीकरणों की संख्या दर्शाता है। फ्रॉड उदाहरण को जारी रखते हुए, यह उन सामान्य लेन-देन का प्रतिशत दर्शाता है जिन्हें धोखाधड़ीपूर्ण चिह्नित किया गया।

चित्र Albert Um द्वारा
अब तक हम समझ चुके हैं कि रिकॉल, उर्फ़ TPR, PR कर्व और ROC कर्व दोनों में सामान्य है; मुख्य अंतर क्रमशः प्रिसिजन और FPR का है। आइए देखें कि PR कर्व तुलनात्मक रूप से अधिक सूचनाप्रद क्यों है।
क्योंकि P–R कर्व, ROC कर्व की तुलना में रुचि वाली क्लास के बारे में अधिक सार्थक अंतर्दृष्टि देती है। फ्रॉड लेन-देन भविष्यवाणी को लें। असंतुलित डेटासेट में ट्रू नेगेटिव (TN) बहुत बड़े होते हैं, जिससे FPR बहुत छोटा मान होता है। लेकिन क्या यह बताता है कि मॉडल धोखाधड़ीपूर्ण लेन-देन की भविष्यवाणी में कैसा है?
नहीं! दूसरी ओर, प्रिसिजन को एक मेट्रिक के रूप में उपयोग करने से पॉजिटिव क्लास (धोखाधड़ी लेन-देन) पर मॉडल का प्रदर्शन स्पष्ट होता है। यह बताता है कि मॉडल धोखाधड़ीपूर्ण लेन-देन को चिह्नित करने में कितना सतर्क या उदार है।
ROC कर्व की दूसरी बड़ी कमी असंतुलित डेटा के प्रति इसकी प्रतिरक्षा है। ऊपर के चित्र से आप देख सकते हैं कि FPR केवल नेगेटिव क्लास की मेट्रिक है, यानी FP में बदलाव FP+TN (सभी नेगेटिव उदाहरण) के बदलाव के अनुपाती अपेक्षित है। इसलिए अगर अंतर्निहित डेटा का वितरण बदल जाता है, तो ROC में बहुत अधिक बदलाव नहीं होता। क्लास वितरण के प्रति यह असंवेदनशीलता PR कर्व को ROC कर्व पर बेहतर विकल्प बनाती है।
अंतिम विचार
प्रिसिजन और रिकॉल, मशीन लर्निंग क्लासिफिकेशन मॉडलों के प्रदर्शन को मापने की प्रमुख इवैल्यूएशन मेट्रिक्स हैं। हालांकि, दोनों के बीच का ट्रेड-ऑफ व्यवसायिक प्राथमिकता पर निर्भर करता है और PR कर्व के माध्यम से सबसे अच्छे ढंग से सुलझता है। इस लेख ने समझाया कि PR कर्व की व्याख्या कैसे करें और व्यापारिक उद्देश्य पूरा करने के लिए सही थ्रेशहोल्ड कैसे चुनें। आगे, पोस्ट में Python का उपयोग करके इसे चरण-दर-चरण प्लॉट करने का ट्यूटोरियल दिया गया। हमने यह भी चर्चा की कि PR कर्व, ROC कर्व की तुलना में अधिक सूचनाप्रद क्यों है।