← नवीनतम पेपर
💻 computer science

Transparency in Software Defect Prediction: A Dual Approach using Explainability and Tradeoff Analysis

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

मूल लेखक: Nitin Sai Bommi, Umamaheswara Sharma Bhutamapuram, Atul Negi

प्रकाशित 2026-08-04
📖 7 मिनट में पढ़ें🧠 गहराई से पढ़ें

मूल लेखक: Nitin Sai Bommi, Umamaheswara Sharma Bhutamapuram, Atul Negi

मूल पेपर CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/) के तहत लाइसेंस किया गया है। नीचे दिए गए पेपर की यह व्याख्या AI से तैयार की गई है। इसे लेखकों ने न तो लिखा है, न इसका समर्थन किया है। तकनीकी सटीकता के लिए मूल पेपर देखें। पूरा डिस्क्लेमर पढ़ें

कल्पना कीजिए कि आप एक जासूस हैं जिसे एक हज़ार निर्दोष नागरिकों की भीड़ में से एक छिपे हुए गद्दार को ढूंढना है। आपका काम यह है कि गद्दार को कोई भी गड़बड़ी करने से पहले पहचान लेना है। यह सॉफ्टवेयर इंजीनियरों की दैनिक वास्तविकता है, जो कोड के "बग्स" या दोषों को खोजने वाले डिजिटल जासूसों की तरह काम करते हैं। सॉफ्टवेयर इंजीनियरिंग की दुनिया में, इस खोज को सॉफ्टवेयर डिफेक्ट प्रेडिक्शन (Software Defect Prediction) कहा जाता है। यह एक उच्च-दांव वाला खेल है जहाँ लक्ष्य सिस्टम के टूटने से पहले खराब कोड को पहचानना है।

इस खेल को खेलने के लिए, इंजीनियर मशीन लर्निंग मॉडल्स (Machine Learning models) नामक कंप्यूटर प्रोग्राम का उपयोग करते हैं। इन मॉडल्स को ऐसे सुपर-स्मार्ट सहायकों के रूप में समझें जिन्होंने अतीत में कोड की लाखों पंक्तियों को पढ़ा है। वे कोड के एक नए हिस्से को देखते हैं और उसे 0 और 1 के बीच एक "संदेह स्कोर" (suspicion score) देते हैं। 0 का अर्थ है "पूरी तरह से निर्दोष," और 1 का अर्थ है "दोषी करार दिया गया।" पेचीदा हिस्सा यह तय करना है कि रेखा कहाँ खींची जाए। यदि आप रेखा बहुत नीचे सेट करते हैं, तो आप निर्दोष लोगों पर आरोप लगा सकते हैं (गलत अलार्म), जिससे सबका समय बर्बाद होता है। यदि आप इसे बहुत ऊपर सेट करते हैं, तो आप असली गद्दार को हाथ से जाने दे सकते हैं (छूटे हुए दोष), जो विनाशकारी हो सकता है। लंबे समय तक, अधिकांश जासूस बस एक मानक नियम का उपयोग करते थे: "यदि स्कोर 0.5 से ऊपर है, तो यह दोषी है।" लेकिन जैसा कि यह नया शोध बताता है, वह मानक नियम चूक कर जा सकता है।


पेपर का बड़ा विचार: सही रेखा खोजना

अपने पेपर, "Transparency in Software Defect Prediction: A Dual Approach using Explainability and Tradeoff Analysis" में, नितिन साई बोम्मी, उमामहेश्वरा शर्मा भूतमपुरम और अतुल नेगी तर्क देते हैं कि पुराना "0.5 नियम" एक ही आकार की टोपी का उपयोग करने जैसा है जो अलग-अलग सिर के आकार वाले लोगों की भीड़ के लिए उपयुक्त नहीं है। यह किसी पर फिट नहीं बैठता।

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

तरकीब #1: बदलता हुआ लक्ष्य (ऑप्टिमल थ्रेशोल्ड)

पहली तरकीब "संदेह रेखा" को समायोजित करने के बारे में है। शोधकर्ताओं ने तीन अलग-अलग प्रकार के जासूसी सहायकों का परीक्षण किया: लॉजिस्टिक्स रिग्रेशन (Logistic Regression), नाइव बेयस (Naïve Bayes), और न्यूरल नेटवर्क (Neural Networks)। उन्होंने पाया कि उनके लिए जादुई नंबर 0.5 नहीं था।

  • लॉजिस्टिक्स रिग्रेशन सहायक के लिए, सही बिंदु (sweet spot) लगभग 0.35 था।
  • नाइव बेयस के लिए, यह और भी कम, 0.3 था।
  • न्यूरल नेटवर्क के लिए, यह 0.38 था।

इसे रेडियो ट्यून करने की तरह समझें। यदि आप डायल को बीच में छोड़ देते हैं, तो आपको स्टेटिक सुनाई दे सकता है। लेकिन यदि आप इसे थोड़ा बाईं या दाईं ओर खिसकाते हैं, तो अचानक संगीत एकदम स्पष्ट सुनाई देने लगता है। इन मॉडल्स के लिए थ्रेशोल्ड को नीचे (लगभग 0.3 या 0.4 तक) ले जाकर, वे गलत अलार्मों की संख्या को कम रखते हुए वास्तविक दोषों को पहचानने में बहुत बेहतर हो गए। 10 सॉफ्टवेयर प्रोजेक्ट्स के 36 अलग-अलग वर्जनों में अपने परीक्षणों में, यह सरल समायोजन लगातार मानक पद्धति से बेहतर प्रदर्शन करता रहा।

