ভূমিকা
ডেটা সায়েন্স বা ডেটা অ্যানালাইসিসে কাজ করার সময় আমরা প্রায়ই এমন কিছু ডেটা বা তথ্য পাই, যা সাধারণ মানের চেয়ে অনেক বেশি বা অনেক কম হয়। এগুলোকে আমরা 'আউটলায়ার' (Outlier) বলি। এই আউটলায়ারগুলো আমাদের পুরো ডেটাসেটের ফলাফলকে ভুল দিকে নিয়ে যেতে পারে। এই টিউটোরিয়ালটিতে আমরা IQR (Interquartile Range) পদ্ধতি ব্যবহার করে কীভাবে খুব সহজে এই আউটলায়ারগুলোকে শনাক্ত করে বাদ দেওয়া যায়, তা শিখব।
১. আউটলায়ার কী?
ভিডিও রেফারেন্স: [00:14]
সহজ কথায়, একটি ডেটাসেটে যে মানগুলো বাকিদের থেকে অস্বাভাবিকভাবে আলাদা, সেগুলোই হলো আউটলায়ার। যেমন, কোনো মানুষের উচ্চতার তথ্যে যদি কারো উচ্চতা ১৪ ফুট বা ১.২ ফুট লেখা থাকে, তবে সেগুলো অবশ্যই ভুল বা অস্বাভাবিক ডেটা। সাধারণ মানুষের উচ্চতা সাধারণত নির্দিষ্ট একটি সীমার মধ্যে থাকে।
- সহজ ব্যাখ্যা: ধরুন, ক্লাসের সব শিক্ষার্থীর উচ্চতা ৫ থেকে ৬ ফুটের মধ্যে। কিন্তু হঠাৎ একজনের উচ্চতা যদি ১০ ফুট বলা হয়, তবে সেটিই আউটলায়ার কারণ এটি বাস্তবসম্মত নয়।
২. IQR বা Interquartile Range কী?
ভিডিও রেফারেন্স: [00:43]
IQR বিষয়টি বোঝার আগে আমাদের 'পার্সেন্টাইল' (Percentile) বুঝতে হবে।
-
পার্সেন্টাইল (Percentile): এটি একটি নির্দিষ্ট মান যা বোঝায় যে কত শতাংশ ডেটা ওই মানটির নিচে আছে। যেমন, ২৫তম পার্সেন্টাইল (Q1) মানে হলো, ডেটাসেটের ২৫% ডেটা এই মানের নিচে। একইভাবে, ৭৫তম পার্সেন্টাইল (Q3) মানে হলো ৭৫% ডেটা ওই মানের নিচে।
-
IQR: এটি হলো Q3 এবং Q1 এর মধ্যবর্তী পার্থক্য। অর্থাৎ, IQR = Q3 - Q1। এই সীমার মাধ্যমেই আমরা নির্ধারণ করি ডেটা স্বাভাবিক নাকি অস্বাভাবিক।
৩. পাইথনে কোডিং ও বাস্তবায়ন
ভিডিও রেফারেন্স: [04:11]
নিচে পাইথন কোড ব্যবহার করে কীভাবে আউটলায়ার বের করা যায় তা দেওয়া হলো:
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
# আউটলায়ার শনাক্ত করা
outliers = df[(df.height < lower_limit) | (df.height > upper_limit)]
# আউটলায়ার বাদ দিয়ে নতুন ডেটাফ্রেম তৈরি করা
df_no_outlier = df[(df.height >= lower_limit) & (df.height <= upper_limit)]
কোড ব্যাখ্যা: ১. quantile(0.25) এবং 0.75 দিয়ে আমরা যথাক্রমে ২৫% এবং ৭৫% এর মান বের করেছি। ২. এরপর IQR বের করে আমরা একটি সীমা (Range) নির্ধারণ করেছি। ৩. lower_limit এবং upper_limit এর বাইরে যা আছে, সেগুলোকে আউটলায়ার হিসেবে চিহ্নিত করা হয়েছে এবং সবশেষে সেগুলোকে বাদ দিয়ে আমরা পরিচ্ছন্ন ডেটা পেয়েছি।
৪. বিশ্লেষণ ও আমার মতামত
ভিডিওটি একজন ডেটা অ্যানালিস্টের জন্য খুব কার্যকর। এখানে লেখক '1.5 IQR' রুল ব্যবহার করেছেন, যা পরিসংখ্যানের একটি স্ট্যান্ডার্ড পদ্ধতি।
-
বাস্তবতা: বাস্তবে অনেক সময় আউটলায়ারগুলো ভুল ডেটা হয় না, বরং গুরুত্বপূর্ণ কোনো ঘটনা নির্দেশ করতে পারে (যেমন, অস্বাভাবিক উচ্চ মূল্যের শেয়ার বা কোনো বিরল রোগ)। তাই ডিলিট করার আগে সবসময় যাচাই করা জরুরি।
-
বিকল্প পরামর্শ: যদি আপনার ডেটা নরমাল ডিস্ট্রিবিউশনে (Normal Distribution) না থাকে, তবে শুধুমাত্র IQR-এর ওপর নির্ভর না করে Z-score পদ্ধতি বা ডেটা ভিজুয়ালাইজেশনের (যেমন: Boxplot) সাহায্য নেওয়া ভালো।
উপসংহার: এই টিউটোরিয়ালটি বিশেষ করে যারা বিগিনার, তাদের জন্য ফিচার ইঞ্জিনিয়ারিং শুরু করার দারুণ একটি ধাপ। কোডিং অংশটি অত্যন্ত সহজ এবং কার্যকরী। নিয়মিত অনুশীলনের জন্য ভিডিওতে দেওয়া এক্সারসাইজগুলো অবশ্যই সমাধান করা উচিত।
সম্পর্কিত ভিডিও লিঙ্ক: https://www.youtube.com/watch?v=A3gClkblXK8
[
Outlier detection and removal using IQR | Feature engineering tutorial python # 4
codebasics · 118K views
](http://www.youtube.com/watch?v=A3gClkblXK8)

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