TensorFlow डेटा सत्यापन: आपके डेटा की जाँच और विश्लेषण

एक बार जब आपका डेटा TFX पाइपलाइन में होता है, तो आप इसका विश्लेषण और रूपांतरण करने के लिए TFX घटकों का उपयोग कर सकते हैं। आप किसी मॉडल को प्रशिक्षित करने से पहले भी इन उपकरणों का उपयोग कर सकते हैं।

आपके डेटा का विश्लेषण और रूपांतरण करने के कई कारण हैं:

  • अपने डेटा में समस्याओं का पता लगाने के लिए। आम समस्याओं में शामिल हैं:
    • डेटा मौजूद नहीं है, जैसे कि खाली मान वाली सुविधाएं.
    • लेबल को सुविधाओं के रूप में माना जाता है, ताकि प्रशिक्षण के दौरान आपके मॉडल को सही उत्तर देखने को मिले।
    • आपके द्वारा अपेक्षित सीमा से बाहर के मानों वाली सुविधाएँ।
    • डेटा विसंगतियाँ।
    • ट्रांसफर लर्न मॉडल में प्रीप्रोसेसिंग होती है जो प्रशिक्षण डेटा से मेल नहीं खाती है।
  • अधिक प्रभावी फीचर सेट इंजीनियर करने के लिए। उदाहरण के लिए, आप पहचान सकते हैं:
    • विशेष रूप से सूचनात्मक विशेषताएं।
    • अनावश्यक विशेषताएं।
    • विशेषताएँ जो पैमाने में इतनी व्यापक रूप से भिन्न होती हैं कि वे सीखने को धीमा कर सकती हैं।
    • बहुत कम या बिना किसी विशिष्ट भविष्य कहनेवाला जानकारी वाली सुविधाएँ।

TFX टूल डेटा बग खोजने में मदद कर सकते हैं, और फीचर इंजीनियरिंग में मदद कर सकते हैं।

TensorFlow डेटा सत्यापन

अवलोकन

TensorFlow डेटा सत्यापन प्रशिक्षण और डेटा की सेवा में विसंगतियों की पहचान करता है, और डेटा की जांच करके स्वचालित रूप से एक स्कीमा बना सकता है। डेटा में विसंगतियों के विभिन्न वर्गों का पता लगाने के लिए घटक को कॉन्फ़िगर किया जा सकता है। यह

  1. उपयोगकर्ता की अपेक्षाओं को संहिताबद्ध करने वाले स्कीमा के विरुद्ध डेटा आंकड़ों की तुलना करके वैधता जांच करें।
  2. प्रशिक्षण और सेवा डेटा में उदाहरणों की तुलना करके प्रशिक्षण-सेवा तिरछा का पता लगाएं।
  3. डेटा की एक श्रृंखला को देखकर डेटा बहाव का पता लगाएं।

हम इनमें से प्रत्येक कार्यात्मकता का स्वतंत्र रूप से दस्तावेजीकरण करते हैं:

स्कीमा आधारित उदाहरण सत्यापन

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

Tensorflow डेटा सत्यापन को आमतौर पर TFX पाइपलाइन के संदर्भ में कई बार लागू किया जाता है: (i) exampleGen से प्राप्त प्रत्येक विभाजन के लिए, (ii) ट्रांसफ़ॉर्म द्वारा उपयोग किए जाने वाले सभी पूर्व-रूपांतरित डेटा के लिए और (iii) द्वारा उत्पन्न सभी पोस्ट-ट्रांसफ़ॉर्म डेटा के लिए रूपांतरण। जब ट्रांसफॉर्म (ii-iii) के संदर्भ में लागू किया जाता है, तो सांख्यिकी विकल्प और स्कीमा-आधारित बाधाओं को stats_options_updater_fn को परिभाषित करके सेट किया जा सकता है। यह असंरचित डेटा (जैसे टेक्स्ट फीचर्स) को मान्य करते समय विशेष रूप से उपयोगी होता है। उदाहरण के लिए उपयोगकर्ता कोड देखें।

उन्नत स्कीमा सुविधाएँ

यह खंड अधिक उन्नत स्कीमा कॉन्फ़िगरेशन को शामिल करता है जो विशेष सेटअप के साथ मदद कर सकता है।

विरल विशेषताएं

