ভূমিকা
আমরা যখন কোন ডাটা নিয়ে কাজ করি, তখন অনেক সময় দেখা যায় কিছু ডাটা বা সংখ্যা বাকি সবগুলোর তুলনায় অনেক আলাদা বা অস্বাভাবিক। একেই বলা হয় 'আউটলিয়ার' (Outlier)। এই ভিডিওতে আমরা শিখব কীভাবে জ্যা-স্কোর (Z-score) এবং স্ট্যান্ডার্ড ডেভিয়েশন (Standard Deviation) ব্যবহার করে খুব সহজে এই অস্বাভাবিক ডাটাগুলোকে শনাক্ত করে বাদ দেওয়া যায়, যা আমাদের ডাটা অ্যানালাইসিস বা মেশিন লার্নিং মডেলকে আরও নির্ভুল করে তোলে।
১. আউটলিয়ার কী এবং কেন এটি বাদ দেওয়া দরকার?
ভিডিও রেফারেন্স: [00:00]
আউটলিয়ার হলো এমন কিছু ভ্যালু যা আপনার ডাটা সেটের বাকি ভ্যালুগুলোর তুলনায় অনেক বেশি বা অনেক কম।
সহজ ভাষায়: ধরুন, একটি ক্লাসের সব ছাত্রের উচ্চতা ৫ ফিট থেকে ৬ ফিটের মধ্যে। কিন্তু হঠাৎ যদি একজনের উচ্চতা ৮ ফিট দেখা যায়, তবে সেই ৮ ফিটের ডাটাটি হলো আউটলিয়ার। এগুলো অনেক সময় ডাটা এন্ট্রির ভুল হতে পারে অথবা বিশেষ কোনো কেস হতে পারে। এগুলো বাদ দিলে আমাদের মডেল আরও ভালো কাজ করে।
২. নরমাল ডিস্ট্রিবিউশন (Normal Distribution) বোঝা
ভিডিও রেফারেন্স: [02:13]
আমাদের ডাটাগুলো দেখতে কেমন বা কীভাবে ছড়িয়ে আছে, তা বোঝার জন্য আমরা হিস্টোগ্রাম (Histogram) ব্যবহার করি। বেশির ভাগ ক্ষেত্রেই ডাটা 'বেল কার্ভ' (Bell Curve) আকারে থাকে।
- বেল কার্ভ কী? এর মানে হলো বেশির ভাগ মানুষ বা ডাটা মাঝখানের দিকে (গড়ে) থাকে। আর অনেক বেশি বা অনেক কম ডাটা খুব কম মানুষের ক্ষেত্রে দেখা যায়। এটি অনেকটা ঘণ্টার মতো দেখতে, তাই একে বেল কার্ভ বলে।
৩. স্ট্যান্ডার্ড ডেভিয়েশন (Standard Deviation) দিয়ে আউটলিয়ার শনাক্তকরণ
ভিডিও রেফারেন্স: [06:40]
স্ট্যান্ডার্ড ডেভিয়েশন হলো একটি পরিমাপ যা দিয়ে বোঝা যায় ডাটাগুলো গড়ের (Mean) তুলনায় কতটা দূরে আছে।
- কীভাবে কাজ করে: সাধারণত বলা হয় যে ডাটা যদি নরমাল ডিস্ট্রিবিউশনে থাকে, তবে ৯৯.৭% ডাটা গড়ের ৩টি স্ট্যান্ডার্ড ডেভিয়েশনের মধ্যে থাকে। যদি কোনো ডাটা ৩টি স্ট্যান্ডার্ড ডেভিয়েশনের বাইরে থাকে, তবে তাকে আমরা আউটলিয়ার হিসেবে ধরে নিতে পারি।
কোড স্নিপেট:
Python
upper_limit = df.height.mean() + 3 * df.height.std()
lower_limit = df.height.mean() - 3 * df.height.std()
# আউটলিয়ার খুঁজে বের করা
outliers = df[(df.height > upper_limit) | (df.height < lower_limit)]
- ব্যাখ্যা: এখানে আমরা গড়ের সাথে ৩ গুণ স্ট্যান্ডার্ড ডেভিয়েশন যোগ করে সর্বোচ্চ সীমা (Upper limit) এবং বিয়োগ করে সর্বনিম্ন সীমা (Lower limit) তৈরি করেছি। এই সীমার বাইরের ডাটাগুলোই আমাদের আউটলিয়ার।
৪. জ্যা-স্কোর (Z-score) পদ্ধতি
ভিডিও রেফারেন্স: [12:15]
জ্যা-স্কোর হলো স্ট্যান্ডার্ড ডেভিয়েশন ব্যবহার করারই একটি বিকল্প ও সহজ উপায়। এটি সরাসরি বলে দেয় একটি ডাটা পয়েন্ট গড় থেকে কত স্ট্যান্ডার্ড ডেভিয়েশন দূরে।
কোড স্নিপেট:
Python
df['zscore'] = (df.height - df.height.mean()) / df.height.std()
# ৩ এর বেশি বা -৩ এর কম জ্যা-স্কোর যাদের আছে তাদের বাদ দেওয়া
clean_df = df[(df.zscore < 3) & (df.zscore > -3)]
- ব্যাখ্যা: জ্যা-স্কোর বের করার সূত্রটি খুবই সহজ:
(ডাটা পয়েন্ট - গড়) / স্ট্যান্ডার্ড ডেভিয়েশন। যদি জ্যা-স্কোর ৩ বা তার বেশি হয়, তবে আমরা তাকে আউটলিয়ার হিসেবে চিহ্নিত করে বাদ দিতে পারি।
বিশ্লেষণ ও পরামর্শ
সারাংশ: এই ভিডিওটির মূল লক্ষ্য হলো ডাটা পরিষ্কার করা (Data Cleaning)। আপনি যদি কোনো মেশিন লার্নিং মডেল বা ডাটা অ্যানালাইসিসে ভালো করতে চান, তবে আপনার ডাটা থেকে অপ্রয়োজনীয় বা ভুল ডাটা (আউটলিয়ার) সরাতে হবে। জ্যা-স্কোর এবং ৩ স্ট্যান্ডার্ড ডেভিয়েশন এর জন্য আদর্শ পদ্ধতি।
আমার ভাবনা: সবসময় যে আউটলিয়ার বাদ দিতে হবে এমন নয়। আগে বুঝতে হবে সেগুলো কি আসলেই ভুল ডাটা নাকি বিশেষ কোনো তথ্য। যদি ডাটাগুলো সত্যিই ভুল হয় (যেমন: মানুষের উচ্চতা ১০ ফুট হওয়া অসম্ভব), তবে অবশ্যই তা বাদ দিতে হবে। আর যদি ডাটা ঠিক থাকে কিন্তু খুব ব্যতিক্রম হয়, তবে ব্যবসায়িক সিদ্ধান্ত অনুযায়ী সেগুলো রাখা বা বাদ দেওয়া উচিত।
পরামর্শ: আপনি যদি নতুন হন, তবে প্রথমে ছোট ডাটা সেটে এই পদ্ধতিগুলো নিজে কোড করে প্র্যাকটিস করুন। ভিডিওতে উল্লেখিত Kaggle-এর ডাটা সেটগুলো ব্যবহার করা একটি দারুণ বুদ্ধি।
ইউটিউব লিঙ্ক: https://www.youtube.com/watch?v=KFuEAGR3HS4
[
Outlier detection and removal: z score, standard deviation | Feature engineering tutorial python # 3
codebasics · 137K views
](http://www.youtube.com/watch?v=KFuEAGR3HS4)

মন্তব্যসমূহ
একটি মন্তব্য পোস্ট করুন
আপনার সমস্যাটি কমেন্ট করে আমাদের জানান :-d