लाभ:
- डेटा पाइपलाइन (संग्रह, सत्यापन, सफाई, परिवर्तन, विभाजन, संस्करण) स्थापित करने और पाइपलाइन की शुरुआत में स्कीमा सत्यापन रखने की क्षमता
- डेटा रिसाव (समूह और अस्थायी) को रोकने के लिए फ़ील्ड अर्थ और विभाजन के आधार पर लापता मूल्य और लेबलिंग निर्णय लेने की क्षमता
- डेटा संस्करण और यादृच्छिकता बीज को ठीक करके एक प्रतिलिपि प्रस्तुत करने योग्य डेटा बेस बनाने की क्षमता
प्रत्येक मशीन लर्निंग सिस्टम की वास्तविक शक्ति डेटा में निहित है, मॉडल में नहीं। अनुभवी इंजीनियरों को पता है: "कचरा अंदर, कचरा बाहर" - यहां तक कि सबसे उन्नत मॉडल में भी खराब डेटा खराब परिणाम देगा। इस इकाई में, हम डेटा पाइपलाइन (डेटा पाइपलाइन: चरणों की श्रृंखला जो कच्चे डेटा को मॉडल प्रशिक्षण के लिए तैयार करते हैं) को शुरू से अंत तक स्थापित करते हैं और सीखते हैं कि इस लाइन के किस चरण पर हम सुरक्षित रूप से कृत्रिम बुद्धिमत्ता का उपयोग कर सकते हैं।
डेटा लाइन के चरण
एक डेटा लाइन आम तौर पर इन स्टॉप से होकर गुजरती है:
- संग्रह (अंतर्ग्रहण): स्रोतों (डेटाबेस, एपीआई, लॉग फ़ाइलें, ईवेंट स्ट्रीम) से डेटा खींचना।
- सत्यापन: यह जांचना कि डेटा अपेक्षित स्कीमा, प्रकार और श्रेणियों के अनुरूप है या नहीं।
- सफ़ाई: गुम मानों, डुप्लिकेट रिकॉर्ड, आउटलेर्स और विसंगतियों को संभालना।
- परिवर्तन: कच्चे डेटा को विशेषताओं में बदलना - जैसे कि एक श्रेणीबद्ध चर को एक संख्या में परिवर्तित करना, एक तारीख से "सप्ताह का दिन" बनाना।
- विभाजन: प्रशिक्षण, सत्यापन और परीक्षण सेटों में अलग करना।
- वर्जनिंग: यह रिकॉर्ड करना कि किस मॉडल को किस डेटा के साथ प्रशिक्षित किया गया था।
कृत्रिम बुद्धिमत्ता कोड ड्राफ्ट और विचार उत्पन्न करके समय बचाती है, विशेष रूप से चरण 2, 3 और 4 में। लेकिन निर्णय जैसे कि कौन सा रिकॉर्ड छोड़ना है, कौन सा खोया हुआ मान भरना है और कैसे भरना है, यह उस इंजीनियर का है जो डेटा जानता है; क्योंकि अनुचित सफ़ाई मॉडल में एक छिपा हुआ पूर्वाग्रह पैदा कर सकती है।
डेटा सत्यापन: लाइन की प्रारंभिक रक्षा
सबसे महंगी त्रुटियां उत्पादन में नहीं, बल्कि वहां शुरू होती हैं जहां सत्यापन चरण को छोड़ दिया जाता है। स्कीमा सत्यापन स्वचालित रूप से जाँचता है कि डेटा का प्रत्येक आने वाला बैच अपेक्षित संरचना के अनुरूप है या नहीं। उदाहरण के लिए, क्या आयु कॉलम 0-120 के बीच है, क्या ईमेल फ़ील्ड खाली है, क्या कॉलमों की संख्या बदल गई है?
युक्ति: सत्यापन को पंक्ति की शुरुआत में रखें। जितनी जल्दी भ्रष्ट डेटा पकड़ा जाएगा, उसे ठीक करना उतना ही सस्ता होगा। उत्पादन में पकड़ी गई स्कीमा त्रुटि प्रशिक्षण चरण में पकड़ी गई स्कीमा त्रुटि से कई गुना अधिक महंगी होती है।
निम्नलिखित डेटा स्कीमा के लिए पैंडेरा (या ग्रेट एक्सपेक्टेशंस) के साथ एक सत्यापन योजना लिखें। कॉलम और नियम: - उपयोगकर्ता_आईडी: पूर्णांक, शून्य नहीं हो सकता, अद्वितीय - आयु: पूर्णांक, 0-120 से नहीं हो सकता - साइनअप_डेट: दिनांक, भविष्य में नहीं हो सकता - देश: श्रेणीबद्ध, सेट से {टीआर, डीई, यूएस, यूके} - शेष: दशमलव, नकारात्मक नहीं हो सकता प्रत्येक नियम उल्लंघन के लिए एक सार्थक त्रुटि संदेश उत्पन्न करें। कोड के अंत में टूटी हुई रेखा के उदाहरण के साथ परीक्षण दिखाएं।
सफ़ाई: यह मनुष्य ही है जो निर्णय लेता है
गुम मान प्रत्येक डेटा सेट की वास्तविकता हैं। संभालने के तरीके:
- हटाना: बहुत अधिक गायब दर वाली पंक्ति/स्तंभ को हटाना। लेकिन सूचना हानि और पूर्वाग्रह का जोखिम है।
- प्रतिरूपण: माध्य, माध्यिका, सर्वाधिक बारंबार मान या मॉडल-आधारित भविष्यवाणी के साथ प्रतिरूपण।
- ध्वज: एक अलग ध्वज कॉलम में "गायब था" जानकारी संग्रहीत करना - कभी-कभी गायब होना ही संकेत होता है।
इनमें से कौन सा सही है यह समस्या पर निर्भर करता है। मेडिकल डेटा सेट में, "रक्त का मूल्य नहीं मापा गया" जानकारी को हटाने के बजाय संरक्षित किया जाना चाहिए; क्योंकि डॉक्टर का माप लेने से इंकार करना भी एक संकेत है। AI आपको विकल्प और कोड दे सकता है; आप चुनें कि कौन सा क्षेत्र की वास्तविकता के अनुकूल है।
कमजोर संकेत/मजबूत संकेत
कमज़ोर संकेत: "लापता मान भरें।"
सशक्त संकेत: "निम्नलिखित कॉलम में गायब मान हैं: आय (12% गायब, दाएं-तिरछा वितरण), लास्ट_लॉगिन (30% गायब)। औसत के साथ आय भरने का सुझाव दें, लेकिन समझाएं कि माध्य क्यों है और माध्य क्यों नहीं। लास्ट_लॉगिन के लिए, मान लें कि गायब मूल्य महत्वपूर्ण हो सकता है (उपयोगकर्ता ने कभी लॉग इन नहीं किया होगा); हटाने के बजाय एक नेवर_लॉग_इन ध्वज उत्पन्न करने पर विचार करें। मॉडल में जोड़े जाने वाले पूर्वाग्रह को लिखें।"
अंतर: मजबूत संकेत वितरण जानकारी और क्षेत्र का अर्थ देता है; कृत्रिम बुद्धिमत्ता यांत्रिक भरण के बजाय निर्णय समर्थन उत्पन्न करती है।
लेबलिंग: गुणवत्ता मापी जाती है
पर्यवेक्षित शिक्षण में (सीखना जिसमें सही उत्तरों के साथ उदाहरण दिए जाते हैं), मॉडल जो सीखता है वह लेबल होते हैं (लेबल: प्रत्येक उदाहरण के लिए सही उत्तर)। लेबल की गुणवत्ता एक सीमा निर्धारित करती है - यदि लोग असंगत रूप से लेबल करते हैं, तो मॉडल असंगत रूप से सीखता है।
अंतर-एनोटेटर समझौता उस दर को मापता है जिस पर विभिन्न लोग एक ही नमूने को एक ही लेबल देते हैं; इसे कोहेन के कप्पा जैसे गुणांक द्वारा व्यक्त किया जाता है। कम अनुपालन इंगित करता है कि या तो कार्य अस्पष्ट है या निर्देश कमज़ोर है।
आर्टिफिशियल इंटेलिजेंस दो तरह से लेबलिंग में मदद करता है: (1) एनोटेशन दिशानिर्देश का मसौदा तैयार करना, (2) पूर्व-लेबलिंग और मानव द्वारा ही इसे सही करना। लेकिन एलएलएम के साथ प्री-लेबलिंग में एक ख़तरा है: मॉडल की व्यवस्थित त्रुटि पूरे लेबल सेट में लीक हो सकती है। इसीलिए मनुष्य हमेशा कुछ एलएलएम लेबलों की जाँच करते हैं।
ध्यान दें: एलएलएम द्वारा निर्मित लेबलों को "जमीनी सच्चाई" न समझें। एक मानव के साथ एक नमूना जांचें और एलएलएम-मानव फिट को मापें। यदि अनुपालन कम है, तो पूर्व-लेबलिंग फायदे से अधिक नुकसान करेगी।
डेटा विभाजन: रिसाव को रोकें
डेटा को प्रशिक्षण/सत्यापन/परीक्षण में विभाजित करते समय सबसे खतरनाक गलती डेटा रिसाव है: परीक्षण जानकारी को प्रशिक्षण में मिलाना। उदाहरण:
- एक ही उपयोगकर्ता के रिकॉर्ड प्रशिक्षण और परीक्षण (समूह लीक) दोनों में आते हैं।
- प्रशिक्षण में भविष्य का उपयोग करना और समय श्रृंखला में परीक्षण में अतीत का उपयोग करना (अस्थायी रिसाव)।
- सभी डेटा से स्केलिंग (सामान्यीकरण) मापदंडों की गणना करना और फिर विभाजित करना।
समय से जुड़ी समस्याओं के लिए अस्थायी विभाजन आवश्यक है: अतीत के साथ प्रशिक्षण लें, भविष्य में परीक्षण करें। यादृच्छिक बंटवारा एक "भविष्य का" लाभ देता है जो उत्पादन में कभी नहीं होगा और मेट्रिक्स को बढ़ा देता है।
डेटा वर्जनिंग और प्रतिलिपि प्रस्तुत करने योग्यता
"हमने इस मॉडल को किस डेटा के साथ प्रशिक्षित किया?" महीनों बाद प्रश्न का उत्तर देने में सक्षम होना गंभीर एमएल इंजीनियरिंग की पहचान है। डेटा वर्जनिंग प्रत्येक डेटा स्नैपशॉट को एक आईडी (हैश या वर्जन टैग) के साथ संग्रहीत करता है। डीवीसी (डेटा संस्करण नियंत्रण) जैसे उपकरण कोड की तरह संस्करण डेटा।
किसी मॉडल के परिणाम को पुन: प्रस्तुत करने के लिए, तीन चीजें तय की जानी चाहिए: डेटा संस्करण, कोड संस्करण और यादृच्छिक बीज। इस तिकड़ी के बिना यह कहना संभव नहीं है कि "मुझे वही परिणाम मिला"। हम इकाई 11 में प्रतिलिपि प्रस्तुत करने योग्यता को गहरा करेंगे; लेकिन डेटा पाइपलाइन में बीज को ठीक करना यहीं से शुरू होता है।
तीन मिनी मामले
केस 1 - जिस दिन स्कीमा सत्यापन सहेजा गया। जब एक टीम ने अपस्ट्रीम सिस्टम मूल्य फ़ील्ड को पेनीज़ से लीरा में परिवर्तित किया, तो सभी कीमतें 100 गुना गिर गईं। स्कीमा सत्यापन ने बैच को "मूल्य सीमा से बाहर" के रूप में खारिज कर दिया और मॉडल को दूषित डेटा के साथ प्रशिक्षित नहीं किया गया था। सत्यापन के बिना, उत्पादन में त्रुटि केवल गलत भविष्यवाणियों के साथ ही देखी जाएगी।
केस 2 - गलत भरने का पूर्वाग्रह। एक क्रेडिट मॉडल में, लापता आय मूल्यों को माध्य से भर दिया गया था। लेकिन गायब आय मुख्य रूप से निम्न आय वर्ग में थी; औसत ने इस समूह को कृत्रिम रूप से "समृद्ध" किया, और मॉडल ने उन्हें अनुचित रूप से उच्च सीमा की पेशकश की। माध्यिका + अनुपलब्धता ध्वज के साथ समस्या का समाधान किया गया।
केस 3 - टेम्पोरल लीकेज। एक मांग पूर्वानुमान मॉडल परीक्षण सेट (95% सटीकता) पर बहुत अच्छा लग रहा था लेकिन उत्पादन में क्रैश हो गया। क्यों: यादृच्छिक विभाजन के कारण, मॉडल ने भविष्य देख लिया था। टेम्पोरल बिनिंग पर स्विच करने से परीक्षण सटीकता 78% तक गिर गई - लेकिन यह वास्तविक प्रदर्शन था और इसे उत्पादन में बनाए रखा।
कॉपी करने योग्य टेम्पलेट
निम्नलिखित डेटासेट को तीन सेटों में विभाजित करें: प्रशिक्षण/सत्यापन/परीक्षण। बाधा: यह एक समय श्रृंखला है; टेम्पोरल स्प्लिटिंग का उपयोग करें (अतीत में प्रशिक्षण, भविष्य में परीक्षण)। बैच रिसाव को रोकें: केवल एक क्लस्टर में समान `customer_id` रखें। केवल प्रशिक्षण सेट से स्केलिंग मापदंडों की गणना करें, फिर सभी पर लागू करें। प्रत्येक चरण में कोड में कितनी पंक्तियाँ बची हैं, इसे प्रिंट करें और एक ऐसा दावा जोड़ें जो जाँचता हो कि कहीं कोई लीक तो नहीं है।
इस लेबलिंग कार्य के लिए एक मसौदा एनोटेशन दिशानिर्देश लिखें। कार्य: [उदा। ग्राहक समीक्षा को सकारात्मक/नकारात्मक/तटस्थ लेबल करें] सीमावर्ती मामलों को स्पष्ट करें: व्यंग्य, मिश्रित भावना, उत्पाद से असंबंधित समीक्षा को कैसे लेबल करें? 5 उदाहरण और 3 कठिन किनारे वाले मामले दें जो टैगर्स में स्थिरता बढ़ाएंगे।
इस डेटा पाइपलाइन के लिए एक प्रतिलिपि प्रस्तुत करने योग्य चेकलिस्ट बनाएं: - डेटा संस्करण कैसे तय किया जाना चाहिए? - कौन से यादृच्छिकता बीज कहां सेट किए जाने चाहिए? - कौन सा मेटाडेटा (डेटा हैश, पंक्ति गणना, दिनांक) लॉग किया जाना चाहिए? मेरा कोडबेस: [भाषा/लाइब्रेरी]
डेटा लीक के लिए इस क्लीनअप कोड की जाँच करें। विशेष रूप से इसे देखें: क्या स्केलिंग/एन्कोडिंग पैरामीटर की गणना विभाजन से पहले की जाती है? क्या किसी भी आँकड़े की गणना सभी डेटा या सिर्फ प्रशिक्षण से की जाती है? कोड: [कोड]
निर्णय तालिका: गुम मूल्य रणनीति
स्थिति
अनुशंसित दृष्टिकोण
क्यों
संख्यात्मक, विषम वितरण
मध्यिका से भरें
औसत आउटलेर्स से प्रभावित होता है
संख्यात्मक, सममित
औसत से भरें
जानकारी की सुरक्षा करता है
कमी महत्वपूर्ण हो सकती है
फ़्लैग कॉलम + भरें
अभाव एक संकेत है
लुप्त दर > 60%
कॉलम का मूल्यांकन/त्याग करें
शोर बहुत है
श्रेणीबद्ध
"अज्ञात" श्रेणी
कृत्रिम बहुमत नहीं बनाता
सामान्य गलतियाँ
- सत्यापन छोड़ा जा रहा है. स्कीमा नियंत्रण के बिना, दूषित डेटा चुपचाप अंदर आ जाता है।
- बंटवारे से पहले स्केलिंग. यह शिक्षा में परीक्षण आँकड़े लीक करता है।
- समय श्रृंखला में यादृच्छिक विभाजन का उपयोग करना। यह नकली उच्च मेट्रिक्स उत्पन्न करता है।
- एलएलएम लेबल पर आंख मूंदकर भरोसा करना। व्यवस्थित त्रुटि पूरे डेटा में फैल जाती है।
- डेटा संस्करण सहेजा नहीं जा रहा. आप परिणाम को पुन: प्रस्तुत नहीं कर सकते.
- औसत के साथ यांत्रिक भरना। यह फ़ील्ड अर्थ को नज़रअंदाज करता है, पूर्वाग्रह जोड़ता है।
संक्षेप में
डेटा पाइपलाइन एमएल प्रणाली की नींव है और मॉडल की तुलना में अधिक प्रयास की पात्र है। सत्यापन को सबसे ऊपर रखें; डोमेन ज्ञान के साथ सफाई और लेबलिंग संबंधी निर्णय लेना; डिब्बे में रिसाव (समूह और अस्थायी) को रोकें; डेटा संस्करण और बीज को ठीक करें। एआई इस लाइन पर कोड और विचार उत्पन्न करता है, लेकिन यह आपको तय करना है कि किस डेटा को संसाधित करना है और कैसे - क्योंकि यहां हर गलत निर्णय एक छिपे हुए दोष के रूप में मॉडल में गुजरता है।
आवेदन कार्य
अपने स्वयं के डेटासेट पर एक सत्यापन योजना (पेंडेरा/ग्रेट एक्सपेक्टेशंस) लिखें और जानबूझकर एक खराब पंक्ति जोड़ें और दिखाएं कि यह पकड़ में आ गया है। फिर डेटा को अस्थायी या बैचवाइज विभाजित करें, केवल प्रशिक्षण से स्केलिंग मापदंडों की गणना करें, और पुष्टि करें कि एक दावे के साथ कोई रिसाव नहीं है। मेटाडेटा फ़ाइल में डेटा संस्करण और पंक्ति गणना लिखें।
चेकलिस्ट
- [ ] स्कीमा सत्यापन पंक्ति के शीर्ष पर चलता है।
- [ ] मैंने फ़ील्ड अर्थ के आधार पर लुप्त मूल्य रणनीति को चुना, मैंने इसे यांत्रिक रूप से नहीं भरा।
- [ ] मैंने लेबल की गुणवत्ता (अनुपालन) मापी; मैंने एलएलएम टैग्स की मानव-जाँच की।
- [ ] मैंने फलक में समूह और अस्थायी रिसाव को रोका।
- [ ] स्केलिंग/एन्कोडिंग की गणना केवल प्रशिक्षण सेट से की जाती है।
- [ ] डेटा संस्करण, पंक्तियों की संख्या और दर्ज बीज।