हाइपरलॉगलॉग

From Vigyanwiki

हाइपरलॉगलॉग काउंट-डिस्टिंक्ट समस्या के लिए एक एल्गोरिदम है, जो मल्टीसेट में भिन्न-भिन्न तत्वों की संख्या का अनुमान लगाता है।[1] मल्टीसेट के भिन्न-भिन्न तत्वों की सटीक कार्डिनैलिटी की गणना के लिए कार्डिनैलिटी के अनुपात में मेमोरी की मात्रा की आवश्यकता होती है, जो बहुत बड़े डेटा सेट के लिए अव्यावहारिक है। हाइपरलॉगलॉग एल्गोरिदम जैसे संभाव्य कार्डिनैलिटी अनुमानक, इससे काफी कम मेमोरी का उपयोग करते हैं, किन्तु केवल कार्डिनैलिटी का अनुमान लगा सकते हैं। हाइपरलॉगलॉग एल्गोरिदम 1.5 केबी मेमोरी का उपयोग करके 2% की विशिष्ट शुद्धता (मानक त्रुटि) के साथ > 109 की कार्डिनैलिटी का अनुमान लगाने में सक्षम है।[1] हाइपरलॉगलॉग पहले के लॉगलॉग एल्गोरिदम का एक विस्तार है,[2] जो स्वयं 1984 फ्लैजोलेट-मार्टिन एल्गोरिदम से प्राप्त हुआ है।[3]


शब्दावली

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

एल्गोरिदम

हाइपरलॉगलॉग एल्गोरिदम का आधार यह अवलोकन है कि सेट में प्रत्येक संख्या के बाइनरी प्रतिनिधित्व में अग्रणी शून्य की अधिकतम संख्या की गणना करके समान रूप से वितरित यादृच्छिक संख्याओं के मल्टीसेट की कार्डिनैलिटी का अनुमान लगाया जा सकता है। यदि देखे गए अग्रणी शून्यों की अधिकतम संख्या n है, तो सेट में भिन्न-भिन्न तत्वों की संख्या का अनुमान 2n है।[1]

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

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


संचालन

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

हाइपरलॉगलॉग का डेटा सरणी में संग्रहीत है M का m काउंटर (या रजिस्टर) जिन्हें 0. ऐरे से आरंभ किया गया है M मल्टीसेट से प्रारंभ किया गया S को S का हाइपरलॉगलॉग स्केच कहा जाता है।

जोड़ें

ऐड ऑपरेशन में इनपुट डेटा के हैश की गणना शामिल है v हैश फ़ंक्शन के साथ h, प्रथम प्राप्त करना b बिट्स (कहां b है ), और संशोधित करने के लिए रजिस्टर का पता प्राप्त करने के लिए उनमें 1 जोड़ें। शेष बिट्स के साथ गणना करें जो सबसे बाईं ओर की स्थिति लौटाता है 1. रजिस्टर का नया मान रजिस्टर के वर्तमान मान और के बीच अधिकतम होगा .


गिनती

गणना एल्गोरिथ्म में हार्मोनिक माध्य की गणना शामिल है m रजिस्टर करता है, और अनुमान प्राप्त करने के लिए स्थिरांक का उपयोग करता है गिनती का:

अंतर्ज्ञान वह है n की अज्ञात कार्डिनैलिटी होना M, प्रत्येक उपसमुच्चय होगा तत्व. तब

 के करीब होना चाहिए . इन मात्राओं का हार्मोनिक माध्य 2 है  जो पास होना चाहिए . इस प्रकार,  होना चाहिए n लगभग।

अंत में, स्थिरांक में मौजूद व्यवस्थित गुणात्मक पूर्वाग्रह को ठीक करने के लिए पेश किया गया है हैश टकराव के कारण.

व्यावहारिक विचार

अटल गणना करना आसान नहीं है, और सूत्र के साथ इसका अनुमान लगाया जा सकता है[1]

