औसत खोज प्रदर्शन को कम करने के लिए फिक्स्ड-लेंथ-ट्री जैसी सुविधा का चयन


9

मेरे पास एक जटिल प्रश्न है Q डेटासेट खोजने के लिए उपयोग किया जाता है S ढूँढ़ने के लिए Hexact={sSwhere Q(s) is True}। प्रत्येक क्वेरी औसत समय लेती हैt तो रैखिक खोज में समग्र समय है t|S|। मैं एक क्वेरी को सरल उप-प्रश्न q_i में तोड़ सकता हूं और ढूंढ सकता हूंHapprox={sSqj(s)is True} और कहाँ HexactHapprox। प्रत्येक उपशमqi गणना करने के लिए बहुत तेज़ है, इसलिए कुल मिलाकर यह तेज़ है Happrox और फिर उपयोग करें Q ढूँढ़ने के लिए Hexact

से प्रत्येक Q बहुत सारे qi। विभिन्न के बीच ओवरलैपQऊंचा है। मैं निर्णय-वृक्ष जैसे निश्चित प्रश्नों के सेट को निर्धारित करने का एक तरीका खोज रहा हूंqj जो खोज प्रश्नों के एक बड़े नमूने के आधार पर H_exact को खोजने के लिए औसत समय को कम करता है।

इसे और अधिक ठोस बनाने के लिए, मान लीजिए कि डेटा सेट में दुनिया के 7 बिलियन लोग शामिल हैं, और जटिल प्रश्न हैं "बी के साथ शुरू होने वाले शहर में 5 वें और लेक्सिंगटन के कोने पर लाल घर में रहने वाली महिला"।

स्पष्ट समाधान यह है कि दुनिया के प्रत्येक व्यक्ति की जांच की जाए और देखें कि कौन क्वेरी से मेल खाता है। ऐसे एक से अधिक व्यक्ति हो सकते हैं। इस विधि में लंबा समय लगता है।

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

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

हालांकि, कभी-कभी ऐसे प्रश्न होते हैं जो लिंग-आधारित नहीं होते हैं, जैसे "वह व्यक्ति जो ए के साथ एक शहर में एक लाल घर में 8 वीं सड़क पर रहता है।" मैं देख सकता हूं कि उपनगर "लाल घर में रहता है" आम है, और उन सभी लोगों की सूची की पूर्व-गणना करें जो लाल घर में रहते हैं।

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

यहां एक संभावित अंतिम निर्णय सेट का उदाहरण दिया गया है: प्रश्न 1 'क्या व्यक्ति एक महिला है?', प्रश्न 2 है 'क्या व्यक्ति लाल घर में रहता है?', प्रश्न 3 'क्या वह व्यक्ति शहर में रहता है जिसके साथ शुरू होता है? A या व्यक्ति B से शुरू होने वाले शहर में रहता है? ', और प्रश्न 4 है' क्या वह व्यक्ति एक गिने हुए मार्ग पर रहता है? '।

जब एक प्रश्न Q में आता है, मैं देख रहा हूँ अगर इसकी qi पूर्व-संगणित प्रश्नों में से किसी से मेल खाएं qjमैंने निर्धारित किया है। यदि ऐसा है, तो मुझे उन उत्तरों का प्रतिच्छेदन मिलता है, और प्रश्न पूछते हैंQउस चौराहे पर उपसमुच्चय। उदाहरण के लिए, यदि प्रश्न "ऐसे लोग हैं जो एक द्वीप पर एक लाल घर में रहते हैं" तो पाते हैं कि "व्यक्ति लाल घर में रहता है" पहले से ही प्रचलित है, इसलिए यह उन लोगों के सबसेट को खोजने का मामला है जो एक द्वीप पर रहते हैं।

मैं कई लोगों के एक सेट को देखकर एक लागत मॉडल प्राप्त कर सकता हूं Q और संबंधित के आकार को देखने के लिए जाँच करें Happrox। मैं औसत आकार को कम करना चाहता हूंHapprox

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

विचारों के लिए मुझे किस मौजूदा शोध को देखना चाहिए?


क्या आपका डेटा निर्धारित है-क्या आप और उदाहरण जोड़ने जा रहे हैं? यदि नहीं - तो बेहतर है कि सबसे अधिक जानकारी वाली एंट्रॉपी के साथ सबक्वेरी से शुरू करके डेजिंग ट्री बनाने की कोशिश करें । आप कुछ न्यूनतम एन्ट्रापी भी चुन सकते हैं, जहां ट्री बेस्ड डिसेक्शन को रोकने के लिए और एस के साथ सर्च करें। S | .t समय जब S काफी छोटा हो।
एंटोन

जवाबों:


1

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

मैंने जिस विधि का उपयोग किया है वह रासायनिक संरचना खोज के लिए एक कुशल डिजाइन से आता है। I. द स्क्रीन ', अल्फ्रेड फेल्डमैन और लुई होड्स, जे। केम। Inf। कंप्यूटर। विज्ञान।, 1975, 15 (3), पीपी 147-152।

गैर-पदानुक्रमित समाधान सूचना घनत्व को देखना है। प्रत्येक विवरणक को सौंपा जाएगाsi=log2(fi) बिट्स कहाँ fi डेटा सेट में आवृत्ति है (0<f_i <= 1.0)। बिट्स की कुल संख्या की गणना करेंD (निर्णय पेड़ का आकार) का उपयोग कर D=(sifi)/Mc कहाँ पे Mc मूवर्स संपीड़न कारक 0.69 (से) है loge2)। एक बार जब आप उपयोग करने के लिए बिट्स की कुल संख्या निर्धारित कर लेते हैं, तो चयन करेंsi बिट असाइनमेंट के लिए प्रत्येक डिस्क्रिप्टर के लिए यादृच्छिक रूप से बिट्स।

फेल्डमैन और होड्स की जगह से पदानुक्रमित समाधान si=log2(fi)ऐसे डिस्क्रिप्टर के लिए जो अन्य डिस्क्रिप्टर के सबसेट हैं। उस मामले में, का उपयोग करेंsi=log2(fi/gi) कहाँ पे giकम से कम लगातार अभिभावक की आवृत्ति है। इसके अलावा, बिट असाइनमेंट करते समय बिट्स का चयन न करें जो कि माता-पिता के बिट असाइनमेंट द्वारा भी उपयोग किए जाते हैं।

अभी भी एक समस्या है कि कैसे सही विवरणों के साथ आना है, लेकिन यह डोमेन विशिष्ट होगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.