तरकीब #2: "क्या होगा अगर" का खेल (काउंटरफैक्चुअल एक्सप्लेनेशन)

दूसरी तरकीब थोड़ी जादुई है। लेखकों ने काउंटरफैक्चुअल एक्सप्लेनेशन (Counterfactual Explanations) का उपयोग किया। कल्पना कीजिए कि आपके पास एक "दोषी" संदिग्ध (एक दोषपूर्ण कोड मॉड्यूल) की फोटो है। मॉडल कहता है, "यह बुरा है।" अब, कल्पना कीजिए कि आप मॉडल से पूछ सकते हैं, "क्या होगा अगर मैं इसमें एक छोटी सी चीज़ बदल दूँ? क्या यह निर्दोष बन जाएगा?"

शोधकर्ताओं ने बिल्कुल यही किया। उन्होंने उस कोड को लिया जिसे मॉडल पहले से ही अच्छा या बुरा जानता था और पूछा, "कौन सा छोटा सा बदलाव इसे अच्छे से बुरे में, या बुरे से अच्छे में बदल देगा?" उन्होंने इन "क्या होगा अगर" वाले परिदृश्यों का उपयोग करके कोड के नए, सिंथेटिक उदाहरण बनाए। फिर, उन्होंने इन नए उदाहरणों को मॉडल को अतिरिक्त प्रशिक्षण देने के लिए वापस फीड किया।

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

उन्होंने क्या पाया (और क्या नहीं)

परिणाम उत्साहजनक लेकिन विशिष्ट थे। उन्होंने अपनी सफलता को मापने के लिए दो मुख्य उपकरणों का उपयोग किया:

  1. फॉल्स ओमिशन रेट (FOR): वे कितनी बार एक वास्तविक दोष को चूक गए? (वे चाहते थे कि यह कम रहे)।
  2. परसेंट ऑफ सेव्ड बजट (PSB): साफ कोड का परीक्षण न करके उन्होंने कितना समय और पैसा बचाया?

जब उन्होंने अपने नए "शिफ्टिंग गोलपोस्ट" तरीके का उपयोग किया, तो मॉडल्स ने पुराने तरीके की तुलना में बेहतर प्रदर्शन किया। उदाहरण के लिए, लॉजिस्टिक रिग्रेशन मॉडल के साथ, औसत ऑप्टिमल थ्रेशोल्ड 0.35 था, और इसने मानक 0.5 थ्रेशोल्ड की तुलना में छूटे हुए दोषों की दर को काफी कम कर दिया।

हालाँकि, लेखक सावधान भी हैं कि वे इसे कोई जादुई समाधान नहीं कह सकते। वे स्पष्ट रूप से कहते हैं कि जबकि ये विधियाँ बग पकड़ने और गलत आरोपों से बचने के बीच संतुलन में सुधार करती हैं, वे सब कुछ हल नहीं करती हैं। काउंटरफैक्चुअल विधि ( "क्या होगा अगर" वाला खेल) ने मदद की, लेकिन यह हमेशा सर्वश्रेष्ठ परिणाम नहीं दे पाई क्योंकि मॉडल पहले से ही उन नकली उदाहरणों को उत्पन्न करने में पूरी तरह से सक्षम नहीं है।

वे यह भी बताते हैं कि उनके निष्कर्ष विशिष्ट डेटा सेट्स (PROMISE रिपॉजिटरी) पर आधारित हैं और यदि इन्हें पूरी तरह से अलग प्रकार के सॉफ्टवेयर प्रोजेक्ट्स पर लागू किया जाए तो ये अलग दिख सकते हैं। उन्होंने यह साबित नहीं किया कि यह काम पूरे ब्रह्मांड के हर सॉफ्टवेयर के लिए करता है, लेकिन उन्होंने यह दिखाया कि जिन प्रोजेक्ट्स का उन्होंने परीक्षण किया, उनके लिए डिफ़ॉल्ट 0.5 नियम से दूर जाना एक स्मार्ट कदम है।

यह क्यों मायने रखता है

यह पेपर एक याद दिलाता है कि सॉफ्टवेयर की दुनिया में, "एक ही आकार सबके लिए" (one size fits all) अक्सर एक जाल होता है। यह तय करने का मानक तरीका कि एक बग क्या है और क्या नहीं, बहुत कठोर हो सकता है। केवल कंप्यूटर से यह पूछकर, "इस विशिष्ट कार्य के लिए सबसे अच्छी रेखा क्या है?" और अधिक सीखने के लिए "क्या होगा अगर" वाले प्रश्नों का उपयोग करके, हम सुरक्षित और रखरखाव में सस्ता सॉफ्टवेयर बना सकते हैं। यह दृष्टिकोण में एक छोटा सा बदलाव है, लेकिन डिजिटल अंधेरे में बग्स का शिकार करने वाले जासूसों के लिए यह वही टॉर्च हो सकती है जिसकी उन्हें ज़रूरत थी।

अपने क्षेत्र के पेपरों की भीड़ में उलझे हुए हैं?

आपके रिसर्च कीवर्ड से मेल खाने वाले सबसे नए और अलग सोच वाले पेपरों का रोज़ाना Digest पाएँ—तकनीकी सारांश के साथ, आपकी भाषा में।

Digest आज़माएँ →