ভূমিকা
ডেটা সায়েন্স বা ডেটা অ্যানালিসিসে কাজ করার সময় আমরা প্রায়ই এমন কিছু ডেটা দেখি যা অন্য সব ডেটার তুলনায় অদ্ভুত বা অস্বাভাবিক। এই অস্বাভাবিক ডেটাগুলোকে বলা হয় 'আউটলায়ার' (Outlier)। যেমন ধরুন, ১০ জন মানুষের উচ্চতা পরিমাপ করছেন, হঠাৎ দেখলেন একজনের উচ্চতা ৪০ ফুট! এটা অসম্ভব, তাই না? এই ধরনের ভুল বা অস্বাভাবিক ডেটা মডেলে বড় সমস্যা তৈরি করতে পারে। আইকিউআর (IQR) পদ্ধতি ব্যবহার করে খুব সহজেই এই ধরণের আউটলায়ারগুলো খুঁজে বের করে বাদ দেওয়া যায়।
আউটলায়ার (Outlier) কী এবং কেন এটি সমস্যার?
ভিডিও লিঙ্ক: https://www.youtube.com/watch?v=A3gClkblXK8
সহজ কথায়, আপনার ডেটাসেটের বাকি সব ডেটা যে সীমার মধ্যে থাকে, তার চেয়ে অনেক বেশি বা অনেক কম ভ্যালু থাকলে তাকে আউটলায়ার বলে।
- উদাহরণ: মানুষের উচ্চতার ডেটাসেটে ১.২ ফুট বা ৪০ ফুট উচ্চতা অসম্ভব। এই ডেটাগুলো আমাদের গড় বা স্ট্যাটিস্টিক্যাল হিসাবকে ভুল করে দেয়। তাই এনালাইসিস করার আগে এগুলোকে বাদ দেওয়া জরুরি।
পার্সেন্টাইল (Percentile) ও IQR বোঝার সহজ উপায়
আউটলায়ার বের করার জন্য আমাদের কিছু বেসিক কনসেপ্ট জানতে হবে:
-
পার্সেন্টাইল (Percentile): ধরুন আপনার কাছে ১০০টি ডেটা আছে। ২৫তম পার্সেন্টাইল (Q1) মানে হলো, এমন একটি সংখ্যা যার চেয়ে ছোট মোট ডেটার ২৫% সংখ্যা আছে। তেমনি ৭৫তম পার্সেন্টাইল (Q3) মানে হলো, এমন একটি সংখ্যা যার চেয়ে ছোট ডেটার ৭৫% সংখ্যা আছে।
-
IQR (Interquartile Range): এটি হলো Q3 - Q1। অর্থাৎ ডেটার মাঝখানের ৫০% অংশ কোন সীমার মধ্যে আছে, তা এই IQR থেকে বোঝা যায়।
কিভাবে সীমা ঠিক করবেন?
-
লোয়ার লিমিট (Lower Limit):
Q1 - (1.5 * IQR) -
আপার লিমিট (Upper Limit):
Q3 + (1.5 * IQR)
এই লিমিটের বাইরের যেকোনো ভ্যালুকেই আমরা আউটলায়ার হিসেবে ধরে নিতে পারি।
পাইথন কোডিং ও বাস্তব প্রয়োগ
নিচে পাইথন কোড ব্যবহার করে কীভাবে আউটলায়ার দূর করা হয় তা দেওয়া হলো:
Python
import pandas as pd
# ডেটা লোড করা
df = pd.read_csv("heights.csv")
# Q1 এবং Q3 বের করা
Q1 = df['height'].quantile(0.25)
Q3 = df['height'].quantile(0.75)
# IQR বের করা
IQR = Q3 - Q1
# লোয়ার ও আপার লিমিট সেট করা
lower_limit = Q1 - 1.5 * IQR
upper_limit = Q3 + 1.5 * IQR
# আউটলায়ার ফিল্টার করে নতুন ডেটাসেট তৈরি
df_no_outlier = df[(df['height'] > lower_limit) & (df['height'] < upper_limit)]
কোড ব্যাখ্যা: ১. প্রথমে quantile() ফাংশন ব্যবহার করে Q1 এবং Q3 বের করা হয়েছে। ২. তারপর IQR এর সূত্র (Q3 - Q1) প্রয়োগ করা হয়েছে। ৩. শেষে কন্ডিশন দিয়ে আমরা শুধু সেই ডেটাগুলো রেখেছি যা লোয়ার এবং আপার লিমিটের মধ্যে আছে। এতে করে অস্বাভাবিক ভ্যালুগুলো স্বয়ংক্রিয়ভাবে বাদ পড়ে গেছে।
বিশ্লেষণ ও পরামর্শ
আমার বিশ্লেষণ: আইকিউআর পদ্ধতিটি ডেটা ক্লিনিং বা 'ফিচার ইঞ্জিনিয়ারিং' (Feature Engineering)-এর জন্য দারুণ একটি পদ্ধতি। এটি খুব দ্রুত কাজ করে এবং গাণিতিকভাবে সঠিক ফলাফল দেয়। তবে মনে রাখবেন, সব ক্ষেত্রেই যে ১.৫ মাল্টিপ্লায়ার কাজ করবে তা কিন্তু নয়। কখনো কখনো আপনার ডেটার ধরনের উপর ভিত্তি করে এই ১.৫ সংখ্যাটিকে পরিবর্তন করতে হতে পারে।
সাজেশন:
-
বাস্তবতা: যদি ডেটা অনেক বেশি থাকে, তবে শুধু এই পদ্ধতিই যথেষ্ট নয়। অনেক সময় ডেটা ভিজুয়ালাইজেশন (যেমন: Box Plot বা Histogram) ব্যবহার করে আগে চেক করা উচিত যে আউটলায়ারগুলো সত্যিই ভুল নাকি বাস্তব কিন্তু বিরল ডেটা।
-
বিকল্প: Z-score পদ্ধতিও আউটলায়ার খোঁজার জন্য খুব জনপ্রিয়। যদি আপনার ডেটা 'নরমাল ডিস্ট্রিবিউশন' (Normal Distribution) বা ঘণ্টার মতো আকৃতির হয়, তবে Z-score ব্যবহার করা বেশি যুক্তিযুক্ত।
এই ভিডিওটি আপনাকে ডেটা সায়েন্সের একটি মৌলিক কিন্তু অত্যন্ত গুরুত্বপূর্ণ ধাপ শেখালো। নিয়মিত অনুশীলনের জন্য ভিডিওতে দেওয়া এক্সারসাইজটি সমাধান করতে পারেন।
[
Outlier detection and removal using IQR | Feature engineering tutorial python # 4
codebasics · 118K views
](http://www.youtube.com/watch?v=A3gClkblXK8)

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