उदाहरणों में विरल सुविधाओं को एन्कोड करना आमतौर पर कई विशेषताओं का परिचय देता है जिनसे सभी उदाहरणों के लिए समान वैधता की उम्मीद की जाती है। उदाहरण के लिए विरल सुविधा:


WeightedCategories = [('CategoryA', 0.3), ('CategoryX', 0.7)]
को इंडेक्स और वैल्यू के लिए अलग-अलग फीचर्स का उपयोग करके एन्कोड किया जाएगा:

WeightedCategoriesIndex = ['CategoryA', 'CategoryX']
WeightedCategoriesValue = [0.3, 0.7]
इस प्रतिबंध के साथ कि इंडेक्स और वैल्यू फीचर की वैधता सभी उदाहरणों के लिए मेल खाना चाहिए। इस प्रतिबंध को एक sparse_feature परिभाषित करके स्कीमा में स्पष्ट किया जा सकता है:

sparse_feature {
  name: 'WeightedCategories'
  index_feature { name: 'WeightedCategoriesIndex' }
  value_feature { name: 'WeightedCategoriesValue' }
}

विरल फीचर परिभाषा के लिए एक या अधिक इंडेक्स और एक वैल्यू फीचर की आवश्यकता होती है जो स्कीमा में मौजूद सुविधाओं को संदर्भित करता है। स्पष्ट रूप से विरल सुविधाओं को परिभाषित करने से TFDV यह जांचने में सक्षम होता है कि सभी संदर्भित सुविधाओं की संयोजकता मेल खाती है।

कुछ उपयोग के मामले सुविधाओं के बीच समान संयोजकता प्रतिबंध पेश करते हैं, लेकिन जरूरी नहीं कि एक विरल सुविधा को एन्कोड करें। विरल सुविधा का उपयोग करना आपको अनब्लॉक करना चाहिए, लेकिन यह आदर्श नहीं है।

स्कीमा वातावरण

डिफ़ॉल्ट सत्यापन द्वारा यह माना जाता है कि पाइपलाइन में सभी उदाहरण एक ही स्कीमा का पालन करते हैं। कुछ मामलों में मामूली स्कीमा विविधताओं को पेश करना आवश्यक है, उदाहरण के लिए प्रशिक्षण के दौरान लेबल के रूप में उपयोग की जाने वाली सुविधाओं की आवश्यकता होती है (और मान्य होनी चाहिए), लेकिन सेवा के दौरान गायब हैं। ऐसी आवश्यकताओं को व्यक्त करने के लिए वातावरण का उपयोग किया जा सकता है, विशेष रूप से default_environment() , in_environment() , not_in_environment()

उदाहरण के लिए, मान लें कि प्रशिक्षण के लिए 'LABEL' नाम की एक विशेषता की आवश्यकता है, लेकिन इसके सेवा से गायब होने की उम्मीद है। इसे इसके द्वारा व्यक्त किया जा सकता है:

  • स्कीमा में दो अलग-अलग परिवेशों को परिभाषित करें: ["सेवा", "प्रशिक्षण"] और 'लेबल' को केवल पर्यावरण "प्रशिक्षण" के साथ संबद्ध करें।
  • पर्यावरण "प्रशिक्षण" के साथ प्रशिक्षण डेटा और पर्यावरण "सेवा" के साथ सेवारत डेटा संबद्ध करें।
स्कीमा जनरेशन

इनपुट डेटा स्कीमा को TensorFlow स्कीमा के एक उदाहरण के रूप में निर्दिष्ट किया गया है।

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

TFDV में स्वचालित रूप से एक स्कीमा उत्पन्न करने के लिए infer_schema() शामिल है। उदाहरण के लिए:

schema = tfdv.infer_schema(statistics=train_stats)
tfdv.display_schema(schema=schema)

यह निम्नलिखित नियमों के आधार पर एक स्वचालित स्कीमा पीढ़ी को ट्रिगर करता है:

  • यदि एक स्कीमा पहले से ही स्वतः उत्पन्न हो चुकी है तो इसका उपयोग इस रूप में किया जाता है।

  • अन्यथा, TensorFlow डेटा सत्यापन उपलब्ध डेटा आँकड़ों की जाँच करता है और डेटा के लिए उपयुक्त स्कीमा की गणना करता है।

