paint-brush
रीयल-टाइम में ईवेंट-आधारित डेटा को प्रिडिक्टिव AI से कनेक्ट करनाद्वारा@datastax
560 रीडिंग
560 रीडिंग

रीयल-टाइम में ईवेंट-आधारित डेटा को प्रिडिक्टिव AI से कनेक्ट करना

द्वारा DataStax8m2023/06/12
Read on Terminal Reader

बहुत लंबा; पढ़ने के लिए

घटना-आधारित डेटा के लिए टाइमलाइन नामक एक नए सार के बारे में जानें - इस तरह के डेटा से डेटा निकालने का एक स्वाभाविक तरीका।
featured image - रीयल-टाइम में ईवेंट-आधारित डेटा को प्रिडिक्टिव AI से कनेक्ट करना
DataStax HackerNoon profile picture
0-item
1-item

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


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


घटना-आधारित डेटा की इन भारी मात्रा के साथ काम करना और घटनाओं से मूल्य निकालना और समय में उनके संदर्भ - आसपास होने वाली अन्य घटनाएं - अभी भी मुश्किल है। रीयल-टाइम या स्ट्रीमिंग तरीके से ऐसा करना अभी भी कठिन है। आपको अक्सर जटिल, निम्न-स्तरीय APIs का उपयोग करना चाहिए या SQL जैसी बहुत भिन्न समस्याओं को हल करने के लिए डिज़ाइन की गई उच्च-स्तरीय क्वेरी भाषा की सीमाओं के आसपास काम करना चाहिए।


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


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


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

समय का बोध कराना

प्रत्येक प्रकार की घटना को डेटा की एक अलग, अनियंत्रित तालिका - जिस तरह से SQL दुनिया को देखता है, के रूप में व्यवहार करते समय बड़ी संख्या में घटनाओं से निपटना मुश्किल होता है। यह समझना मुश्किल है कि कार्ला को खरीदारी करने के लिए किसने प्रेरित किया, या किस वजह से हारून संदेशों के माध्यम से अन्य उपयोगकर्ताओं के साथ जुड़ गया।


डेटा को व्यवस्थित करने से - समय और उपयोगकर्ता द्वारा - पैटर्न को स्पॉट करना बहुत आसान हो जाता है। हारून जीत के बाद संदेश भेजता है। कार्ला तब ख़रीदारी करती है जब लगातार घाटे से निराश होती है। हम यह भी देखते हैं कि शायद ब्रैड ने खेलना बंद कर दिया हो।

डेटा को व्यवस्थित करने से - समय और उपयोगकर्ता द्वारा - पैटर्न को स्पॉट करना बहुत आसान हो जाता है। हारून जीत के बाद संदेश भेजता है। कार्ला तब ख़रीदारी करती है जब लगातार घाटे से निराश होती है। हम यह भी देखते हैं कि शायद ब्रैड ने खेलना बंद कर दिया हो।


घटनाओं को स्वाभाविक तरीके से व्यवस्थित करके - समय और उपयोगकर्ता द्वारा - हम पैटर्न की पहचान करने में सक्षम थे। यह वही संगठन हमें घटनाओं से गणना किए गए फीचर मूल्यों को व्यक्त करने की अनुमति देता है और मशीन लर्निंग मॉडल को प्रशिक्षित करने और लागू करने के लिए या संकेत के भीतर उपयोग करने के लिए मूल्यों की गणना करने के लिए उपयोग करता है।

समय सारिणी

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


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


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

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


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


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

अस्थायी प्रश्नों के लिए समयसीमा का उपयोग करना

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

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


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


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

समयरेखा इनपुट करना

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

आउटपुट समयरेखा

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


उत्पादित पंक्तियों की संख्या को प्रभावित करते हुए, समयरेखा को डेटा की पंक्तियों में परिवर्तित करने के लिए कई विकल्प हैं:

  1. एक सीमा के भीतर परिवर्तनों का संपूर्ण इतिहास शामिल करें या किसी समय में मान का केवल एक स्नैपशॉट शामिल करें।
  2. आउटपुट में केवल एक निश्चित समय के बाद होने वाली घटनाओं (परिवर्तनों) को शामिल करें।
  3. आउटपुट में केवल एक विशिष्ट समय तक की घटनाओं (परिवर्तनों) को शामिल करें।


परिवर्तनों का एक पूरा इतिहास समय के साथ उपयोगकर्ता मूल्यों में पैटर्न को देखने या पहचानने में सहायता करता है। इसके विपरीत, एक विशिष्ट समय पर एक स्नैपशॉट ऑनलाइन डैशबोर्ड या समान उपयोगकर्ताओं को वर्गीकृत करने के लिए उपयोगी होता है।


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


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


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

इतिहास

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

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

स्नैपशॉट्स

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

स्नैपशॉट के रूप में कोई भी टाइमलाइन आउटपुट हो सकती है। असतत समयरेखा के लिए, स्नैपशॉट में उस समय होने वाली प्रत्येक घटना के लिए पंक्तियाँ शामिल होती हैं। निरंतर समयरेखा के लिए, स्नैपशॉट में प्रत्येक इकाई के लिए उस समय उस इकाई के मूल्य के साथ एक पंक्ति शामिल होती है।

निष्कर्ष

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

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


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


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


बेन चेम्बर्स और थेरेपॉन स्कोटिनियोटिस, डेटास्टैक्स द्वारा