चूँकि, हाइपरलॉगलॉग तकनीक सीमा से नीचे की छोटी कार्डिनैलिटी के लिए पक्षपाती है . मूल पेपर छोटी कार्डिनैलिटी के लिए अलग एल्गोरिदम का उपयोग करने का प्रस्ताव करता है जिसे लीनियर काउंटिंग के रूप में जाना जाता है।[5] ऐसे मामले में जहां ऊपर दिया गया अनुमान सीमा से कम है , वैकल्पिक गणना का उपयोग किया जा सकता है:

  1. होने देना रजिस्टरों की गिनती 0 के बराबर हो।
  2. अगर , मानक हाइपरलॉगलॉग अनुमानक का उपयोग करें ऊपर।
  3. अन्यथा, रैखिक गणना का उपयोग करें:

इसके अतिरिक्त, रजिस्टरों के आकार की सीमा तक पहुँचने वाली बहुत बड़ी कार्डिनैलिटी के लिए ( 32-बिट रजिस्टरों के लिए), कार्डिनैलिटी का अनुमान इससे लगाया जा सकता है:

निचली और ऊपरी सीमाओं के लिए उपरोक्त सुधारों के साथ, त्रुटि का अनुमान लगाया जा सकता है .

विलय

दो HILLs के लिए मर्ज ऑपरेशन () रजिस्टरों की प्रत्येक जोड़ी के लिए अधिकतम प्राप्त करना शामिल है


जटिलता

जटिलता का विश्लेषण करने के लिए, डेटा स्ट्रीमिंग नमूना[6] का उपयोग किया जाता है, जो प्राप्त करने के लिए आवश्यक स्थान का विश्लेषण करता है निश्चित सफलता संभावना के साथ सन्निकटन . HLL की सापेक्ष त्रुटि है और इसकी जरूरत है स्थान, कहाँ n सेट कार्डिनैलिटी है और m रजिस्टरों की संख्या है (आमतौर पर बाइट आकार से कम)।

ऐड ऑपरेशन हैश फ़ंक्शन के आउटपुट के आकार पर निर्भर करता है। चूँकि यह आकार निश्चित है, हम ऐड ऑपरेशन के चलने के समय पर विचार कर सकते हैं .

गिनती और मर्ज ऑपरेशन रजिस्टरों की संख्या पर निर्भर करते हैं m और इसकी सैद्धांतिक लागत है . कुछ कार्यान्वयन में (रेडिस)[7] रजिस्टरों की संख्या निश्चित की जाती है और लागत पर विचार किया जाता है दस्तावेज़ीकरण में.

HLL++

हाइपरलॉगलॉग++ एल्गोरिदम मेमोरी आवश्यकताओं को कम करने और कार्डिनलिटी की कुछ श्रेणियों में सटीकता बढ़ाने के लिए हाइपरलॉगलॉग एल्गोरिदम में कई सुधारों का प्रस्ताव करता है:[6]

  • मूल पेपर में प्रयुक्त 32 बिट्स के स्थान पर 64-बिट हैश फ़ंक्शन का उपयोग किया जाता है। यह बड़ी कार्डिनैलिटी के लिए हैश टकराव को कम करता है जिससे बड़ी रेंज के सुधार को हटाया जा सकता है।
  • रैखिक गिनती से एचएलएल गिनती पर स्विच करते समय छोटी कार्डिनैलिटी के लिए कुछ पूर्वाग्रह पाए जाते हैं। समस्या को कम करने के लिए अनुभवजन्य पूर्वाग्रह सुधार प्रस्तावित है।
  • छोटे कार्डिनैलिटी के लिए मेमोरी आवश्यकताओं को कम करने के लिए रजिस्टरों का विरल प्रतिनिधित्व प्रस्तावित है, जिसे बाद में कार्डिनैलिटी बढ़ने पर घने प्रतिनिधित्व में बदला जा सकता है।

स्ट्रीमिंग एचएलएल

