কম্পিউটার

গড় হবে না:পরিসংখ্যানগত মানে এবং শতাংশ 101

পারফরম্যান্স পর্যবেক্ষণ একটি সফল অ্যাপ্লিকেশন চালানোর একটি গুরুত্বপূর্ণ অংশ। কিছুর কর্মক্ষমতা বলার সবচেয়ে মৌলিক উপায়গুলির মধ্যে একটি প্রতিবার এটি ঘটলে সময়কাল পরিমাপ করা এবং এটি থেকে পরিসংখ্যান ডিস্টিল করা।

মানে

মান সংগ্রহের গড় বা গড় হল ভাল বা খারাপ কিছু আচরণ করার জন্য একটি ভাল শুরু। এটি বিবেচনাধীন সমস্ত মান যোগ করে এবং তারপর ঘটনার সংখ্যা দিয়ে ভাগ করে গণনা করা হয়।

রুবিতে, গড় প্রতিক্রিয়ার সময় গণনা করা এই রকম হবে:

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

দ্রষ্টব্য :উদাহরণে, ভাগ করার সময় আরও সঠিক ফলাফলের জন্য, আমরা একটি ফ্লোটে মোট সময়কালের মান নিক্ষেপ করি। অন্যথায়, রুবি 4 ফিরে এসে নিকটতম পূর্ণসংখ্যায় বৃত্তাকার হবে পরিবর্তে।

মাঝারি

আরেকটি দরকারী পরিসংখ্যান হল মধ্যমা। যদিও এটি একই রকম শোনাচ্ছে, মানের সংগ্রহের গড় এবং মধ্যকার মধ্যে পার্থক্য রয়েছে।

মধ্যমা হল সেটের উপরের অর্ধেককে সেটের নিচের অর্ধেক থেকে আলাদা করার মান।

একটি বিজোড় সংখ্যক মান সহ একটি ডেটাসেটের জন্য, আপনি প্রথমে মানগুলি বাছাই করে, তারপর মধ্যম সংখ্যাটি নির্বাচন করে মধ্যমা পাবেন৷ একটি জোড় সংখ্যার মান সহ একটি সেটের জন্য, সেগুলিকে সাজানোর পরে, মধ্যমা হবে দুটি মধ্যবর্তী সংখ্যার গড়।

def median(array)
  sorted_array = array.sort
  length = sorted_array.length
 
  if length.odd? # Middle number for odd arrays
    sorted_array[length / 2]
  else # Mean of two middle numbers
    first_value = sorted_array[length / 2]
    second_value = sorted_array[length / 2 - 1]
    (first_value + second_value) / 2.to_f
  end
end
 
# Even array
durations = [1,2,3,4,5,6,7,8,9,0]
median(durations) #=> 4.5
 
# Odd array
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 ) এর ফলে 150 এর মান হবে 20 তম পার্সেন্টাইলের জন্য।

একটি খুব সাদাসিধা রুবি বাস্তবায়ন এইরকম দেখাবে:

def percentile(array, wanted_percentile)
  sorted_array = array.sort
 
  index = (wanted_percentile.to_f / 100) * sorted_array.length - 1
 
  # Check if index is not a round number
  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
 
# An array with an odd amount of numbers
durations = [100,200,200,300,300,400,400,500,5_000]
 
percentile(durations, 20) #=> 100
percentile(durations, 90) #=> 500
percentile(durations, 95) #=> 5000, index is a fraction, 9.5 the rounded index is 10
 
# An array with an even amount of numbers
durations = [100,100,200,200,300,300,400,400,500,5_000]
 
percentile(durations, 20) #=> 150, average of index 1 & 2 `(100 + 200) / 2`
percentile(durations, 90) #=> 2750, average of index 8 & 9 `(500 + 5000) / 2
percentile(durations, 95) #=> 500, index is a fraction, 8.55 the index is 9

এই percentile ফাংশন দেখতে অনেকটা আমাদের median এর মত গণনা এবং প্রকৃতপক্ষে, median 50th এর মতই শতাংশ।

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

AppSignal আপনার অ্যাপ্লিকেশনের জন্য কর্মক্ষমতা মেট্রিক্স তৈরি করতে উপরের পরিসংখ্যান ব্যবহার করে। আমরা শুধু গড়/গড়ের উপর নির্ভর করি না কিন্তু আপনার অনুরোধের বন্টন সম্পর্কে আরও ভাল ধারণা দেয় এমন বহিরাগতদের দেখানোর জন্য 90 তম এবং 95 তম পার্সেন্টাইল গণনা করি। আমাদের পারফরম্যান্স ট্যুর পৃষ্ঠায় আরও জানুন৷

অদ্ভুততা

যেভাবে পার্সেন্টাইল এবং গড় গণনা করা হয় তার কারণে, কখনও কখনও গড় থেকে 90 তম পার্সেন্টাইল ডিপ করা সম্ভব হয়, উদাহরণস্বরূপ, নিম্নলিখিত ডেটাসেট দেওয়া হয়েছে:

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

এটি আমাদের একটি mean দেবে এর 182.73 , এবং শুধুমাত্র 1 এর 90 তম পার্সেন্টাইল .

যদি আপনার মেট্রিক সংগ্রহের সিস্টেম শুধুমাত্র 90 তম পার্সেন্টাইল এবং গড় দেখায়, তাহলে আপনি এখনও অনুমান করতে পারবেন যে আপনার ডেটাসেটের কোথাও একটি বিশাল আউটলায়ার আছে যদি 90 তম পার্সেন্টাইল গড়ের নিচে নেমে যায়।

👋 আপনি যদি এই নিবন্ধটি পছন্দ করেন তবে রুবি (রেলগুলিতে) পারফরম্যান্স সম্পর্কে আমরা আরও অনেক কিছু লিখেছি, আমাদের রুবি পারফরম্যান্স মনিটরিং চেকলিস্টটি দেখুন৷

আপনি এই পোস্টের প্রায় 100% এ আছেন

আপাতত এই পর্যন্ত! অন্য একটি পোস্টে, আমরা কোয়ান্টাইল ব্যবহার করে আমাদের সমস্ত গ্রাহকের অনুরোধের জন্য কীভাবে দক্ষতার সাথে সঞ্চয় এবং শতাংশ গণনা করি সে সম্পর্কে কথা বলতে যাচ্ছি। পরিসংখ্যান এবং APM, ত্রুটি ট্র্যাকিং বা কর্মক্ষমতা নিরীক্ষণ সম্পর্কে আপনার কোন প্রশ্ন বা মন্তব্য থাকলে, Twitter @AppSignal বা ইমেলের মাধ্যমে আমাদের সাথে যোগাযোগ করুন।


  1. XInput এবং DirectInput এর অর্থ কি?

  2. আমার আইফোনে সাইডিয়া কী এবং আমার নিরাপত্তার জন্য এর অর্থ কী?

  3. পাইথনে O(n) সময়ে BST এবং O(1) স্থানের মধ্যমা খুঁজুন

  4. কেন কম্পিউটার "হাই" এবং এর অর্থ কী