नोट: ऑटो-जेनरेटेड स्कीमा सर्वोत्तम प्रयास है और केवल डेटा के मूल गुणों का अनुमान लगाने का प्रयास करता है। यह अपेक्षा की जाती है कि उपयोगकर्ता आवश्यकतानुसार इसकी समीक्षा और संशोधन करें।

प्रशिक्षण-सेवा तिरछा जांच

अवलोकन

TensorFlow डेटा सत्यापन प्रशिक्षण और सेवा डेटा के बीच वितरण तिरछा का पता लगा सकता है। वितरण तिरछा तब होता है जब प्रशिक्षण डेटा के लिए सुविधा मूल्यों का वितरण डेटा की सेवा से काफी भिन्न होता है। वितरण तिरछा के प्रमुख कारणों में से एक वांछित कोष में प्रारंभिक डेटा की कमी को दूर करने के लिए प्रशिक्षण डेटा पीढ़ी के लिए या तो पूरी तरह से अलग कोष का उपयोग कर रहा है। एक अन्य कारण एक दोषपूर्ण नमूना तंत्र है जो प्रशिक्षण के लिए केवल सेवारत डेटा का एक उप-नमूना चुनता है।

उदाहरण परिदृश्य

प्रशिक्षण-सेवा तिरछी पहचान को कॉन्फ़िगर करने के बारे में जानकारी के लिए TensorFlow डेटा सत्यापन प्रारंभ करें मार्गदर्शिका देखें।

बहाव का पता लगाना

डेटा के लगातार स्पैन (यानी स्पैन एन और स्पैन एन + 1 के बीच) के बीच बहाव का पता लगाने का समर्थन किया जाता है, जैसे कि प्रशिक्षण डेटा के विभिन्न दिनों के बीच। हम श्रेणीबद्ध विशेषताओं के लिए एल-इन्फिनिटी दूरी और संख्यात्मक विशेषताओं के लिए अनुमानित जेन्सेन-शैनन विचलन के संदर्भ में बहाव व्यक्त करते हैं। आप थ्रेशोल्ड दूरी निर्धारित कर सकते हैं ताकि जब बहाव स्वीकार्य से अधिक हो तो आपको चेतावनी प्राप्त हो। सही दूरी निर्धारित करना आम तौर पर एक पुनरावृत्ति प्रक्रिया है जिसके लिए डोमेन ज्ञान और प्रयोग की आवश्यकता होती है।

ड्रिफ्ट डिटेक्शन को कॉन्फ़िगर करने के बारे में जानकारी के लिए TensorFlow Data Validation Get Started Guide देखें।

अपने डेटा की जांच के लिए विज़ुअलाइज़ेशन का उपयोग करना

TensorFlow डेटा सत्यापन सुविधा मूल्यों के वितरण की कल्पना करने के लिए उपकरण प्रदान करता है। फ़ेसट्स का उपयोग करके जुपिटर नोटबुक में इन वितरणों की जांच करके आप डेटा के साथ सामान्य समस्याओं को पकड़ सकते हैं।

फ़ीचर आँकड़े

संदिग्ध वितरण की पहचान करना

फ़ीचर मानों के संदिग्ध वितरण को देखने के लिए आप फ़ैसिट अवलोकन प्रदर्शन का उपयोग करके अपने डेटा में सामान्य बग की पहचान कर सकते हैं।

असंतुलित डेटा

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

सबसे असंतुलित सुविधाओं को प्रत्येक सुविधा-प्रकार की सूची के शीर्ष पर सूचीबद्ध किया जाएगा। उदाहरण के लिए, निम्न स्क्रीनशॉट एक विशेषता दिखाता है जो सभी शून्य है, और दूसरा जो अत्यधिक असंतुलित है, "संख्यात्मक विशेषताएं" सूची के शीर्ष पर:

असंतुलित डेटा का विज़ुअलाइज़ेशन

समान रूप से वितरित डेटा

एक समान रूप से वितरित विशेषता वह है जिसके लिए सभी संभावित मान समान आवृत्ति के करीब दिखाई देते हैं। असंतुलित डेटा की तरह, यह वितरण स्वाभाविक रूप से हो सकता है, लेकिन डेटा बग द्वारा भी उत्पन्न किया जा सकता है।

