मेरे पास एक जटिल प्रश्न है डेटासेट खोजने के लिए उपयोग किया जाता है ढूँढ़ने के लिए । प्रत्येक क्वेरी औसत समय लेती है तो रैखिक खोज में समग्र समय है । मैं एक क्वेरी को सरल उप-प्रश्न q_i में तोड़ सकता हूं और ढूंढ सकता हूं और कहाँ । प्रत्येक उपशम गणना करने के लिए बहुत तेज़ है, इसलिए कुल मिलाकर यह तेज़ है और फिर उपयोग करें ढूँढ़ने के लिए ।
से प्रत्येक बहुत सारे । विभिन्न के बीच ओवरलैपऊंचा है। मैं निर्णय-वृक्ष जैसे निश्चित प्रश्नों के सेट को निर्धारित करने का एक तरीका खोज रहा हूं जो खोज प्रश्नों के एक बड़े नमूने के आधार पर H_exact को खोजने के लिए औसत समय को कम करता है।
इसे और अधिक ठोस बनाने के लिए, मान लीजिए कि डेटा सेट में दुनिया के 7 बिलियन लोग शामिल हैं, और जटिल प्रश्न हैं "बी के साथ शुरू होने वाले शहर में 5 वें और लेक्सिंगटन के कोने पर लाल घर में रहने वाली महिला"।
स्पष्ट समाधान यह है कि दुनिया के प्रत्येक व्यक्ति की जांच की जाए और देखें कि कौन क्वेरी से मेल खाता है। ऐसे एक से अधिक व्यक्ति हो सकते हैं। इस विधि में लंबा समय लगता है।
मैं इस प्रश्न की पूर्व-गणना कर सकता था, जिस स्थिति में यह बहुत तेज़ होगा .. लेकिन केवल इस प्रश्न के लिए। हालाँकि, मुझे पता है कि अन्य प्रश्न उस महिला के लिए हैं जो एक ही कोने पर नीले मकान में रहती हैं, जो आदमी एक ही कोने पर रहता है, एक ही सवाल लेकिन सी के साथ शुरू होने वाले शहर में, या कुछ बिल्कुल अलग, जैसे ' स्वीडन का राजा। '
इसके बजाय, मैं जटिल प्रश्न को आसान लेकिन अधिक सामान्य सेट के सेट में तोड़ सकता हूं। उदाहरण के लिए, उपरोक्त सभी प्रश्नों में एक लिंग-भूमिका आधारित क्वेरी है, इसलिए मैं दुनिया के सभी लोगों के सेट को रोक सकता हूं जो खुद को 'महिला' मानते हैं। यह उप-क्वेरी अनिवार्य रूप से समय नहीं लेती है, इसलिए कुल मिलाकर खोज समय लगभग 1/2 घट जाता है। (यह मानते हुए कि अन्य ज्ञान से हम जानते हैं कि एक स्वीडिश "राजा" एक "महिला" नहीं हो सकती है। हत्शेपसुत एक मिस्र की महिला थी जो राजा थी।)
हालांकि, कभी-कभी ऐसे प्रश्न होते हैं जो लिंग-आधारित नहीं होते हैं, जैसे "वह व्यक्ति जो ए के साथ एक शहर में एक लाल घर में 8 वीं सड़क पर रहता है।" मैं देख सकता हूं कि उपनगर "लाल घर में रहता है" आम है, और उन सभी लोगों की सूची की पूर्व-गणना करें जो लाल घर में रहते हैं।
यह मुझे एक निर्णय वृक्ष देता है। सामान्य स्थिति में, निर्णय वृक्ष की प्रत्येक शाखा में अलग-अलग प्रश्न होते हैं, और निर्णय पेड़ के लिए इष्टतम शब्दों का चयन करने के तरीके अच्छी तरह से ज्ञात हैं। हालाँकि, मैं एक मौजूदा प्रणाली का निर्माण कर रहा हूँ जिसके लिए आवश्यक है कि सभी शाखाओं को एक ही प्रश्न पूछना चाहिए।
यहां एक संभावित अंतिम निर्णय सेट का उदाहरण दिया गया है: प्रश्न 1 'क्या व्यक्ति एक महिला है?', प्रश्न 2 है 'क्या व्यक्ति लाल घर में रहता है?', प्रश्न 3 'क्या वह व्यक्ति शहर में रहता है जिसके साथ शुरू होता है? A या व्यक्ति B से शुरू होने वाले शहर में रहता है? ', और प्रश्न 4 है' क्या वह व्यक्ति एक गिने हुए मार्ग पर रहता है? '।
जब एक प्रश्न में आता है, मैं देख रहा हूँ अगर इसकी पूर्व-संगणित प्रश्नों में से किसी से मेल खाएं मैंने निर्धारित किया है। यदि ऐसा है, तो मुझे उन उत्तरों का प्रतिच्छेदन मिलता है, और प्रश्न पूछते हैंउस चौराहे पर उपसमुच्चय। उदाहरण के लिए, यदि प्रश्न "ऐसे लोग हैं जो एक द्वीप पर एक लाल घर में रहते हैं" तो पाते हैं कि "व्यक्ति लाल घर में रहता है" पहले से ही प्रचलित है, इसलिए यह उन लोगों के सबसेट को खोजने का मामला है जो एक द्वीप पर रहते हैं।
मैं कई लोगों के एक सेट को देखकर एक लागत मॉडल प्राप्त कर सकता हूं और संबंधित के आकार को देखने के लिए जाँच करें । मैं औसत आकार को कम करना चाहता हूं।
सवाल यह है कि मैं कैसे संभव के चयन का अनुकूलन करता हूं इस निश्चित निर्णय पेड़ बनाने के लिए मैंने एक जीए की कोशिश की लेकिन यह अभिसरण करने के लिए धीमा था। शायद इसलिए कि मेरे फीचर स्पेस में कुछ मिलियन संभव हैं। मैं एक लालची विधि के साथ आया हूं, लेकिन मैं परिणाम से खुश नहीं हूं। यह बहुत धीमा है, और मुझे लगता है कि मैं गलत चीज का अनुकूलन कर रहा हूं।
विचारों के लिए मुझे किस मौजूदा शोध को देखना चाहिए?