ভূমিকা
ডেটা সায়েন্স বা ডেটা অ্যানালাইসিসে আমাদের কাছে যখন অনেক বিশাল ডেটা বা তথ্য থাকে, তখন তার মধ্যে কিছু এমন মান (value) থাকে যা বাকি সবার থেকে একদম আলাদা বা অস্বাভাবিক। একেই বলে আউলায়ার (Outlier)। সহজ কথায়, ধরা যাক ক্লাসের সবার উচ্চতা ৫ ফুটের আশেপাশে, কিন্তু হঠাৎ একজন পাওয়া গেল যার উচ্চতা ৭.৫ ফুট! এই ৭.৫ ফুট উচ্চতাটি হলো আউলায়ার। এই ভিডিওটিতে দেখানো হয়েছে কীভাবে পাইথনের মাধ্যমে এই অস্বাভাবিক ডেটাগুলো খুঁজে বের করে সরিয়ে ফেলা যায়।
১. আউলায়ার কী এবং কেন সরাতে হয়?
ভিডিও রেফারেন্স: [00:00]
আউলায়ার হলো ডেটাসেটের সেই মান, যা সাধারণ ডেটার প্যাটার্ন বা নিয়মের বাইরে থাকে।
-
কেন সরাবেন? ধরুন আপনি একটি মেশিন লার্নিং মডেল বানাচ্ছেন যা মানুষের উচ্চতা দেখে ওজন প্রেডিক্ট করবে। এখন যদি ডেটাসেটে খুব অস্বাভাবিক উচ্চতার ডেটা থাকে, তবে মডেলটি ভুল শিখতে পারে। তাই ভালো মানের রেজাল্ট পাওয়ার জন্য এই অস্বাভাবিক ডেটাগুলোকে ছেঁটে ফেলাই বুদ্ধিমানের কাজ।
-
সহজ ব্যাখ্যা: আউলায়ার মানে হলো "ভুল ভাল" বা "অস্বাভাবিক" ডেটা যা আমাদের মূল ক্যালকুলেশনকে নষ্ট করে দেয়।
২. স্ট্যান্ডার্ড ডেভিয়েশন (Standard Deviation) দিয়ে আউলায়ার দূর করা
ভিডিও রেফারেন্স: [06:17]
এটি একটি পরিসংখ্যানের পদ্ধতি যা দিয়ে বোঝা যায় ডেটাগুলো গড় (mean) থেকে কতটা দূরে ছড়িয়ে আছে।
-
কীভাবে কাজ করে: সাধারণত, একটি নরমাল ডিস্ট্রিবিউশনে (যেখানে বেশিরভাগ ডেটা মাঝখানে থাকে), ৯৯.৭% ডেটা ৩ স্ট্যান্ডার্ড ডেভিয়েশনের মধ্যে থাকে। তাই যদি কোনো ডেটা ৩ স্ট্যান্ডার্ড ডেভিয়েশনের বাইরে চলে যায়, তবে সেটাকে আমরা আউলায়ার হিসেবে ধরে নিই।
-
কোড উদাহরণ:
Python
# আপার লিমিট বের করা
upper_limit = df.height.mean() + (3 * df.height.std())
# লোয়ার লিমিট বের করা
lower_limit = df.height.mean() - (3 * df.height.std())
# আউলায়ার ছাড়া ডেটা ফিল্টার করা
new_df = df[(df.height < upper_limit) & (df.height > lower_limit)]
- ব্যাখ্যা: এখানে
mean()গড় বের করে এবংstd()স্ট্যান্ডার্ড ডেভিয়েশন বের করে। আমরা গড় থেকে ৩ গুন বেশি বা কম মানের বাইরে থাকা ডেটাগুলোকে বাদ দিয়েছি।
৩. Z-Score পদ্ধতি
ভিডিও রেফারেন্স: [12:15]
Z-Score হলো স্ট্যান্ডার্ড ডেভিয়েশনেরই আরেকটি সহজ প্রকাশ। এটি আমাদের জানায়, একটি নির্দিষ্ট মান তার গড় থেকে কতটি স্ট্যান্ডার্ড ডেভিয়েশন দূরে আছে।
-
সূত্র:
Z-score = (ডেটা পয়েন্ট - গড়) / স্ট্যান্ডার্ড ডেভিয়েশন -
কেন এটি ভালো: যখনই Z-Score এর মান ৩-এর চেয়ে বেশি বা -৩-এর চেয়ে কম হয়, তখনই আমরা ধরে নিই এটি একটি আউলায়ার। এটি একটি গাণিতিক স্ট্যান্ডার্ড পদ্ধতি, যা কোডিংয়ের ক্ষেত্রে খুব সহজেই ব্যবহার করা যায়।
-
কোড উদাহরণ:
Python
# Z-score কলাম তৈরি
df['zscore'] = (df.height - df.height.mean()) / df.height.std()
# ফিল্টারিং
new_df = df[(df.zscore < 3) & (df.zscore > -3)]
- ব্যাখ্যা: এই কোডের মাধ্যমে আমরা প্রতিটা উচ্চতার জন্য একটি Z-score তৈরি করেছি। এরপর যেগুলোর মান ৩ আর -৩ এর সীমার ভেতরে আছে, শুধু সেগুলোই রেখেছি। এতে ডেটা অনেক পরিষ্কার হয়ে যায়।
বিশ্লেষণ ও পরামর্শ
এই ভিডিওটিতে ডেটা ক্লিনিংয়ের খুব চমৎকার দুটি পদ্ধতি দেখানো হয়েছে।
-
আমার চিন্তা: আউলায়ার সবসময় যে ভুল ডেটা তা কিন্তু নয়। অনেক সময় এগুলো খুব গুরুত্বপূর্ণ তথ্য হতে পারে (যেমন- স্টক মার্কেটের বড় ধস)। তাই যেকোনো ডেটা মুছে ফেলার আগে আপনার ব্যবসার বা প্রজেক্টের প্রেক্ষাপট (context) বোঝা খুব জরুরি।
-
পরামর্শ: যদি আপনার ডেটাসেট অনেক ছোট হয়, তবে ৩ স্ট্যান্ডার্ড ডেভিয়েশনের বদলে ২ বা ৪ ব্যবহার করে দেখতে পারেন কোনটি ভালো কাজ করছে। আর বড় ডেটাসেটের জন্য Z-Score খুব কার্যকর।
-
বিকল্প উপায়: ইন্টারকুয়ার্টাইল রেঞ্জ (IQR) পদ্ধতিও আউলায়ার সরানোর জন্য অনেক সময় ব্যবহার করা হয়, যা আপনি ভবিষ্যতে যাচাই করে দেখতে পারেন।
সবশেষে, ডেটা অ্যানালিস্ট বা সায়েন্টিস্ট হওয়ার জন্য এই Feature Engineering বা ডেটা সাজানোর পদ্ধতিগুলো আয়ত্ত করা অপরিহার্য। এটি আপনার মডেলের কার্যকারিতা বহুগুণ বাড়িয়ে দেবে।
[
Outlier detection and removal: z score, standard deviation | Feature engineering tutorial python # 3
codebasics · 137K views
](http://www.youtube.com/watch?v=KFuEAGR3HS4)

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