एक पहलू अवलोकन में समान रूप से वितरित सुविधाओं का पता लगाने के लिए, "क्रमबद्ध करें" ड्रॉपडाउन से "गैर-एकरूपता" चुनें और "रिवर्स ऑर्डर" चेकबॉक्स को चेक करें:

समान डेटा का हिस्टोग्राम

स्ट्रिंग डेटा को बार चार्ट का उपयोग करके दर्शाया जाता है यदि 20 या उससे कम अद्वितीय मान हैं, और संचयी वितरण ग्राफ़ के रूप में यदि 20 से अधिक अद्वितीय मान हैं। तो स्ट्रिंग डेटा के लिए, समान वितरण या तो फ्लैट बार ग्राफ़ के रूप में दिखाई दे सकते हैं जैसे ऊपर या नीचे की तरह सीधी रेखाएं:

रेखा ग्राफ: एकसमान डेटा का संचयी वितरण

बग जो समान रूप से वितरित डेटा का उत्पादन कर सकते हैं

यहां कुछ सामान्य बग हैं जो समान रूप से वितरित डेटा उत्पन्न कर सकते हैं:

  • तारीखों जैसे गैर-स्ट्रिंग डेटा प्रकारों का प्रतिनिधित्व करने के लिए स्ट्रिंग्स का उपयोग करना। उदाहरण के लिए, आपके पास "2017-03-01-11-45-03" जैसे प्रतिनिधित्व के साथ डेटाटाइम सुविधा के लिए कई अद्वितीय मान होंगे। अद्वितीय मान समान रूप से वितरित किए जाएंगे।

  • सुविधाओं के रूप में "पंक्ति संख्या" जैसे सूचकांक शामिल हैं। यहां फिर से आपके पास कई अनूठे मूल्य हैं।

लापता आँकड़े

यह जाँचने के लिए कि क्या कोई विशेषता मान पूरी तरह से अनुपलब्ध है:

  1. "क्रमबद्ध करें" ड्रॉप-डाउन से "राशि गुम/शून्य" चुनें।
  2. "रिवर्स ऑर्डर" चेकबॉक्स को चेक करें।
  3. किसी सुविधा के लिए अनुपलब्ध मानों वाले उदाहरणों का प्रतिशत देखने के लिए "अनुपलब्ध" कॉलम देखें।

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

  1. दाईं ओर "दिखाने के लिए चार्ट" ड्रॉप-डाउन मेनू से "मान सूची की लंबाई" चुनें।

  2. प्रत्येक फीचर पंक्ति के दाईं ओर चार्ट को देखें। चार्ट सुविधा के लिए मान सूची की लंबाई की सीमा दिखाता है। उदाहरण के लिए, नीचे दिए गए स्क्रीनशॉट में हाइलाइट की गई पंक्ति एक ऐसी सुविधा दिखाती है जिसमें कुछ शून्य-लंबाई मान सूचियां हैं:

शून्य-लंबाई वाली सुविधा मान सूचियों वाली सुविधा के साथ पहलू अवलोकन प्रदर्शन

सुविधाओं के बीच पैमाने में बड़े अंतर

यदि आपकी विशेषताओं में व्यापक रूप से भिन्नता है, तो मॉडल को सीखने में कठिनाई हो सकती है। उदाहरण के लिए, यदि कुछ विशेषताएं 0 से 1 तक भिन्न होती हैं और अन्य 0 से 1,000,000,000 तक भिन्न होती हैं, तो आपके पैमाने में बड़ा अंतर होता है। व्यापक रूप से भिन्न पैमानों को खोजने के लिए सभी सुविधाओं में "अधिकतम" और "न्यूनतम" कॉलम की तुलना करें।

इन व्यापक विविधताओं को कम करने के लिए सुविधा मानों को सामान्य बनाने पर विचार करें।

अमान्य लेबल वाले लेबल

TensorFlow के अनुमानकों के पास लेबल के रूप में स्वीकार किए जाने वाले डेटा के प्रकार पर प्रतिबंध है। उदाहरण के लिए, बाइनरी क्लासिफायर आमतौर पर केवल {0, 1} लेबल के साथ काम करते हैं।

पहलू अवलोकन में लेबल मानों की समीक्षा करें और सुनिश्चित करें कि वे अनुमानकों की आवश्यकताओं के अनुरूप हैं।