2011-09-30 7 views
11

असल में, मेरे पास एक बड़ी सूची (एक साल का डेटा है) कई बार एक अलग घटना हुई (मेरे वर्तमान प्रोजेक्ट के लिए, किसी ने कुछ मुद्रित करने की सूची)। इस सूची के आधार पर, मैं किसी ऐसे प्रकार का एक सांख्यिकीय मॉडल बनाना चाहता हूं जो अगले कार्यक्रम (अगले प्रिंट नौकरी) के लिए पिछले सभी घटनाओं के समय के सबसे संभावित समय की भविष्यवाणी करेगा।पिछली घटनाओं के आधार पर अगली घटना कब होती है, इसकी भविष्यवाणी कैसे करें?

मैंने पहले से ही this पढ़ा है, लेकिन प्रतिक्रियाएं मेरी परियोजना के लिए जो कुछ भी मेरे मन में हैं, उससे बिल्कुल मदद नहीं करती हैं। मैंने कुछ अतिरिक्त शोध किया और पाया कि Hidden Markov Model मुझे ऐसा करने की इजाजत देता है, लेकिन मुझे समय की एक सूची का उपयोग करके छुपे हुए मार्कोव मॉडल को उत्पन्न करने के तरीके पर एक लिंक नहीं मिल रहा है। मैंने यह भी पाया कि सूची में Kalman filter का उपयोग करना उपयोगी हो सकता है लेकिन मूल रूप से, मैं इसके बारे में कुछ और जानकारी प्राप्त करना चाहता हूं जो वास्तव में उनका उपयोग करता है और कुछ कोशिश करने से पहले और इसकी काम करने की उम्मीद से पहले उनकी सीमाओं और आवश्यकताओं को जानता है।

धन्यवाद एक गुच्छा!

EDIT: इसलिए टिप्पणियों में अमित के सुझाव से, मैंने इसे Statistics StackExchange, CrossValidated पर भी पोस्ट किया। यदि आपको पता है कि मुझे क्या करना चाहिए, तो कृपया यहां या वहां

+0

हो सकता है कि आप 0s और 1s की एक सूची उत्पन्न कर सकें, जहां घटनाएं होती हैं, अन्यथा शून्य, पैटर्न को पहचानने के लिए एक तंत्रिका जाल को प्रशिक्षित करें। असल में यदि आपकी सूची 1000 घटनाएं लंबी है, और आप अगले 100 की भविष्यवाणी करना चाहते हैं, तो 1000-> 100 तंत्रिका नेट का उपयोग करें। –

+2