जब डेटा ही स्ट्रीम में आता है, तो ऐतिहासिक व्युत्क्रम संभावना या मार्टिंगेल अनुमानक[8][9] एचएलएल स्केच की सटीकता में उल्लेखनीय रूप से सुधार होता है और किसी दिए गए त्रुटि स्तर को प्राप्त करने के लिए 36% कम मेमोरी का उपयोग होता है। यह अनुमानक ही स्ट्रीम पर किसी भी डुप्लिकेट असंवेदनशील अनुमानित विशिष्ट गिनती स्केच के लिए संभवतः इष्टतम है।

एकल स्ट्रीम परिदृश्य एचएलएल स्केच निर्माण में भी बदलाव की ओर ले जाता है। एचएलएल-टेलकट+ मूल एचएलएल स्केच की तुलना में 45% कम मेमोरी का उपयोग करता है, किन्तु डेटा प्रविष्टि क्रम पर निर्भर होने और स्केच को मर्ज करने में सक्षम नहीं होने की कीमत पर।[10]


अग्रिम पठन

  • "Probabilistic Data Structures for Web Analytics and Data Mining". highlyscalable.wordpress.com. May 2012. Retrieved 2014-04-19.
  • "New cardinality estimation algorithms for HyperLogLog sketches" (PDF). Retrieved 2016-10-29.


संदर्भ

  1. 1.0 1.1 1.2 1.3 1.4 Flajolet, Philippe; Fusy, Éric; Gandouet, Olivier; Meunier, Frédéric (2007). "Hyperloglog: The analysis of a near-optimal cardinality estimation algorithm" (PDF). Discrete Mathematics and Theoretical Computer Science Proceedings. Nancy, France. AH: 137–156. CiteSeerX 10.1.1.76.4286. Retrieved 2016-12-11.
  2. Durand, M.; Flajolet, P. (2003). "बड़ी कार्डिनैलिटी की लॉगलॉग गणना।" (PDF). In G. Di Battista and U. Zwick (ed.). Lecture Notes in Computer Science. Annual European Symposium on Algorithms (ESA03). Vol. 2832. Springer. pp. 605–617.
  3. Flajolet, Philippe; Martin, G. Nigel (1985). "डेटा बेस अनुप्रयोगों के लिए संभाव्य गणना एल्गोरिदम" (PDF). Journal of Computer and System Sciences. 31 (2): 182–209. doi:10.1016/0022-0000(85)90041-8.
  4. S Heule, M Nunkesser, A Hall (2013). "HyperLogLog in Practice: Algorithmic Engineering of a State of The Art Cardinality Estimation Algorithm" (PDF). sec 4.{{cite web}}: CS1 maint: uses authors parameter (link)
  5. Whang, Kyu-Young; Vander-Zanden, Brad T; Taylor, Howard M (1990). "डेटाबेस अनुप्रयोगों के लिए एक रैखिक-समय संभाव्य गणना एल्गोरिथ्म". ACM Transactions on Database Systems. 15 (2): 208–229. doi:10.1145/78922.78925. S2CID 2939101.
  6. 6.0 6.1 "HyperLogLog in Practice: Algorithmic Engineering of a State of The Art Cardinality Estimation Algorithm". Retrieved 2014-04-19.
  7. "PFCOUNT – Redis".
  8. Cohen, E. (March 2015). "All-distances sketches, revisited: HIP estimators for massive graphs analysis". IEEE Transactions on Knowledge and Data Engineering. 27 (9): 2320–2334. arXiv:1306.3284. doi:10.1109/TKDE.2015.2411606.
  9. Ting, D. (August 2014). "Streamed approximate counting of distinct elements: beating optimal batch methods". Proceedings of the 20th ACM SIGKDD International Conference on Knowledge Discovery and Data Mining (KDD '14): 442–451. doi:10.1145/2623330.2623669. ISBN 9781450329569. S2CID 13179875.
  10. Xiao, Q.; Zhou, Y.; Chen, S. (May 2017). "Better with fewer bits: Improving the performance of cardinality estimation of large data streams". IEEE INFOCOM 2017 - IEEE Conference on Computer Communications. pp. 1–9. doi:10.1109/INFOCOM.2017.8057088. ISBN 978-1-5090-5336-0. S2CID 27159273.