কম্পিউটার টিউটোরিয়াল

পাইথন - ফিচার স্কেলিং: কেন, কীভাবে এবং কখন প্রয়োগ করবেন

ফিচার স্কেলিং (Feature Scaling) হলো ডেটা প্রিপ্রসেসিং-এর একটি গুরুত্বপূর্ণ ধাপ যেখানে ইনডিপেন্ডেন্ট ভেরিয়েবলগুলোকে একটি নির্দিষ্ট রেঞ্জে নিয়ে আসা হয়। মেশিন লার্নিং এলগরিদমগুলো সঠিকভাবে কাজ করার জন্য এটি প্রায়শই আবশ্যক।

কেন স্কেলিং প্রয়োজন? (Why Scaling?)

আপনার ডেটাসেটে ফিচারগুলো প্রায়শই ভিন্ন ভিন্ন ম্যাগনিটিউড, ইউনিট এবং রেঞ্জে থাকে। উদাহরণস্বরূপ: Age: 0-100, Salary: 20,000-1,00,000, Height: 1.5-2.0 মিটার।

বেশিরভাগ ML অ্যালগরিদম (KNN, SVM, Linear Regression, Neural Networks, PCA, K-Means) ইউক্লিডিয়ান ডিস্ট্যান্স বা গ্রেডিয়েন্ট ডিসেন্ট ব্যবহার করে। যদি ফিচারগুলো স্কেল করা না থাকে, তবে বড় ম্যাগনিটিউডের ফিচার ডোমিনেট করবে এবং মডেল ভুল শিখবে।

উদাহরণ: 5kg এবং 5000g একই জিনিস, কিন্তু আনস্কেলড ডেটায় 5000, 5-এর চেয়ে ১০০০ গুন বড় দেখাবে। মডেল ভুলভাবে weight-কে important মानेगा।

স্কেলিং পদ্ধতিগুলো (How to Scale)

১. স্ট্যান্ডার্ডাইজেশন (Standardization / Z-Score Normalization)

ফিচারকে মিন ০ এবং স্ট্যান্ডার্ড ডেভিয়েশন ১-এ রূপান্তর করে।

$$x' = \frac{x - \mu}{\sigma}$$

from sklearn.preprocessing import StandardScaler

scaler = StandardScaler()
X_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)  # শুধু transform, fit নয়!
  • আউটপুট রেঞ্জ: প্রায় -3 থেকে +3 (নরমাল ডিস্ট্রিবিউশনের জন্য)
  • আউটলায়ারের প্রভাব কম পায় (Mean/Std রবাস্ট নয়)
  • PCA, LDA, Linear Regression, Logistic Regression, Neural Networks-এর জন্য আদর্শ

২. মিন-ম্যাক্স স্কেলিং (Min-Max Scaling / Normalization)

ফিচারকে [0, 1] রেঞ্জে নিয়ে আসে।

$$x' = \frac{x - \min(x)}{\max(x) - \min(x)}$$

from sklearn.preprocessing import MinMaxScaler

scaler = MinMaxScaler()
X_scaled = scaler.fit_transform(X_train)
  • আউটপুট রেঞ্জ: নির্দিষ্ট [0, 1]
  • আউটলায়ারের দ্বারা ভাবিত হয় (Min/Max সংবেদনশীল)
  • ইমেজ প্রসেসিং (পিক্সেল 0-255), Neural Networks (sigmoid/tanh এক্টিভেশন) জন্য আদর্শ

৩. রবাস্ট স্কেলিং (Robust Scaling)

মিডিয়ান এবং IQR (Interquartile Range) ব্যবহার করে—আউটলায়ার রবাস্ট।

$$x' = \frac{x - \text{median}}{\text{IQR}}$$

from sklearn.preprocessing import RobustScaler

scaler = RobustScaler()
X_scaled = scaler.fit_transform(X_train)
  • আউটলায়ার আছে থাকলে সেরা পছন্দ
  • মিডিয়ান এবং IQR আউটলায়ারের দ্বারা প্রভাবিত হয় না

৪. ম্যাক্স-অ্যাব্স স্কেলিং (MaxAbs Scaling)

প্রতিটি ফিচারকে তার সর্বোচ্চ পরম মান দিয়ে ভাগ করে। [-1, 1] রেঞ্জে আনে।

from sklearn.preprocessing import MaxAbsScaler

