प्रसंग:
मेरे पास वेबसाइटों का एक समूह है जहां मैं दैनिक आधार पर विज़िट की संख्या रिकॉर्ड करता हूं:
W0 = { 30, 34, 28, 30, 16, 13, 8, 4, 0, 5, 2, 2, 1, 2, .. }
W1 = { 1, 3, 21, 12, 10, 20, 15, 43, 22, 25, .. }
W2 = { 0, 0, 4, 2, 2, 5, 3, 30, 50, 30, 30, 25, 40, .. }
...
Wn
सामान्य प्रश्न:
- मैं यह कैसे निर्धारित करूं कि कौन सी साइटें सबसे अधिक सक्रिय हैं?
इससे मेरा मतलब है कि पिछले कुछ दिनों के दौरान यात्राओं में अधिक वृद्धि या अचानक वृद्धि प्राप्त करना। उदाहरण के प्रयोजनों के लिए, W0 से ऊपर के छोटे उदाहरण में शुरू में लोकप्रिय होगा, लेकिन परित्याग दिखाना शुरू कर रहा है, W1 एक स्थिर लोकप्रियता (कुछ अलग-थलग चोटी के साथ) दिखा रहा है, और एक शांत शुरुआत के बाद W3 एक महत्वपूर्ण वृद्धि है।
प्रारंभिक विचार:
मुझे यह सूत्र SO पर मिला जहां एक सरल सूत्र वर्णित है:
// pageviews for most recent day
y2 = pageviews[-1]
// pageviews for previous day
y1 = pageviews[-2]
// Simple baseline trend algorithm
slope = y2 - y1
trend = slope * log(1.0 +int(total_pageviews))
error = 1.0/sqrt(int(total_pageviews))
return trend, error
यह काफी अच्छा और आसान लग रहा है, लेकिन मुझे इससे समस्या है।
गणना ढलानों पर आधारित है। यह ठीक है और उन विशेषताओं में से एक है जिनमें मुझे दिलचस्पी है, लेकिन IMHO में गैर-मोनोटोनिक श्रृंखला के लिए समस्याएं हैं। कल्पना करें कि कुछ दिनों के दौरान हमारे पास लगातार दौरे आते हैं (इसलिए ढलान = 0), फिर उपरोक्त प्रवृत्ति शून्य होगी।
प्रशन:
- मैं दोनों मामलों (मोनोटोनिक वृद्धि / कमी) और बड़ी संख्या में हिट कैसे संभाल सकता हूं?
- क्या मुझे अलग-अलग फॉर्मूलों का इस्तेमाल करना चाहिए?