Outliers (আউটলায়ার) হল এমন ডেটা পয়েন্ট, যা সাধারণত বাকী ডেটার তুলনায় অনেক ভিন্ন বা দূরবর্তী অবস্থানে থাকে। এই ধরনের ডেটা পয়েন্টগুলি মডেলের পারফরম্যান্স এবং ফলাফলকে প্রভাবিত করতে পারে। Outliers ডেটার প্রকৃত বৈশিষ্ট্য বা প্যাটার্ন থেকে বিচ্যুত হতে পারে, এবং এটি মডেল ট্রেনিং এবং পূর্বাভাসে ভুল অনুমান (false predictions) সৃষ্টি করতে পারে।
1. Outliers এর প্রভাব:
Outliers মডেলের পারফরম্যান্সের উপর বিভিন্নভাবে প্রভাব ফেলতে পারে:
(a) মডেল পারফরম্যান্সে বিকৃত প্রভাব:
- লিনিয়ার রিগ্রেশন মডেল: আউটলায়ার একটি লিনিয়ার রিগ্রেশন মডেলকে অতিরিক্ত প্রভাবিত করতে পারে, কারণ লিনিয়ার রিগ্রেশন মডেলটি সঠিক ফিটের জন্য সমস্ত ডেটার গড় বা বৈচিত্র্য ব্যবহৃত করে।
- রিগ্রেশন মডেলে: আউটলায়ারগুলি রিগ্রেশন লাইনের ঢাল এবং স্থানীয়তা পরিবর্তন করতে পারে, যার ফলে খুব কম বা ভুল পূর্বাভাস পাওয়া যায়।
(b) টেস্ট ডেটাতে পারফরম্যান্স হ্রাস:
- মডেলটি যদি অপ্রয়োজনীয় আউটলায়ারগুলি থেকে শিখে, তবে এটি সাধারণীকরণ (generalization) হারাতে পারে এবং নতুন বা অজানা ডেটাতে সঠিকভাবে কাজ করতে নাও পারে।
(c) ডিস্ট্রিবিউশন এবং স্ট্যাটিস্টিক্স পরিবর্তন:
- আউটলায়ারগুলি ডেটার গড়, ভ্যারিয়েন্স, এবং স্ট্যান্ডার্ড ডেভিয়েশন পরিমাপকে পরিবর্তন করতে পারে, যার ফলে গুরুত্বপূর্ণ পরিসংখ্যানের হিসাব এবং সিদ্ধান্ত গ্রহণের প্রক্রিয়া ক্ষতিগ্রস্ত হয়।
2. Outliers এর ধরন:
Outliers দুই ধরনের হতে পারে:
- Point Outliers: একটি বা দুটি ডেটা পয়েন্ট যেগুলি পুরো ডেটাসেটের তুলনায় অনেক বেশি বিচ্যুত থাকে।
- Contextual Outliers: নির্দিষ্ট পরিস্থিতিতে আউটলায়ার হতে পারে, তবে অন্য পরিস্থিতিতে তা স্বাভাবিক হতে পারে। যেমন, সিজনাল পরিবর্তন বা বিশেষ ঘটনার পরিণতি।
3. Outliers এর সমাধান:
(a) Outliers চিহ্নিত করা:
আউটলায়ার চিহ্নিত করার জন্য কিছু জনপ্রিয় পদ্ধতি:
- Box Plot:
- Box plot ব্যবহার করে আপনি আউটলায়ার চিহ্নিত করতে পারেন। এতে whiskers এবং interquartile range (IQR) ব্যবহৃত হয়।
আউটলায়ার সাধারণত 1.5 * IQR এর বাইরে থাকে।
import seaborn as sns sns.boxplot(x=df['column_name'])
- Z-score:
Z-score ব্যবহার করে আউটলায়ার চিহ্নিত করা যায়। Z-score হল ডেটা পয়েন্টের গড় থেকে কতগুলি স্ট্যান্ডার্ড ডেভিয়েশন দূরে তা পরিমাপ করে। যদি Z-score 3-এর বেশি হয়, তবে তা আউটলায়ার হতে পারে।
from scipy import stats z_scores = stats.zscore(df['column_name']) outliers = df[(z_scores > 3) | (z_scores < -3)]
- IQR (Interquartile Range):
IQR ব্যবহারের মাধ্যমে আউটলায়ার চিহ্নিত করা যায়। এটি Q1 (25th percentile) এবং Q3 (75th percentile) এর মধ্যে ব্যবধান হিসেবে গণনা করা হয় এবং এই পরিসীমার বাইরে যেকোনো ডেটা আউটলায়ার হিসেবে চিহ্নিত হতে পারে।
Q1 = df['column_name'].quantile(0.25) Q3 = df['column_name'].quantile(0.75) IQR = Q3 - Q1 outliers = df[(df['column_name'] < (Q1 - 1.5 * IQR)) | (df['column_name'] > (Q3 + 1.5 * IQR))]
(b) Outliers এর সমাধান:
- Remove Outliers:
কিছু পরিস্থিতিতে আউটলায়ারগুলিকে সরিয়ে দেয়া হতে পারে। তবে এটি কেবল তখনই করা উচিত, যখন আউটলায়ারটি স্পষ্টভাবে ভুল ডেটা বা ত্রুটিপূর্ণ ইনপুটের কারণে তৈরি হয়।
df_cleaned = df[(df['column_name'] > (Q1 - 1.5 * IQR)) & (df['column_name'] < (Q3 + 1.5 * IQR))]
- Cap or Floor Outliers:
আউটলায়ারকে capping বা flooring করা, অর্থাৎ, আউটলায়ারগুলিকে একটি নির্দিষ্ট মানের মধ্যে সীমাবদ্ধ করা। এটি কিছু পরিস্থিতিতে কার্যকর হতে পারে।
df['column_name'] = df['column_name'].clip(lower=lower_limit, upper=upper_limit)
- Transformation (Log Transformation):
আউটলায়ারগুলিকে কমানোর জন্য ডেটা ট্রান্সফর্মেশন পদ্ধতি ব্যবহার করা যেতে পারে। যেমন logarithmic transformation বা square root transformation। এটি আউটলায়ারের প্রভাব কমাতে সাহায্য করে।
df['column_name'] = df['column_name'].apply(np.log1p)
- Imputation (Substitute with Mean/Median):
কখনও কখনও আউটলায়ারগুলিকে mean বা median দ্বারা প্রতিস্থাপন করা যেতে পারে। তবে এটি ব্যবহার করার সময় মডেলের পারফরম্যান্স পরীক্ষা করা উচিত।
median = df['column_name'].median() df['column_name'] = df['column_name'].apply(lambda x: median if x > threshold else x)
- Model-based Methods:
- কিছু মডেল, যেমন Robust Regression বা Decision Trees, আউটলায়ারগুলির প্রতি কম সংবেদনশীল। এই ধরনের মডেল আউটলায়ারগুলির প্রভাব কমাতে সাহায্য করতে পারে।
সারাংশ:
- Outliers হল এমন ডেটা পয়েন্ট যা সাধারণত অন্যান্য ডেটার তুলনায় অনেক বেশি বিচ্যুত থাকে এবং এটি মডেলের পারফরম্যান্স এবং অনুমানের উপর নেতিবাচক প্রভাব ফেলতে পারে।
- আউটলায়ার চিহ্নিত করার জন্য Box Plot, Z-score, এবং IQR পদ্ধতি ব্যবহার করা যেতে পারে।
- আউটলায়ারের সমাধান হিসেবে outliers বাদ দেওয়া, capping/flooring, log transformation, mean/median imputation এবং model-based methods ব্যবহার করা যেতে পারে।
আউটলায়ার নিয়ন্ত্রণ মডেলের সঠিকতা এবং জেনারালাইজেশন ক্ষমতা বাড়ানোর জন্য গুরুত্বপূর্ণ।
Read more