Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Ruby

सांख्यिकीय माध्य और पर्सेंटाइल को समझना: एक व्यावहारिक गाइड

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

माध्य

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

रूबी में, यह वही है जो माध्य प्रतिक्रिया समय की गणना जैसा दिखेगा:

def mean(array) (array.sum.to_f / array.length).round(2) end durations = [1,2,3,4,5,6,7,8,9,0] mean(durations) #=> 4.5

नोट: उदाहरण में, विभाजन करते समय अधिक सटीक परिणाम के लिए, हम कुल अवधि मान को Float में कास्ट करते हैं। अन्यथा, रूबी निकटतम पूर्णांक तक राउंड डाउन कर देगा, 4.5 के बजाय 4 लौटाएगा।

माध्यिका

एक और उपयोगी आंकड़ा माध्यिका है। हालांकि यह समान लगता है, मूल्यों के संग्रह के माध्य और माध्यिका में अंतर होता है।

माध्यिका वह मान है जो एक सेट के ऊपरी आधे को निचले आधे से अलग करता है।

विषम संख्या में मूल्यों वाले डेटासेट के लिए, आप पहले मूल्यों को सॉर्ट करके, फिर मध्य संख्या का चयन करके माध्यिका प्राप्त करते हैं। सम संख्या में मूल्यों वाले सेट के लिए, उन्हें सॉर्ट करने के बाद, माध्यिका दो मध्य संख्याओं का माध्य होगी।

def median(array) sorted_array = array.sort length = sorted_array.length if length.odd? # विषम सरणियों के लिए मध्य संख्या sorted_array[length / 2] else # दो मध्य संख्याओं का माध्य first_value = sorted_array[length / 2] second_value = sorted_array[length / 2 - 1] (first_value + second_value) / 2.to_f end end # सम सरणी durations = [1,2,3,4,5,6,7,8,9,0] median(durations) #=> 4.5 # विषम सरणी durations = [1,1,2,3,4,5,6,7,8,9,0] median(durations) #=> 4

यह आंकड़ा यह देखने का एक अच्छा तरीका है कि क्या डेटा में एक बड़ा तिरछापन या लंबी पूंछ है।

durations = [1,2,3,4,5,2000] median(durations) #=> 3.5 mean(durations) #=> 335.83

उपरोक्त अवधियों के लिए माध्य 335.83 होगा क्योंकि 2000ms के एकल आउटलायर के कारण। माध्यिका, जो केवल 3.5 है, इंगित करती है कि एक तिरछापन है।

डेटासेट के माध्य और माध्यिका दोनों की गणना करके, आप यह पता लगा सकते हैं कि क्या कोई बड़े आउटलायर या लंबी पूंछ हैं।

माध्य के साथ समस्या

हालांकि माध्य और माध्यिका प्रदर्शन के अच्छे संकेतक हैं, वे पूरी कहानी नहीं बताते। यदि आप एक वेबपेज को दस बार अनुरोध करते हैं, तो माध्य बहुत कम हो सकता है, लेकिन एक या अधिक अनुरोधों को पूरा होने में बहुत लंबा समय लग सकता है।

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

उदाहरण के लिए, निम्नलिखित अवधि सेट दिया गया है जहां 10 ग्राहक 100 मिलीसेकंड और 1 सेकंड के बीच की अवधि के साथ एक पेज का अनुरोध करते हैं।

[100,100,100,100,100,100,100,100,100,1_000]

इसके परिणामस्वरूप केवल 190ms का माध्य होगा जबकि एक उपयोगकर्ता को 1 सेकंड प्रतिक्रिया समय का बहुत बुरा अनुभव था। जब केवल माध्य को ट्रैक किया जाता है, तो यह सोचना आसान है कि आपकी वेबसाइट का प्रदर्शन शानदार है, जबकि वास्तव में हर बार एक उपयोगकर्ता का भयानक अनुभव होता है।

उपरोक्त उदाहरण केवल 10 अनुरोधों के लिए है, लेकिन कल्पना करें कि यदि आपके पास प्रति दिन एक हजार अनुरोध थे, तो इसका मतलब उन उपयोगकर्ताओं में से सौ का भयानक अनुभव होगा।

पर्सेंटाइल्स

मूल्यों के वितरण का बेहतर विचार देने के लिए, हम पर्सेंटाइल्स का उपयोग करते हैं। पर्सेंटाइल्स माध्यिका के समान हैं - एक संख्या जो डेटासेट में एक बिंदु को दर्शाती है जहां सेट का आधा संख्या से नीचे है और आधा ऊपर। पर्सेंटाइल्स इस अर्थ में समान हैं कि 20वां पर्सेंटाइल का अर्थ है कि डेटासेट में 20% संख्याएं उस संख्या से नीचे हैं।

निम्नलिखित (सॉर्टेड) सेट दिया गया है:

[100,100,200,200,300,300,400,400,500,5_000]

यदि हम 20वें पर्सेंटाइल को जानना चाहते हैं, तो हम इसे निम्न तरीके से गणना कर सकते हैं: सेट में 10 मूल्य हैं। वांछित मूल्य स्थिति 1 (20.0 / 100 * 10 - 1) पर है क्योंकि हमारे सरणी शून्य से शुरू होती हैं। चूंकि इस सरणी में सम संख्या में आइटम हैं, हमें इंडेक्स (2) और इंडेक्स + 1 (3) के बीच माध्य की गणना करनी होगी। इसके परिणामस्वरूप 20वें पर्सेंटाइल के लिए 150 का मान होगा।

