टेस्टर्स के लिए मशीन लर्निंग बेसिक्स
Machine learning (ML) software बनाने का ऐसा तरीका है जिसमें behaviour rules लिखकर नहीं, बल्कि data से सीखा जाता है। एक training algorithm examples पर model fit करता है, और फिर model नए inputs के नतीजे predict करता है। मसलन card-fraud model पुराने payments पर train होता है जिन पर "fraud" या "legitimate" label लगा है; production में वह हर नए payment को score देता है, और चुने गए threshold के बराबर या उससे ऊपर वाले payments manual review में जाते हैं।
AI testing fundamentals से आगे बढ़ते हुए, यह lesson ऐसे model को टेस्ट करने की शब्दावली देता है: learning के प्रकार, data कैसे बाँटा जाता है, model ज़रूरत से ज़्यादा या कम कैसे सीखता है, और confusion matrix व उसके metrics कैसे पढ़ें।
यह क्यों ज़रूरी है
ML के कई defects code में दिखते ही नहीं। Model गलत label वाले या unrepresentative data से सीख सकता है, पहले देखे हुए data पर evaluate हो सकता है, या ऐसे metric से आँका जा सकता है जो ज़रूरी errors छिपा दे। तब evaluation report शानदार दिखती है, जबकि असली users को छूटा हुआ fraud, बेवजह block हुए customers, या बाकियों से कहीं बुरी service पाने वाला कोई group मिलता है।
इन basics से tester evaluation का number चुपचाप मानने की बजाय उस पर सवाल उठा सकता है: test data कहाँ से आया, क्या वह training data से overlap करता है, कौन-से errors महँगे हैं, और users के हर group के लिए model कैसा perform करता है?
Learning के तीन प्रकार, एक workflow
ML का काम एक workflow में चलता है, जिसे ISTQB AI Testing (CT-AI) syllabus ज़्यादा बारीक steps में बताता है: objective और acceptance criteria तय करना, data इकट्ठा और label करना, उसे prepare और split करना, model train करना, validation data पर evaluate और tune करना, final model को test data पर एक बार test करना, फिर deploy, monitor और data बदलने पर retrain करना। हर step tester को review के लिए कुछ देता है: objective एक test basis है, dataset एक work product, और evaluation एक test result।
Learning के प्रकार इस बात में अलग हैं कि model किससे सीखता है, और यही तय करता है कि test उसके output की तुलना किससे कर सकता है:
- Supervised learning: model labelled examples से सीखता है, यानी ऐसे inputs जिनके साथ सही जवाब (label) जुड़ा हो। Classification एक category predict करता है (fraud या legitimate), ML regression एक number (delivery time); इस statistical regression का regression testing से कोई संबंध नहीं। Labelled test data ही test oracle का काम करता है। इस lesson के metrics classification के लिए हैं; regression model को उसके errors के आकार से आँका जाता है, जैसे prediction असली delivery time से कितने मिनट दूर है।
- Unsupervised learning: labels नहीं होते; model structure ढूँढता है, जैसे मिलते-जुलते customers के clusters या असामान्य transactions। Answer key न होने से evaluation samples के expert review, stability checks या बाद में किसी sample को label करने पर टिका होता है।
- Reinforcement learning: एक agent किसी environment में actions लेकर और rewards या penalties पाकर सीखता है, जैसे warehouse में रास्ते सीखता robot। Tests जाँचते हैं कि reward चाहे गए behaviour को ही बताता है, क्योंकि agent उसे कमाने के अनचाहे तरीके ढूँढ सकता है, और training में कभी न मिली स्थितियों में agent कैसा व्यवहार करता है।
Training, validation और test sets
Labelled data तीन sets में बाँटा जाता है। Model training set से सीखता है। Validation set development के दौरान models की तुलना करने, settings tune करने और threshold चुनने में इस्तेमाल होता है। Test set (hold-out set) अलग रखा जाता है और सारे फ़ैसलों के बाद सिर्फ़ एक बार इस्तेमाल होता है, ताकि अनदेखे data पर performance का अनुमान लगे। कुछ teams "validation" और "test" नाम उलट देती हैं, इसलिए पूछें कि reported number किस set से आया।
Training setModel इससे सीखता है
Model अपने parameters इन labelled examples पर fit करता है
- कब इस्तेमाल होता है:
- हर training run में
- क्या model इससे सीखता है?:
- हाँ: अपने parameters इस पर fit करता है
- इस पर score क्या दिखाता है:
- Model देखे हुए data पर कितना fit है; validation से बहुत ऊपर हो तो overfitting, दोनों पर कम हो तो underfitting
- गड़बड़ी कैसे होती है:
- दूसरे sets के साथ duplicates, customers या बाद के records साझा: leakage
Validation setइस पर फ़ैसले होते हैं
Models की तुलना, settings tune करना, threshold चुनना
- कब इस्तेमाल होता है:
- Development के दौरान बार-बार
- क्या model इससे सीखता है?:
- सीधे नहीं, पर फ़ैसले इसी पर tune होते हैं
- इस पर score क्या दिखाता है:
- कौन-सा विकल्प सबसे अच्छा है; आम तौर पर optimistic, क्योंकि फ़ैसले इसी पर हुए
- गड़बड़ी कैसे होती है:
- इसका score final result के रूप में report होता है
Test set (hold-out)सिर्फ़ एक बार
सारे फ़ैसलों के बाद एक final अनुमान
- कब इस्तेमाल होता है:
- एक बार, अंत में
- क्या model इससे सीखता है?:
- नहीं: model इससे कभी नहीं सीखता
- इस पर score क्या दिखाता है:
- उन्हीं हालात के नए data पर अपेक्षित performance
- गड़बड़ी कैसे होती है:
- Tuning में इस्तेमाल, या production data से अलग
अनुपात data की मात्रा के हिसाब से बदलते हैं; कुछ teams "validation" और "test" नाम उलट देती हैं, और time-ordered data में test set में सबसे नए records होते हैं।
अलग sets इसलिए ज़रूरी हैं क्योंकि model अपने training data पर ज़रूरत से ज़्यादा fit हो सकता है। Overfitting का मतलब है कि model ने अपने sample का noise और संयोग भी सीख लिया, जैसे कि कुछ merchant IDs संयोग से fraud cases में आ गए थे: तब training data पर score ऊँचा और validation data पर साफ़ तौर पर कम आता है। Underfitting इसका उल्टा है: model बहुत सरल है या उसके inputs में बहुत कम जानकारी है, और वह दोनों पर कमज़ोर रहता है।
Test score तभी ईमानदार है जब test data ने न training पर असर डाला हो, न development के किसी फ़ैसले पर। वरना यह data leakage है, और score users को मिलने वाले नतीजे से ज़्यादा दिखाता है। इसके आम रूप:
- Sets के बीच duplicates और near-duplicates: वही email दो बार forward हुआ, वही photo अलग size में।
- दोनों तरफ़ एक ही customer, जिससे model fraud सीखने की बजाय customer को पहचानने लगता है।
- Time-ordered data का random split, जो model को भविष्य से सीखने देता है; पुराने records पर train करें, नए records पर test।
- ऐसा feature (input field जिससे model सीखता है) जिसमें जवाब छिपा हो, जैसे chargeback date जो fraud confirm होने के बाद ही भरी जाती है।
- Test set की मदद से लिए गए फ़ैसले: split से पहले सभी records पर की गई preparation, जैसे missing values को सभी records के average से भरना, या test score अच्छा दिखने तक tuning।
Representative, साफ़ और सही label वाला data
Model अपने data में मौजूद हर चीज़ सीखता है, इसलिए data review करना requirements review जैसी test activity है। पहले पूछें: क्या data operating environment, यानी production में model को मिलने वाले हालात, को represent करता है? एक region, device type, season या भाषा का data, या किसी product बदलाव से पहले का data, users के भेजे data से अलग हो सकता है: यह distribution shift है। Release के बाद यह data drift के रूप में चलता है, जब inputs बदलते हैं (नया payment method), और concept drift के रूप में, जब inputs और सही जवाब का रिश्ता बदलता है (fraudsters अपने तरीके बदलते हैं)। पूछें कि test sample कैसे और कब लिया गया, उसे production data से मिलाएँ, और पक्का करें कि release के बाद model की monitoring होगी।
फिर records का एक random sample ख़ुद पढ़ें, सिर्फ़ summary statistics नहीं, और तीन तरह के defects ढूँढें:
- Data quality: missing values, duplicates, गलत units या formats, range से बाहर की values, और एक ही column में "KSA", "Saudi Arabia" और "SA" जैसी inconsistent categories। CSV sample को CSV to JSON से type inference चालू रखकर convert करें, ताकि numbers, numbers ही रहें, फिर result को API Response Analyzer में paste करें: वह empty और null fields, records के बीच type बदलने वाले fields और duplicate records दिखाता है।
- Labelling errors: गलत labels, आपस में असहमत labellers, अस्पष्ट guidelines। Training में गलत label गलत behaviour सिखाता है; test में गलत label metric को ही गलत कर देता है। पूछें कि असहमतियाँ कैसे सुलझाई गईं, और एक sample दोबारा जाँचें।
- Data bias: कम represent हुए groups (review classifier में Arabic भाषा के कम reviews) या पुराने इंसानी फ़ैसले दोहराते labels (पुराने loan approvals)। तब model उन groups के लिए बुरा या अनुचित काम करता है; एक आगे का lesson bias को गहराई से कवर करता है।
Confusion matrix और उसके metrics
Classifier evaluate करने के लिए held-out data पर हर prediction की तुलना उसके label से करें। दो classes हों तो जिस class को आप ढूँढते हैं वह positive (fraud) और दूसरी negative (legitimate) कहलाती है। तब हर prediction true positive (TP, fraud flag हुआ), false negative (FN, fraud छूट गया), false positive (FP, legitimate payment flag हुआ) या true negative (TN, legitimate payment पास हुआ) होता है। इन चार counts की table confusion matrix है।
Accuracy सभी predictions में सही predictions का हिस्सा है। Precision flag हुए cases में सचमुच positive cases का हिस्सा है: model alarm देता है तो कितनी बार सही होता है? Recall असली positives में से पकड़े गए cases का हिस्सा है: problem का कितना हिस्सा वह ढूँढ पाता है? F1, दोनों का harmonic mean, तभी ऊँचा होता है जब दोनों ऊँचे हों।
Accuracy में एक जाल है। जब एक class दुर्लभ हो, तो हमेशा "legitimate" कहने वाला model कुछ भी पकड़े बिना ऊँची accuracy पाता है। नीचे 95% payments legitimate हैं, इसलिए वह बेकार model 95% पाता है, और असली model की 96.5% उससे सिर्फ़ 1.5 percentage points बेहतर है। Imbalanced data पर class balance, confusion matrix और तुलना के लिए एक baseline माँगें।
| असली class (label) | Model का prediction | |
|---|---|---|
| Predicted: fraudprecision = 60 / 90 = 66.7% | Predicted: legitimate | |
| Actual: fraud (100)recall = 60 / 100 = 60.0% | TP = 60fraud flag हुआपास | FN = 40fraud छूट गयाफ़ेल |
| Actual: legitimate (1,900) | FP = 30legitimate payment flag हुआफ़ेल | TN = 1,870legitimate payment पास हुआपास |
- पाससही prediction: label से मेल खाता है
- फ़ेलError: prediction label से अलग है
- Threshold 0.5 पर metrics
- Accuracy
(TP + TN) / all = 1,930 / 2,000 = 96.5% - Precision
TP / (TP + FP) = 60 / 90 = 66.7% - Recall
TP / (TP + FN) = 60 / 100 = 60.0% - F1
2 × P × R / (P + R) = 63.2% - Baseline हमेशा "legitimate": accuracy 95.0%, recall 0.0%
पाठ संस्करण
Validation set: 2,000 card payments, 100 of them fraud (5%). Threshold 0.5.
Predicted: fraud Predicted: legitimate
Actual: fraud (100) TP = 60 FN = 40
Actual: legitimate (1,900) FP = 30 TN = 1,870
Accuracy = (TP + TN) / all = 1,930 / 2,000 = 96.5%
Precision = TP / (TP + FP) = 60 / 90 = 66.7%
Recall = TP / (TP + FN) = 60 / 100 = 60.0%
F1 = 2 x P x R / (P + R) = 63.2%
Baseline that always answers "legitimate": accuracy 95.0%, recall 0.0%Worked example: cost से threshold चुनें, हर segment जाँचें
Fraud model हर payment को 0 से 1 तक score देता है और score threshold के बराबर या ऊपर होने पर उसे flag करता है। Threshold घटाने से ज़्यादा payments flag होते हैं: recall बढ़ता है या वैसा ही रहता है, और precision आम तौर पर घटता है। सही threshold हर error type की cost पर आधारित business फ़ैसला है। यहाँ product owner का अनुमान है कि छूटा हुआ fraud औसतन 400 SAR का पड़ता है और false alarm review के समय और customer की परेशानी में 25 SAR का।
0.3 पर model 0.5 की तुलना में चार गुना false alarms देता है, फिर भी errors की cost 16,750 से घटकर 9,000 SAR रह जाती है, इसलिए इन costs पर 0.3 बेहतर है, बशर्ते review team हर 2,000 में 90 की जगह 205 flagged payments सँभाल सके। अगर false alarm payment को सीधे block कर देता, तो उसकी cost बढ़ती और जवाब बदल सकता था। Costs और तर्क दर्ज करें, फिर चुने गए threshold को test set पर एक बार मापें।
फिर जिन thresholds की आप तुलना करते हैं, हर एक पर नतीजे को तोड़कर देखें। 0.5 पर कुल recall 60% है, लेकिन 30 दिन से कम पुराने accounts के लिए 40% (25 में से 10 fraud cases), जबकि पुराने accounts के लिए 66.7%: एक number ने सबसे कमज़ोर group छिपा दिया। हर अहम segment, जैसे भाषा, region, device या नए users, के metrics sample size के साथ निकालें: 25 cases छोटा sample है, इसलिए 40% जाँच का संकेत है, सटीक value नहीं।
Validation set: 2,000 payments, 100 fraud. Cost: FN = 400 SAR, FP = 25 SAR.
Threshold TP FN FP TN Precision Recall Cost of errors (SAR)
0.5 60 40 30 1,870 66.7% 60.0% 40 x 400 + 30 x 25 = 16,750
0.3 85 15 120 1,780 41.5% 85.0% 15 x 400 + 120 x 25 = 9,000
Recall by segment at 0.5 Fraud cases TP FN Recall
Accounts < 30 days old 25 10 15 40.0%
Accounts >= 30 days old 75 50 25 66.7%आम गलतियाँ
- जब एक class दुर्लभ हो, तब confusion matrix, class balance और baseline के बिना एक accuracy number मान लेना।
- Validation score को final result बताना, या test set पर तब तक tuning करना जब तक वह अच्छा न दिखे।
- जब records duplicates, customer या time से जुड़े हों, तब random split करना।
- यह पूछे बिना कि test set कहाँ, कब और कैसे इकट्ठा हुआ, मान लेना कि वह production को represent करता है।
- Labels को अटल सच मानना: गलत test labels metrics को गलत कर देते हैं।
- सिर्फ़ कुल metrics report करना, या अलग thresholds पर या अलग test sets पर मापे गए models की तुलना करना।
QA का नज़रिया
Tester शायद ही models train करता है, लेकिन अक्सर review करता है कि उन्हें कैसे evaluate किया गया। Evaluation से पहले data scientist और product owner के साथ मिलकर "model अच्छा होना चाहिए" को हर error type और हर segment के acceptance criteria में बदलें, जैसे नए accounts पर fraud recall की न्यूनतम सीमा, ऐसी precision पर जिसे review team सँभाल सके। Test dataset को test basis मानें: उसका source, समय अवधि, class balance, labelling process और training data से overlap कैसे रोका गया, यह पूछें।
Test report में model और dataset versions, threshold, confusion matrix और sample sizes के साथ हर segment के metrics दर्ज करें। और model के आसपास का system हमेशा की तरह टेस्ट करते रहें: input validation, model service धीमी या बंद होने पर behaviour, flagged cases review screen तक कैसे पहुँचते हैं, और क्या monitoring drift पकड़ेगी।
अभ्यास
Support inbox के spam filter को evaluate करें
एक support inbox ML spam filter इस्तेमाल करता है। Data scientist नीचे के test results साझा करता है: test set छह महीने पहले emails के उसी pool से random तरीके से निकाला गया था जिससे training data आया, exact duplicates हटाने के बाद। Support manager कहता है कि असली customer email का spam folder में खो जाना कुछ spam के निकल जाने से कहीं बुरा है।
Tester की नज़र से model evaluate करें। कागज़-कलम या Percentage Calculator काफ़ी है।
Spam filter, test set of 1,000 emails (200 spam), threshold 0.5
Predicted: spam Predicted: not spam
Actual: spam (200) TP = 180 FN = 20
Actual: not spam (800) FP = 40 TN = 760
By segment Emails Spam TP FN FP TN
Arabic-language 150 40 24 16 12 98
All other emails 850 160 156 4 28 662- Accuracy, precision, recall और F1 निकालें, और कभी कुछ भी spam न कहने वाले filter की accuracy भी।
- Arabic भाषा के emails और बाकी सभी emails के लिए precision और recall निकालें।
- तय करें कि कौन-सा error ज़्यादा महँगा है, कौन-सा metric देखना है और threshold किस दिशा में ले जाना है।
- Test data के बारे में तीन सवाल लिखें।
मॉडल उत्तर दिखाएँ
Accuracy = (180 + 760) / 1,000 = 94.0%; precision = 180 / 220 = 81.8%; recall = 180 / 200 = 90.0%; F1 = 2 × 0.818 × 0.900 / (0.818 + 0.900) = 85.7%। कभी spam न कहने वाला filter 800 / 1,000 = 80.0% पाता है, इसलिए अकेली accuracy ज़्यादा कुछ नहीं बताती।
Arabic emails: precision 24 / 36 = 66.7%, recall 24 / 40 = 60.0%। बाकी emails: precision 156 / 184 = 84.8%, recall 156 / 160 = 97.5%। असली Arabic emails में से 10.9% spam में जाते हैं (110 में से 12), जबकि बाकी असली emails में से 4.1% (690 में से 28)। सिर्फ़ 150 Arabic emails हैं (40 spam, 110 not spam), इसलिए इसे बड़े sample पर पक्का करें।
False positives महँगा error हैं, इसलिए precision और false positives की गिनती देखें और threshold बढ़ाएँ: कम emails flag होते हैं और recall आम तौर पर घटता है, जिसे manager स्वीकार करता है। Threshold validation set पर tune करें, test set पर नहीं, और Arabic segment अलग से जाँचें; उसे नए threshold की बजाय ज़्यादा और बेहतर labelled Arabic training data की ज़रूरत हो सकती है।
संभावित सवाल (कोई भी तीन): क्या sets के बीच near-duplicates (थोड़ा बदला हुआ वही campaign, forwarded chains) हटाए गए? क्या छह महीने पुराना test set आज के emails को represent करता है? Emails किसने label किए, और किस guideline से? Training set में कितने Arabic emails थे?
अक्सर पूछे जाने वाले सवाल
क्या ML systems टेस्ट करने के लिए मुझे models train करना आना चाहिए?
नहीं। आपको समझना है कि data कैसे split और label हुआ, model कैसे evaluate हुआ और metrics का मतलब क्या है, ताकि आप evaluation पर सवाल उठा सकें और उसके आसपास tests design कर सकें। Spreadsheet या छोटी script से data पढ़ना और metrics निकालना मदद करता है, लेकिन models train करना data scientist का काम है।
अच्छी accuracy, precision या recall कितनी होती है?
कोई universal value नहीं है। यह हर error type की cost, positive class कितनी दुर्लभ है, और model को किस baseline से बेहतर होना है, इस पर निर्भर करता है। Evaluation से पहले product owner के साथ हर segment के target values तय करें और उन्हें acceptance criteria के रूप में लिखें।
Validation set और test set में क्या फ़र्क है?
Validation set development के दौरान बार-बार models की तुलना करने, settings tune करने और threshold चुनने में इस्तेमाल होता है, इसलिए उसका score आम तौर पर optimistic होता है। Test set अंत में, सारे फ़ैसलों के बाद, एक बार इस्तेमाल होता है ताकि अनदेखे data पर performance का अनुमान लगे। कुछ teams दोनों नाम उलट देती हैं, इसलिए जाँचें कि number किस set से आया।
क्या unsupervised model के लिए confusion matrix इस्तेमाल हो सकता है?
सिर्फ़ तब जब कम से कम एक sample के labels हों। मसलन anomaly detection में domain experts flagged और unflagged cases के random sample को label कर सकते हैं, और आप उस sample से precision और recall का अनुमान लगाते हैं। Labels के बिना आप samples के expert review और results की stability व समझदारी की जाँच पर निर्भर रहते हैं।
संदर्भ
- Certified Tester AI Testing (CT-AI) v2.0AI-आधारित सिस्टम की टेस्टिंग पर ISTQB का specialist पाठ्यक्रम, machine learning और generative AI सिस्टम सहित।
- ISO/IEC TR 29119-11:2020 — Software and systems engineering — Software testing — Part 11: Guidelines on the testing of AI-based systemsAI-आधारित सिस्टम की उन विशेषताओं पर तकनीकी रिपोर्ट जो उन्हें टेस्ट करना कठिन बनाती हैं, और उनके टेस्ट तरीक़ों पर।
- AI Risk Management Framework (AI RMF 1.0)पूरे जीवनचक्र में AI जोखिम प्रबंधन के लिए NIST का स्वैच्छिक फ़्रेमवर्क, Govern, Map, Measure और Manage फ़ंक्शन में व्यवस्थित।
Mutqan tools से अभ्यास करें
प्रतिशत, प्रतिशत परिवर्तन, वृद्धि/कमी और X, Y का कितना प्रतिशत है — सब गिनें।
CSV या TSV डेटा को JSON ऑब्जेक्ट के ऐरे में बदलें।
किसी API रिस्पॉन्स का विश्लेषण करें: संरचना, फ़ील्ड टाइप, null, डुप्लिकेट, साइज़ और संभावित डेटा-क्वालिटी समस्याएँ।
और गहराई से
इस topic में आपकी प्रगति
प्रगति ट्रैक करने के लिए साइन इन करें
Topics पूर्ण चिह्नित करें, जहाँ छोड़ा था वहीं से जारी रखें और specialisation परीक्षाएँ खोलें।