scaler = MaxAbsScaler()
X_scaled = scaler.fit_transform(X_train)
  • স্পার্স ম্যাট্রিক্সের জন্য উপযোগী (০ ভ্যালু সংরক্ষিত থাকে)
  • একই স্পার্সিটি রক্ষা করে

কখন স্কেলিং করবেন? (When to Scale)

গুরুত্বপূর্ণ নিয়ম: Data Leakage এড়ান

# ❌ ভুল: পুরো ডেটাসেটে fit করলেই লিকেজ
scaler.fit(X)  # টেস্ট ডেটাও ব্যবহার হয়েছে!
X_scaled = scaler.transform(X)

# ✅ সঠিক: শুধু ট্রেনিং ডেটায় fit, টেস্টে transform
scaler.fit(X_train)
X_train_scaled = scaler.transform(X_train)
X_test_scaled = scaler.transform(X_test)  # একই স্কেলার!

পাইপলাইন ব্যবহার (Best Practice)

from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression

pipeline = Pipeline([
    ('scaler', StandardScaler()),
    ('model', LogisticRegression())
])

pipeline.fit(X_train, y_train)
score = pipeline.score(X_test, y_test)
# ক্রস-ভ্যালিডেশনে ও লিকেজ নেই
from sklearn.model_selection import cross_val_score
scores = cross_val_score(pipeline, X, y, cv=5)

সারসংক্ষেপ

  • দূরত্ব-ভিত্তিক/গ্রেডিয়েন্ট-ভিত্তিক অ্যালগরিদম: অবশ্যই স্কেল করুন (StandardScaler ডিফল্ট চয়েস)।
  • ট্রি-ভিত্তিক অ্যালগরিদম: স্কেলিং প্রয়োজন নেই।
  • আউটলায়ার আছে: RobustScaler ব্যবহার করুন।
  • স্পার্স ডেটা: MaxAbsScaler ব্যবহার করুন।
  • ইমেজ/নিউরাল নেট (sigmoid/tanh): MinMaxScaler [0,1] ব্যবহার করুন।
  • সবসময় Pipeline ব্যবহার করুন ডেটা লিকেজ এড়াতে।
  1. উইন্ডোজ ১০ এপ্রিল ২০১৮ আপডেট: নতুন ফিচার ও ব্যবহার পদ্ধতি

  2. পাইথন ফাংশন হ্যাশেবল কেন এবং কীভাবে?

  3. পাইথনে *args এবং **kwargs ব্যবহার

  4. পাইথন ভেরিয়েবল মাস্টার করুন: ডিক্লেয়ার ও ব্যবহার করার প্রফেশনাল গাইড

কপিরাইট © https://bd.wsxdn.com সমস্ত অধিকার সংরক্ষিত
অ্যালগরিদমস্কেলিং প্রয়োজন?কারণসুপারিশকৃত স্কেলার
K-Nearest Neighbors (KNN)✅ হ্যাঁইউক্লিডিয়ান ডিস্ট্যান্স ব্যবহার করেStandardScaler / MinMaxScaler
Support Vector Machine (SVM)✅ হ্যাঁমার্জিন ডিস্ট্যান্স-ভিত্তিকStandardScaler
Linear/Logistic Regression✅ হ্যাঁগ্রেডিয়েন্ট ডিসেন্ট কনভারজেন্স দ্রুত হয়StandardScaler
Neural Networks✅ হ্যাঁওয়েইট আপডেট স্ট্যাবিলিটিStandardScaler / MinMaxScaler
PCA✅ হ্যাঁভ্যারিয়েন্স বড় ফিচার ডোমিনেট করেStandardScaler
K-Means Clustering✅ হ্যাঁসেন্ট্রয়েড ডিস্ট্যান্স-ভিত্তিকStandardScaler
Decision Trees❌ নাস্প্লিট পয়েন্ট ভ্যালু-ভিত্তিক, স্কেল সাপেক্ষ নয়প্রয়োজন নেই
Random Forest❌ নাট্রি-ভিত্তিক, স্কেল ইনভারিয়েন্টপ্রয়োজন নেই
XGBoost/LightGBM❌ নাট্রি-ভিত্তিকপ্রয়োজন নেই (কিন্তু কোনো ক্ষতিও নেই)
Naive Bayes❌ সাধারণত নাপ্রোবাবিলিস্টিক, ফিচার স্বাধীনতা অনুমানপ্রয়োজন নেই