ভূমিকা
আমাদের প্রতিদিনের কাজে বা রিসার্চের সময় অনেক ধরনের ডাটা নিয়ে কাজ করতে হয়। কিন্তু সব ডাটা সবসময় ঠিকঠাক থাকে না। মাঝে মাঝে কিছু ডাটা এমন থাকে যা বাকি সবার থেকে একদম আলাদা। এই আলাদা ডাটাগুলোকে বলা হয় আউটলিয়ার (Outlier)। সহজ কথায়, একটা লাইনে সব মানুষ যখন ১ থেকে ১০ এর মধ্যে স্কোর করছে, সেখানে কেউ যদি হঠাৎ ১০০০ স্কোর করে, তবে সেই ১০০০ হলো আউটলিয়ার। এই ভিডিওতে আমরা শিখব কীভাবে পাইথন (Python) কোড ব্যবহার করে এই ঝামেলাপূর্ণ আউটলিয়ার ডাটাগুলোকে খুঁজে বের করা যায় এবং ডিলিট করা যায়।
আউটলিয়ার কী?
ভিডিও রেফারেন্স: [00:00]
আউটলিয়ার হলো এমন কিছু ডাটা পয়েন্ট যা বাকি ডাটা থেকে অনেক বেশি আলাদা। ধরুন, আপনি মানুষের বয়স নিয়ে কাজ করছেন, সেখানে সাধারণত বয়স ৯০ বা ১০০ এর নিচে থাকে। কিন্তু যদি কোথাও ১০০০ বছর বয়স দেখেন, তবে বুঝতে হবে ডাটা সংগ্রহের সময় কোনো ভুল হয়েছে। এটাই আউটলিয়ার। আবার কখনও কখনও ডাটা সত্যি হলেও তা খুব অস্বাভাবিক হতে পারে, যেমন ১২০ বছর বয়স। এগুলো আমাদের গড় হিসাব বা অ্যানালাইসিসের ফলাফলের ওপর ভুল প্রভাব ফেলতে পারে, তাই এগুলো রিমুভ করা জরুরি।
সহজ ভাষায়: আউটলিয়ার মানে হলো ডাটার মধ্যে থাকা 'ভুল বা অস্বাভাবিক' কিছু সংখ্যা যা পুরো হিসাবকে নষ্ট করে দিতে পারে।
পার্সেন্টাইল (Percentile) কী?
ভিডিও রেফারেন্স: [01:43]
আউটলিয়ার খোঁজার জন্য আমরা 'পার্সেন্টাইল' পদ্ধতি ব্যবহার করব।
-
সহজ ব্যাখ্যা: পার্সেন্টাইল আপনাকে জানায় যে আপনার ডাটার কতটুকু অংশ একটি নির্দিষ্ট মানের নিচে আছে। যেমন, যদি বলা হয় ৫০তম পার্সেন্টাইল বা ৫০%, তার মানে হলো আপনার ডাটার ৫০% মান এই নির্দিষ্ট মানের নিচে আছে।
-
কেন দরকার: আমরা যখন খুব বড় ডাটা সেট নিয়ে কাজ করি, তখন খালি চোখে আউটলিয়ার চেনা সম্ভব হয় না। তখন আমরা পার্সেন্টাইল বা কোয়ান্টাইল (Quantile) ফাংশন দিয়ে নির্দিষ্ট রেঞ্জ (যেমন ৯৫% বা ৫%) সেট করে দিই। এর বাইরের ডাটাগুলোকে আমরা আউটলিয়ার হিসেবে ধরে ডিলিট করে দিতে পারি।
পাইথন কোডের মাধ্যমে আউটলিয়ার রিমুভ করা
ভিডিও রেফারেন্স: [04:14]
পাইথনের pandas লাইব্রেরি ব্যবহার করে আমরা খুব সহজে এটি করতে পারি। নিচে একটি সাধারণ কোড স্ট্রাকচার দেওয়া হলো:
Python
import pandas as pd
# ডাটা লোড করা
df = pd.read_csv('your_data.csv')
# ৯৫% এর বেশি এবং ৫% এর কম মানগুলোকে আউটলিয়ার ধরা
max_threshold = df['height'].quantile(0.95)
min_threshold = df['height'].quantile(0.05)
# আউটলিয়ার ছাড়া ডাটা ফিল্টার করা
new_df = df[(df['height'] < max_threshold) & (df['height'] > min_threshold)]
কোড ব্যাখ্যা: ১. quantile(0.95): এটি ৯৫% পার্সেন্টাইল ভ্যালু বের করে। আমরা চাচ্ছি এর উপরের সব ডাটা বাদ দিতে। ২. min_threshold: এটি ৫% পার্সেন্টাইল ভ্যালু বের করে, যা খুব ছোট বা অস্বাভাবিক মানগুলোকে চিহ্নিত করতে সাহায্য করে। ৩. new_df = ...: এখানে আমরা শুধু সেই ডাটাগুলো রাখছি যা আমাদের সেট করা সীমার (threshold) ভেতরে আছে।
রিয়েল লাইফ ডাটা সেটে প্রয়োগ
ভিডিও রেফারেন্স: [08:08]
বাস্তব জীবনে যেমন প্রপার্টি প্রাইস বা হাউজিং ডাটা নিয়ে কাজ করার সময় অনেক সময় এমন ডাটা থাকে যা অবিশ্বাস্য। যেমন, ব্যাঙ্গালোরে ১ বর্গফুট জায়গার দাম খুব কম বা আকাশচুম্বী হতে পারে না। এই ধরনের ক্ষেত্রে শুধু ডোমেইন নলেজ (যে বিষয়ের ডাটা নিয়ে কাজ করছেন সে সম্পর্কে জ্ঞান) অথবা স্ট্যাটিস্টিক্যাল মেথড ব্যবহার করে আউটলিয়ার চিহ্নিত করতে হয়।
আপনার যদি ডোমেইন নলেজ থাকে, তবে সরাসরি সীমানা সেট করতে পারেন (যেমন: ৭.৫ ফুটের উপরের উচ্চতা আউটলিয়ার)। কিন্তু ডোমেইন নলেজ না থাকলে 'পার্সেন্টাইল' পদ্ধতিই সবচেয়ে কার্যকর।
বিশ্লেষণ এবং আমার মতামত
ভিডিওটির ক্রিয়েটর অত্যন্ত কার্যকরভাবে দেখিয়েছেন কীভাবে একটি ডাটা ক্লিনিং প্রসেস সম্পন্ন করা যায়।
-
কেন এটি গুরুত্বপূর্ণ: কোনো মেশিন লার্নিং মডেল বা ডাটা অ্যানালাইসিস মডেল যদি ভুল বা আউটলিয়ার ডাটা দিয়ে ট্রেন (Train) করা হয়, তবে তার ফলাফল কখনোই সঠিক আসবে না। তাই ডাটা প্রি-প্রসেসিংয়ের সময় এটি একটি অপরিহার্য ধাপ।
-
বাস্তবতা: সব সময় যে আউটলিয়ার ডিলিট করতে হবে তা কিন্তু নয়। কখনও কখনও সেই আউটলিয়ার ডাটাই হতে পারে কোনো বড় সমস্যার লক্ষণ (যেমন ব্যাংকিং ফ্রড ডিটেকশন)। তবে সাধারণ অ্যানালাইসিসের ক্ষেত্রে এটি সরিয়ে ফেলাই বুদ্ধিমানের কাজ।
-
পরামর্শ: আপনার হাতে যদি সময়ের অভাব থাকে এবং ডাটা সেট খুব বড় হয়, তবে
quantile()ফাংশন ব্যবহার করা সবচেয়ে সহজ উপায়। ভবিষ্যতে আপনি জেন্ডার, বয়স বা প্রপার্টি প্রাইস অনুযায়ী আলাদা গ্রুপ করে কাজ করার অভ্যাস করতে পারেন।
এই পদ্ধতিটি শিখলে আপনি যেকোনো ডাটা সেটকে আরও নিখুঁত এবং কার্যকরভাবে বিশ্লেষণ করতে পারবেন। বিষয়টি বুঝতে কোনো সমস্যা হলে আবারো জানান!
[
Outlier detection and removal using percentile | Feature engineering tutorial python # 2
codebasics · 149K views
](http://www.youtube.com/watch?v=7sJaRHF03K8)

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