Feature Scaling হল মেশিন লার্নিং-এর একটি গুরুত্বপূর্ণ প্রক্রিয়া যা ডেটার বৈশিষ্ট্যগুলিকে একটি সাধারণ স্কেলে আনার জন্য ব্যবহৃত হয়, যাতে মডেলটি সঠিকভাবে শিখতে পারে এবং দ্রুত কনভার্জ করতে পারে। Normalization এবং Standardization হল দুটি জনপ্রিয় পদ্ধতি যা ফিচার স্কেলিং করতে ব্যবহৃত হয়। এই দুটি পদ্ধতি বৈশিষ্ট্যের স্কেল বা পরিসীমা পরিবর্তন করে, যাতে মেশিন লার্নিং অ্যালগরিদমগুলি আরও কার্যকরভাবে কাজ করতে পারে।
১. Normalization (Min-Max Scaling)
Normalization বা Min-Max Scaling হল একটি স্কেলিং পদ্ধতি যেখানে ডেটার সমস্ত ফিচারের মানকে একটি নির্দিষ্ট পরিসীমায় রূপান্তরিত করা হয়, সাধারণত [0, 1] এর মধ্যে। এর মাধ্যমে, ডেটার বিভিন্ন বৈশিষ্ট্যের মান একে অপরের তুলনায় সমান স্কেলে চলে আসে।
ফর্মুলা:
Normalization এর জন্য সাধারণত ব্যবহৃত ফর্মুলা:
এখানে:
- হল মূল বৈশিষ্ট্যের মান,
- এবং হল বৈশিষ্ট্যের সর্বনিম্ন এবং সর্বোচ্চ মান।
বৈশিষ্ট্য:
- স্কেল [0, 1]: ডেটা 0 এবং 1 এর মধ্যে স্কেল করা হয়।
- কাজের ক্ষেত্র: যখন ডেটার মান একটি নির্দিষ্ট পরিসীমার মধ্যে সীমাবদ্ধ রাখা দরকার।
ইনস্টলেশন:
pip install scikit-learn
ব্যবহার উদাহরণ:
from sklearn.preprocessing import MinMaxScaler
import numpy as np
# ডেটা তৈরি করা
data = np.array([[10], [20], [30], [40], [50]])
# Min-Max Normalization
scaler = MinMaxScaler()
normalized_data = scaler.fit_transform(data)
print("Normalized Data:\n", normalized_data)
এটি ডেটার মানগুলিকে [0, 1] স্কেলে রূপান্তরিত করবে।
২. Standardization (Z-score Normalization)
Standardization বা Z-score normalization হল একটি পদ্ধতি যেখানে ডেটার মানকে গড় এবং স্ট্যান্ডার্ড ডেভিয়েশন ব্যবহার করে স্কেল করা হয়, যাতে ডেটার নতুন মানের গড় 0 এবং স্ট্যান্ডার্ড ডেভিয়েশন 1 হয়।
ফর্মুলা:
Standardization এর জন্য সাধারণত ব্যবহৃত ফর্মুলা:
এখানে:
- হল মূল বৈশিষ্ট্যের মান,
- হল বৈশিষ্ট্যের গড়,
- হল বৈশিষ্ট্যের স্ট্যান্ডার্ড ডেভিয়েশন।
বৈশিষ্ট্য:
- গড় 0 এবং স্ট্যান্ডার্ড ডেভিয়েশন 1: ডেটা গড় 0 এবং স্ট্যান্ডার্ড ডেভিয়েশন 1 এর মধ্যে থাকে।
- কাজের ক্ষেত্র: যখন ডেটা বিভিন্ন স্কেলে থাকে এবং দূরত্বের ভিত্তিতে অ্যালগরিদম যেমন কিমপ্লেক্স কনভার্জেন্স (k-NN, SVM) বা রিগ্রেশন অ্যালগরিদমে ব্যবহৃত হয়।
ইনস্টলেশন:
pip install scikit-learn
ব্যবহার উদাহরণ:
from sklearn.preprocessing import StandardScaler
import numpy as np
# ডেটা তৈরি করা
data = np.array([[10], [20], [30], [40], [50]])
# Standardization (Z-score Normalization)
scaler = StandardScaler()
standardized_data = scaler.fit_transform(data)
print("Standardized Data:\n", standardized_data)
এটি ডেটার মানগুলিকে গড় 0 এবং স্ট্যান্ডার্ড ডেভিয়েশন 1 এর মধ্যে রূপান্তরিত করবে।
কোন পদ্ধতি কখন ব্যবহার করবেন?
- Normalization:
- যখন ডেটার মান একে অপরের তুলনায় বড় বা ছোট নয়, অর্থাৎ স্কেল বড় বা ছোট হতে পারে।
- যখন আমরা ডেটার স্কেল বা পরিসীমা নির্দিষ্ট করতে চাই, যেমন [0, 1]।
- এই পদ্ধতি বিশেষভাবে উপযোগী যখন মডেলগুলির মধ্যে দূরত্ব বা নিকটতা হিসাব করা হয়, যেমন k-NN বা Neural Networks।
- Standardization:
- যখন ডেটার গড় বা মান মাঝেমধ্যে বড় হতে পারে এবং Gaussian distribution (নরমাল ডিস্ট্রিবিউশন) এর ওপর ভিত্তি করে কাজ করতে চাই।
- যখন মডেলগুলো গড় এবং স্ট্যান্ডার্ড ডেভিয়েশন ব্যবহার করে (যেমন Linear Regression, Logistic Regression, SVM, PCA ইত্যাদি)।
- যখন আউটলিয়ার (outliers) ডেটা থাকে এবং তারা প্রভাব ফেলতে পারে না, তখন Standardization বেছে নেওয়া ভাল।
সারাংশ
- Normalization: এটি ডেটার মান [0, 1] পরিসীমায় স্কেল করে, যা বিশেষত অ্যালগরিদম যেমন k-NN এবং Neural Networks এর জন্য উপযুক্ত।
- Standardization: এটি ডেটার গড় 0 এবং স্ট্যান্ডার্ড ডেভিয়েশন 1 করে, যা Linear Regression, Logistic Regression, SVM ইত্যাদির জন্য উপযুক্ত।
মেশিন লার্নিং মডেলগুলির কার্যকারিতা এবং কনভার্জেন্সের জন্য feature scaling অত্যন্ত গুরুত্বপূর্ণ।
Read more