इस पेज का अनुवाद Cloud Translation API से किया गया है.
Switch to English

TensorFlow Data Validation: Checking and analyzing your data

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

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

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

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

TensorFlow Data Validation

अवलोकन

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

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

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

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

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

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

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

विरल सुविधाएँ

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


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

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

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

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

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

योजनाओं का वातावरण

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

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

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

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

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

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

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

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

  • यदि एक स्कीमा पहले से ही ऑटो-जेनरेट किया गया है, तो इसका उपयोग किया जाता है।

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

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

ट्रेनिंग-सर्विंग स्क्यू डिटेक्शन

अवलोकन

प्रशिक्षण सेवारत तिरछा डिटेक्टर TensorFlow Data Validation के उप-घटक के रूप में चलता है और प्रशिक्षण और सेवा डेटा के बीच तिरछा का पता लगाता है।

तिरछा के प्रकार

विभिन्न उत्पादन पोस्ट-पोर्टम्स के आधार पर, हमने विभिन्न प्रकार के तिरछा को चार प्रमुख श्रेणियों में घटा दिया है। अगला हम इन श्रेणियों में से प्रत्येक पर चर्चा करते हैं और साथ ही उदाहरण के परिदृश्य प्रदान करते हैं जिसके तहत वे होते हैं।

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

    चूंकि डेटा जनरेशन ट्रेनिंग एक बल्क डेटा प्रोसेसिंग स्टेप है, जबकि (ऑनलाइन) सर्विंग डेटा जनरेशन आमतौर पर एक लेटेंसी सेंसिटिव स्टेप होता है, अलग-अलग कोड पाथ्स होना आम बात है जो ट्रेनिंग और डेटा जनरेट करते हैं। यह एक गलती है। इन दो कोडपैथ के बीच कोई भी विसंगति (या तो डेवलपर त्रुटि या असंगत बाइनरी रिलीज के कारण) स्कीमा तिरछा हो सकता है।

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

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

  2. सुविधा तिरछा तब होता है जब सुविधा मान मानती है कि एक मॉडल ट्रेन उस सुविधा मान से भिन्न होती है जिसे वह सेवा समय पर देखता है। यह कई कारणों से हो सकता है, जिनमें शामिल हैं:

    • यदि बाहरी डेटा स्रोत जो कुछ सुविधा मान प्रदान करता है, तो प्रशिक्षण और सेवारत समय के बीच संशोधित किया जाता है।

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

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

    ऐलिस में एक सतत मशीन लर्निंग पाइपलाइन है जहां आज के लिए सेवा डेटा लॉग किया गया है और अगले दिन के प्रशिक्षण डेटा को उत्पन्न करने के लिए उपयोग किया जाता है। अंतरिक्ष को बचाने के लिए, वह केवल सेवा समय पर वीडियो आईडी लॉग करने का फैसला करती है और प्रशिक्षण डेटा निर्माण के दौरान एक डेटा स्टोर से वीडियो गुणों को लाने के लिए।

    ऐसा करने में, वह अनजाने में एक तिरछा परिचय देती है जो विशेष रूप से नए अपलोड किए गए और वायरल वीडियो के लिए खतरनाक है, जिनके देखने का समय सेवारत और प्रशिक्षण समय (जैसा कि नीचे दिखाया गया है) के बीच काफी हद तक बदल सकता है।

    
     Serving Example           Training Example
     -------------------------  -------------------------
     features {                 features {
       feature {                  feature {
         key "vid"                  key "vid"
         value { int64_list {       value { int64_list {
           value 92392               value 92392
         } }                         } }
       }                          }
       feature {                  feature {
         key "views"               key "views"
         value { int_list {       value { bytes_list {
           value "10"                value "10000"  # skew
         } }                         } }
       }                          }
     }                          }
    

    यह एक प्रकार का फ़ीचर तिरछा है क्योंकि प्रशिक्षण डेटा विचारों की संख्या बढ़ाता है।

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

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

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

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

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

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

आपको क्यों परवाह करनी चाहिए?

Skew का पता लगाना कठिन है और कई ML पाइपलाइनों में प्रचलित है। ऐसी कई घटनाएं हुई हैं, जहाँ इससे प्रदर्शन में गिरावट और राजस्व की हानि हुई है।

वर्तमान में क्या समर्थित है?

वर्तमान में, TensorFlow Data Validation स्कीमा तिरछा, सुविधा तिरछा और वितरण तिरछा पता लगाने का समर्थन करता है।

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

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

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

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

फ़ीचर आँकड़े

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

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

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

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

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

असंतुलित डेटा का दृश्य

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

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

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

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

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

लाइन ग्राफ: समरूप डेटा का संचयी वितरण

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

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

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

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

खोए आँकड़े

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

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

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

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

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

जीरो-लेंथ फीचर वैल्यू लिस्ट वाले फ़ीचर के साथ डिस्प्ले ओवरव्यू डिस्प्ले

सुविधाओं के बीच स्केल में बड़े अंतर

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

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

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

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

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