आपको शायद [सांख्यिकी स्टैकएक्सचेंज] में बेहतर उत्तर मिलेगा (http://stats.stackexchange.com/) – amit

+0

उस बारे में नहीं पता था! मुझे लगता है कि मुझे इसे वहां पर दोबारा पोस्ट करना चाहिए? – ankushg

उत्तर

6

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

जो शब्द दिमाग में आता है वह density estimation है। विशेष रूप से kernel density estimation। आप सरल कताई द्वारा कर्नेल घनत्व अनुमान के कुछ प्रभाव प्राप्त कर सकते हैं (उदाहरण के लिए प्रत्येक तिमाही घंटे या घंटे जैसे समय अंतराल में संख्या घटनाओं की गणना करें।) कर्नेल घनत्व अनुमान में सरल कताई की तुलना में कुछ अच्छे सांख्यिकीय गुण हैं। (उत्पादित डेटा अक्सर 'चिकना' होता है।)

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

बेशक, अधिक डेटा स्रोतों के साथ समस्या यह है कि डेटा एकत्र करने वाले सिस्टम को स्थापित करने के लिए अतिरिक्त लेगवर्क है।

ईमानदारी से, मैं इसे एक डोमेन-विशिष्ट समस्या मानता हूं और दो दृष्टिकोण लेता हूं: समय-स्वतंत्र पैटर्न ढूंढें, और समय-निर्भर पैटर्न ढूंढें।

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

यदि आप अधिक परिष्कृत होना चाहते हैं, तो इस तरह के अंतराल का पता लगाने के लिए एक तरीका खोजें। (संभावना है कि डेटा इतनी जबरदस्त नहीं होगी कि आप इसे बलपूर्वक बल दे सकते हैं।)

एक उदाहरण समय-स्वतंत्र पैटर्न यह है कि प्रत्येक बार माइक इन अकाउंटिंग सूची चालान को प्रिंट करता है, वह जॉनथन के पास जाता है जो कुछ घंटे बाद पूर्ण चालान रिपोर्ट के बजाय बड़े बैच को प्रिंट करता है। इस तरह की चीज का पता लगाना मुश्किल है क्योंकि यह अधिक मुफ्त रूप है। मैं समय के विभिन्न अंतराल को देखने की सलाह देता हूं (उदाहरण के लिए 30 सेकंड, 40 सेकंड, 50 सेकंड, 1 मिनट, 1.2 मिनट, 1.5 मिनट, 1.7 मिनट, 2 मिनट, 3 मिनट, .... 1 घंटा, 2 घंटे, 3 घंटे, ....) और एक वेक्टर बनाने के लिए उन्हें एक अच्छे तरीके से (जैसे Lanczos resampling) के माध्यम से subsampling। फिर "रोचक" पैटर्न को वर्गीकृत करने के लिए vector-quantization शैली एल्गोरिदम का उपयोग करें। आपको श्रेणियों की निश्चितता से निपटने के तरीके के बारे में सावधानी से सोचने की आवश्यकता होगी, हालांकि - यदि आपकी परिणामी श्रेणी में बहुत कम डेटा है, तो शायद यह विश्वसनीय नहीं है। (कुछ वेक्टर क्वांटिअलाइजेशन एल्गोरिदम दूसरों के मुकाबले बेहतर होते हैं।)

फिर, भविष्य में कुछ प्रिंट करने की संभावना के रूप में भविष्यवाणी करने के लिए, सबसे हालिया गतिविधि अंतराल देखें (30 सेकंड, 40 सेकंड, 50 सेकंड , 1 मिनट, और अन्य सभी अंतराल) वेक्टर क्वांटिज़ेशन के माध्यम से और अनुमानों के भारित औसत बनाने के लिए परिणामों को उनके निश्चितता के आधार पर वजन बढ़ाते हैं।

अंतिम अनुमान बनाने के लिए आप समय-निर्भर और समय-स्वतंत्र आउटपुट की निश्चितता को मापने के लिए एक अच्छा तरीका खोजना चाहेंगे।

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

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

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

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

शुभकामनाएँ!

0

एक मार्कव चेन के बारे में सोचें जो वर्टेक्स के साथ एक ग्राफ या वजन के साथ एक दूसरे से जुड़ता है। इस ग्राफ के चारों ओर घूमने से आपके द्वारा यात्रा किए जाने वाले वजन या दूरी का योग खा जाएगा। टेक्स्ट पीढ़ी के साथ यहां एक उदाहरण दिया गया है: http://phpir.com/text-generation

1

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

लेकिन क्या कोई पैटर्न है जब कोई उपयोगकर्ता अगली चीज़ प्रिंट कर सकता है? यही है, क्या आप नौकरियों के बीच एक नियमित पैटर्न देखते हैं? यदि ऐसा है, तो एक मार्कोव मॉडल काम करेगा। यदि नहीं, तो मार्कोव मॉडल एक यादृच्छिक अनुमान होगा।

इसे मॉडल करने के तरीके में, वर्णमाला में अक्षरों के बीच विभिन्न समय अवधि के बारे में सोचें।

A - 1 to 2 minutes 
B - 2 to 5 minutes 
C - 5 to 10 minutes 
etc. 

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

+0

मॉडल की मुख्य धारणा यह है कि समय प्रिंट नौकरियों में एक पैटर्न होना चाहिए। क्या कोई तरीका है कि आप मार्कोव मॉडल के लिए पैरामीटर जेनरेट करने के बारे में जानते हैं, बस समय की सूची से? – ankushg

+0

आप ऊपर क्यों पहुंचे और मुझे नहीं? एक मार्कोव मॉडल शीर्षक एक यादृच्छिक अनुमान बहुत अस्पष्ट और अस्पष्ट है। – Bytemain

+0

@ यूएनके: मैंने अपनी प्रतिक्रिया में दिखाया कि समय की सूची से मार्कोव मॉडल कैसे बनाया जाए: अंतराल * समय के बीच अक्षरों को परिवर्तित करें। विचार यह है कि वे अंतराल एक प्रकार का वर्णमाला बनाते हैं - वास्तव में आप जिस तरह की चीज मार्कोव मॉडल के लिए चाहते हैं।यदि आप पूर्णकालिक भविष्यवाणी करना चाहते हैं कि प्रिंट नौकरियां चलाने की संभावना है, तो आपकी सबसे अच्छी शर्त मार्कोव मॉडल से गुजरना है और किसी विशेष समय पर चलने वाले प्रिंट नौकरी की संभावना की गणना करने के लिए कुछ प्रकार के क्लस्टरिंग एल्गोरिदम का उपयोग करना है। Http://en.wikipedia.org/wiki/Cluster_analysis देखें। –

1

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

आसन्न घटनाओं के बीच (कहने) समय के आधार पर सबसे कच्ची सांख्यिकीय मॉडलिंग तकनीकों को इन अंतर्निहित प्रभावों को कैप्चर करने में कठिनाई होगी।

मैं उन ज्ञात घटनाओं (सप्ताह का दिन इत्यादि) के लिए एक सांख्यिकीय मॉडल तैयार करता हूं, और भविष्य की घटनाओं की भविष्यवाणी करने के लिए इसका उपयोग करता हूं।

+0

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

0

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

ऐसा लगता है कि आप एक अंतर्निहित मॉडल नहीं है, और एक के लिए चारों ओर मछली पकड़ने: टेप उपायों 8 ^)

आप एक कील मिल गया है, और बाहर की कोशिश कर रहा फ़ाइलें, screwdrivers टूलबॉक्स के माध्यम से जा रहे हैं, और

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

0

मुझे लगता है कि अनुमानित तंत्रिका नेटवर्क इस कार्य के लिए एक अच्छा दृष्टिकोण होगा। http://en.wikipedia.org/wiki/Predictive_analytics#Neural_networks

इस विधि का उपयोग f.x. की भविष्यवाणी के लिए भी किया जाता है। मौसम पूर्वानुमान, स्टॉक चिह्नित, सूर्य धब्बे। यहां एक ट्यूटोरियल है यदि आप यह जानना चाहते हैं कि यह कैसे काम करता है। http://www.obitko.com/tutorials/neural-network-prediction/