एक बहुत ही सरल रूबी कार्यान्वयन इस तरह दिखेगा:

def percentile(array, wanted_percentile) sorted_array = array.sort index = (wanted_percentile.to_f / 100) * sorted_array.length - 1 # जांचें कि इंडेक्स एक गोल संख्या नहीं है if index != index.to_i sorted_array.at(index.ceil) elsif sorted_array.length.even? first_value = sorted_array.at(index) second_value = sorted_array.at(index + 1) (first_value + second_value) / 2 else sorted_array.at(index) end end # विषम मात्रा में संख्याओं वाली सरणी durations = [100,200,200,300,300,400,400,500,5_000] percentile(durations, 20) #=> 100 percentile(durations, 90) #=> 500 percentile(durations, 95) #=> 5000, इंडेक्स एक फ्रैक्शन है, 9.5 गोल इंडेक्स 10 है # सम मात्रा में संख्याओं वाली सरणी durations = [100,100,200,200,300,300,400,400,500,5_000] percentile(durations, 20) #=> 150, इंडेक्स 1 और 2 का औसत `(100 + 200) / 2` percentile(durations, 90) #=> 2750, इंडेक्स 8 और 9 का औसत `(500 + 5000) / 2 percentile(durations, 95) #=> 500, इंडेक्स एक फ्रैक्शन है, 8.55 इंडेक्स 9 है

यह percentile फ़ंक्शन हमारे median गणना के समान दिखता है और वास्तव में, median 50वें पर्सेंटाइल के समान है।

durations = [1,2,3] percentile(durations, 50) == median(durations) #=> true

ऐपसिग्नल आपके एप्लिकेशन के लिए प्रदर्शन मेट्रिक्स उत्पन्न करने के लिए उपरोक्त आंकड़ों का उपयोग करता है। हम केवल माध्य/औसत पर भरोसा नहीं करते बल्कि आपके अनुरोधों के वितरण का बेहतर विचार देने वाले आउटलायर्स को दिखाने के लिए 90वें और 95वें पर्सेंटाइल्स की गणना करते हैं। हमारे प्रदर्शन टूर पेज पर और जानें।

विषमताएं

पर्सेंटाइल्स और औसत की गणना के तरीके के कारण, कभी-कभी 90वां पर्सेंटाइल माध्य से नीचे डिप कर सकता है, उदाहरण के लिए, निम्नलिखित डेटासेट दिया गया है:

durations = [1,1,1,1,1,1,1,1,1,1,2000] percentile(durations, 90) #=> 1 mean(durations) #=> 182.73

यह हमें 182.73 का माध्य देगा, और 90वें पर्सेंटाइल का सिर्फ 1।

यदि आपका मेट्रिक कलेक्शन सिस्टम केवल 90वां पर्सेंटाइल और माध्य दिखाता है, तो आप अभी भी यह निष्कर्ष निकाल पाएंगे कि यदि 90वां पर्सेंटाइल औसत से नीचे गिरता है तो आपके डेटासेट में कहीं एक बड़ा आउटलायर है।

👋 यदि आप इस लेख को पसंद कर रहे हैं, तो हमने रूबी (ऑन रेल्स) प्रदर्शन के बारे में बहुत कुछ लिखा है, हमारे रूबी प्रदर्शन निगरानी चेकलिस्ट को देखें।

आप इस पोस्ट के लगभग 100% पर हैं

अभी के लिए बस इतना ही! एक अन्य पोस्ट में, हम बात करने जा रहे हैं कि हम क्वांटाइल्स का उपयोग करके अपने सभी ग्राहकों के अनुरोधों के लिए पर्सेंटाइल्स को कुशलतापूर्वक कैसे स्टोर और गणना करते हैं। यदि आपके पास आंकड़ों और APMs, त्रुटि ट्रैकिंग या प्रदर्शन निगरानी के बारे में कोई प्रश्न या टिप्पणी है, तो हमें ट्विटर @AppSignal पर या ईमेल के माध्यम से संपर्क करें।

  1. मेरे आईफोन पर सिडिया क्या है और इसका मेरी सुरक्षा के लिए क्या मतलब है? मेरे आईफोन पर सिडिया क्या है और इसका मेरी सुरक्षा के लिए क्या मतलब है?

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

  1. Python में BST का माध्यिका O(n) समय और O(1) स्थान में ढूंढना Python में BST का माध्यिका O(n) समय और O(1) स्थान में ढूंढना

    मान लीजिए हमारे पास एक बाइनरी सर्च ट्री (BST) है, हमें उसका माध्यिका ढूंढना है। हम जानते हैं कि सम संख्या में नोड्स के लिए, माध्यिका = ((n/2वां नोड + (n+1)/2वां नोड) / 2। विषम संख्या में नोड्स के लिए, माध्यिका = (n+1)/2वां नोड। तो, यदि इनपुट इस तरह है तो आउटपुट 7 होगा। इसे हल करने के लिए, हम इन चरण

  1. कंप्यूटर  व्हाइन  क्यों करते हैं और इसका क्या मतलब है कंप्यूटर "व्हाइन" क्यों करते हैं और इसका क्या मतलब है

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