HeadlinesBriefing favicon HeadlinesBriefing.com

एडवर्सरियल वैधीकरण से छिपा डेटा ड्रिफ्ट पातें

Towards Data Science •
×

एक विशिष्ट प्रकार की शांति एक अच्छे वैधीकरण रन के बाद आती है। स्क्रीन पर नंबर, AUC 0.91 पर, और सभी सुबह की मीटिंग में सहमति दर्शाते हैं क्योंकि, एक बार के लिए, किसी के पास एक follow-up सवाल पूछने का कोई कारण नहीं था। मुझे भरोसा रखें, यह एक अच्छा महसूस होता है। लेकिन इसे भी एक ऐसा चीज़ है जिसे मैंने सीख लिया है कि उसे पकड़ना या इतना भरोसा न करना चाहिए। मॉडल अंततः उस शुक्रवार को लाइव हो गया। इसके बारे में कुछ भी नहीं था, कोई युद्ध कक्ष नहीं, कोई देर रात नहीं। बस एक डिप्लॉई जो पिछले दो दर्जन में से एक की तरह दिख रहा था। मंगलवार तक, कुछ गलत हो गया था एक ऐसे तरीके से जिसे पहचानने में कई दिन लग गए। फ्लैग्ड केसेज़ पर सटीकता धीरे धीरे बुरी हो गई थी, और इसके बारे में कोई चीज़ एरर के रूप में नहीं दिखी। कोई क्रैश नहीं, कोई अलर्ट नहीं, कोई भी नियंत्रक पर रेड लाइन नहीं जो कोई व्यक्ति वाकई देख रहा था। यह बस वहीं खड़ा रहा और बुरा होता गया, जब तक कि एक downstream टीम एक समीक्षा कतार में गैरेज़ फ़्लैग्स की एक भरपूर मात्रा में थक गई और पूछने लगी कि क्यों। यही है कि इसे कैसे पाया गया। एक सिस्टम ने खुद को नहीं पकड़ा। एक व्यक्ति, इतनी नाराज़ हो गई कि वह खुद ढूंढने लगी। और यहाँ वही हिस्सा है जो अभी भी मुझे थोड़ा परेशान करता है: कोड में कुछ भी नहीं बदला था। मॉडल और पाइपलाइन वही थे जो वह दिन पहले थे। जो बदला वह उनके नीचे वाला दुनिया था। एक नई मूल्य निर्धारण श्रेणी कुछ दिन पहले लॉन्च हुई थी, और उस पर ग्राहक अधिक बार अपने साथ ले जा रहे थे, हर बार कम मात्रा में। मैंने एक फीचर के बारे में जाँचा, और कोई चीज़ गलत नहीं दिखी: लेन-देन का मूल्य सामान्य सीमा में था, और उसी तरह से लेन-देन की आवृत्ति थी। यहीं तक सब ठीक था, जब मैंने दोनों को एक साथ देखा तो डेटा स्पष्ट रूप से कुछ अलग बन गया था, और पाइपलाइन में कोई जाँच नहीं थी जो इसे पकड़ सके। मैंने पहले ही ड्रिफ्ट मॉनिटरिंग सेट कर दी थी और मैं वाकई ही लगा था कि मैं कवर्ड पर हूँ। ख़रा मिला, मैं नहीं था। जो जाँच मैंने की थी वह बिल्कुल वही कर रही थी जो मैंने उसे कहा था, हर फीचर की जाँच करना, बिल्कुल वही जैसा मैंने इसे बनाया था, और यह पूरे समय में हरे रंग की रिपोर्ट देती रहेगी। ईमानदारी से कहूँ तो, यह एक अजीब बात है कि इसे स्वीकार करना पड़ेगा। मॉनिटरिंग खराब नहीं था। और यह न तो आलसी था और न ही आधा बना था। यह बस एक ऐसे सवाल का जवाब दे रहा था जो वह वाकई माँगता था उससे ज्यादा संकीर्ण था। वही हिस्सा जो चुपके से गलत हो जाता है वही है जो अधिकांश ड्रिफ्ट मॉनिटरिंग पूछता है, इसमें मेरा भी समय शामिल है। क्या किसी एकल फीचर का वितरण बदल गया है? इस सप्ताह के मान और प्रशिक्षण समय के मान ले, उन्हें हिस्टोग्राम के रूप में संरेखित करें, और एक नंबर निकालें। कागज़ पर, यह एक बुरा विचार नहीं है। यह सिर्फ अधूरा है। यह तब तक काम करता है जब तक कि विफलता किसी एकल फीचर में नहीं होती, बल्कि दो फीचर के साथ मिलकर कैसे चलते हैं, और यह एक ऐसा तरीका है जिससे वास्तविक डेटा आम तौर पर लिखित रिपोर्टों की तुलना में आसानी से बिगड़ता है। मूल्य निर्धारण श्रेणी की बात एक साफ़ उदाहरण है क्योंकि इसके बारे में कुछ भी गलत नहीं दिखता। avg_transaction_value के साथ PSI चलाएं, ठीक है। num_transactions_30d के साथ PSI चलाएं, भी ठीक है। दोनों के बीच का संबंध उल्टा हो गया, और PSI, डिज़ाइन के अनुसार, कभी दो कॉलम एक साथ नहीं देखता। यह नहीं कर सकता। यह मेट्रिक की एक कमी नहीं है, बल्कि एक सीमा है जिसे कभी पार नहीं किया गया था। इसलिए प्रश्न यह हो जाता है: आप एक वितरण की जाँच कैसे करेंगे एक संबंध की नहीं? पता चलता है कि जवाब कोई अजीब सांखड़िकी नहीं है जिसे आपको सीखना पड़े। यह बस यह है कि आप एक मॉडल को आपके लिए ध्यान देने के लिए कहें। एक क्लासिफ़ायर को ध्यान देने दें। इस तकनीक का एक नाम है, एडवर्सरियल वैधीकरण, और यह इसे जितना बड़ा दिखाता है उससे ज्यादा नहीं है। अपनी प्रशिक्षण पंक्तियों को 0 लेबल करें, एक ताज़ा उत्पादन पंक्तियों को 1 लेबल करें, और एक क्लासिफ़ायर को अलग करने के लिए प्रशिक्षित करें। अगर दोनों बैच वाकई से एक ही वितरण से निकले हैं, तो वह बेहतर नहीं कर सकता जो भी अनुमान लगा सकता है, AUC 0.5 के करीब। अगर वह उन्हें अलग कर सकता है, तो कुछ हिल गया है, और क्योंकि क्लासिफ़ायर को एक साथ सभी फीचर मिल जाते हैं, इसलिए वह ठीक उसी प्रकार के संयुक्त परिवर्तन को पकड़ लेता है।