ডেটা প্রি-প্রসেসিং হল মেশিন লার্নিং এবং ডিপ লার্নিং মডেল তৈরির একটি গুরুত্বপূর্ণ প্রথম পদক্ষেপ। এটি এমন একটি প্রক্রিয়া যা কাঁচা (raw) ডেটাকে আরও পরিশুদ্ধ এবং মডেলের জন্য প্রস্তুত করার জন্য বিভিন্ন টেকনিক এবং পদ্ধতি ব্যবহার করে। সঠিকভাবে ডেটা প্রি-প্রসেসিং করা হলে মডেলের কার্যকারিতা এবং পারফরম্যান্স উন্নত হয়।
ডেটা প্রি-প্রসেসিং-এর মূল উদ্দেশ্য হল:
- ডেটার অসামঞ্জস্যতা দূর করা,
- অনুপস্থিত মান পূর্ণ করা,
- আউটলার (outliers) পরিচালনা করা,
- এবং ডেটার রূপ পরিবর্তন করা, যাতে এটি মডেল ট্রেনিংয়ের জন্য উপযুক্ত হয়।
ডেটা প্রি-প্রসেসিং-এর প্রধান পদক্ষেপগুলো:
১. ডেটার রিডিং (Data Reading):
- প্রথমে কাঁচা ডেটা থেকে তথ্য পড়তে হবে, যা বিভিন্ন ফরম্যাটে (যেমন CSV, Excel, JSON, বা SQL ডেটাবেস) হতে পারে।
উদাহরণ:
import pandas as pd data = pd.read_csv('data.csv')
২. অনুপস্থিত মান (Missing Data):
- অনেক সময় ডেটাসেটে কিছু অনুপস্থিত মান (missing values) থাকতে পারে। এটি ডেটা প্রি-প্রসেসিং এর একটি সাধারণ সমস্যা।
- অনুপস্থিত মান পূর্ণ করার জন্য দুটি সাধারণ পদ্ধতি:
- অ্যাসিগনিং মিডিয়ান, মুড বা মীন: একটি ফিচারের জন্য (যেমন, গড় বা মধ্যমান) অনুপস্থিত মানগুলি পূর্ণ করা।
- ড্রপ করা (Drop): যদি খুব বেশি অনুপস্থিত মান থাকে, তবে সেগুলি ড্রপ করা যেতে পারে।
উদাহরণ:
data.fillna(data.mean(), inplace=True) # মিডিয়ান, মুড বা মীন দিয়ে পূর্ণ করা # অথবা data.dropna(inplace=True) # অনুপস্থিত মান ড্রপ করা
৩. ডেটার স্কেলিং (Data Scaling):
- অনেক সময় ডেটার বিভিন্ন ফিচার বিভিন্ন স্কেলে থাকতে পারে। একে সাধারণত ফিচার স্কেলিং বা নরমালাইজেশন বলা হয়।
- এটি মডেলকে দ্রুত শিখতে এবং আরও ভালো পারফরম্যান্স দিতে সাহায্য করে। দুইটি সাধারণ স্কেলিং পদ্ধতি:
- Min-Max স্কেলিং: সমস্ত ভ্যালুকে ০ এবং ১ এর মধ্যে রূপান্তর করা।
- Standardization: ডেটাকে গড় ০ এবং স্ট্যান্ডার্ড ডেভিয়েশন ১ এর সাথে রূপান্তর করা।
উদাহরণ:
from sklearn.preprocessing import StandardScaler scaler = StandardScaler() data_scaled = scaler.fit_transform(data)
৪. ক্যাটেগোরিকাল ডেটা এনকোডিং (Categorical Data Encoding):
- যদি ডেটাতে ক্যাটেগোরিকাল ফিচার থাকে (যেমন লিঙ্গ, শহর, বা দেশ), তবে সেই ডেটাকে সংখ্যা হিসেবে রূপান্তর করতে হবে, কারণ মেশিন লার্নিং মডেলগুলি সংখ্যাগত ডেটার সাথে কাজ করে।
- দুটি সাধারণ পদ্ধতি:
- Label Encoding: ক্যাটেগোরি গুলিকে সংখ্যায় রূপান্তর করা।
- One-Hot Encoding: প্রতিটি ক্যাটেগরি জন্য একটি নতুন কলাম তৈরি করে এবং প্রতিটি সেলের মধ্যে ০ বা ১ ব্যবহার করা।
উদাহরণ:
from sklearn.preprocessing import LabelEncoder labelencoder = LabelEncoder() data['Category'] = labelencoder.fit_transform(data['Category']) # One-Hot Encoding data = pd.get_dummies(data, columns=['Category'])
৫. আউটলার (Outliers) ম্যানেজমেন্ট:
- ডেটাতে কিছু আউটলার (outliers) থাকতে পারে, যা ডেটার জন্য অস্বাভাবিক বা ব্যতিক্রমী। আউটলার মডেলের পারফরম্যান্সে নেতিবাচক প্রভাব ফেলতে পারে।
- আউটলার হ্যান্ডেল করার কিছু পদ্ধতি:
- ট্রিমিং (Trimming): আউটলারগুলিকে ড্রপ করা।
- ক্লিপিং (Clipping): আউটলারগুলিকে একটি নির্দিষ্ট সীমার মধ্যে সেট করা।
উদাহরণ:
# আউটলার ক্লিপিং data['column'] = data['column'].clip(lower=lower_limit, upper=upper_limit)
৬. ডেটা পার্টিশনিং (Data Partitioning):
- ডেটাকে সাধারণত দুটি ভাগে ভাগ করা হয়:
- ট্রেনিং ডেটা (Training Data): এটি মডেল প্রশিক্ষণের জন্য ব্যবহৃত হয়।
- টেস্ট ডেটা (Test Data): এটি মডেল যাচাই করতে ব্যবহৃত হয়।
- ডেটা পার্টিশন করতে
train_test_splitফাংশন ব্যবহার করা হয়। উদাহরণ:
from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
৭. ডেটা ট্রান্সফরমেশন (Data Transformation):
- কখনও কখনও ডেটাকে নতুন বৈশিষ্ট্য তৈরি বা পরিবর্তন করতে হতে পারে, যেমন লগ ট্রান্সফরমেশন, পলিনোমিয়াল ট্রান্সফরমেশন, ইত্যাদি।
উদাহরণ:
import numpy as np data['log_column'] = np.log(data['column'] + 1)
ডেটা প্রি-প্রসেসিং এর গুরুত্ব:
- মডেল পারফরম্যান্স বৃদ্ধি:
- সঠিকভাবে প্রি-প্রসেসড ডেটা মডেলকে দ্রুত এবং সঠিকভাবে শিখতে সাহায্য করে। এটি মডেলের পারফরম্যান্স উন্নত করে।
- ডেটার সামঞ্জস্যতা নিশ্চিতকরণ:
- বিভিন্ন ডেটার স্কেল এবং ফরম্যাট একসাথে মিলে কাজ করার জন্য প্রি-প্রসেসিং অপরিহার্য।
- অনুপস্থিত মান এবং আউটলার সমাধান:
- ডেটার মধ্যে অনুপস্থিত মান এবং আউটলারগুলি থাকলে মডেলের কার্যকারিতা নষ্ট হতে পারে। সঠিকভাবে তাদের পরিচালনা করা গুরুত্বপূর্ণ।
সারাংশ:
ডেটা প্রি-প্রসেসিং একটি গুরুত্বপূর্ণ পদক্ষেপ যা ডেটাকে বিশুদ্ধ, সম্পূর্ণ এবং মডেল ট্রেনিংয়ের জন্য উপযুক্ত করে তোলে। সঠিক প্রি-প্রসেসিংয়ের মাধ্যমে ডেটার গুণমান বৃদ্ধি পায়, যা মডেলের কার্যকারিতা এবং আউটপুট আরও নির্ভুল করে তোলে।
ডেটা প্রি-প্রসেসিং (Data Preprocessing) হল মেশিন লার্নিং এবং ডিপ লার্নিং মডেল তৈরি করার প্রাথমিক এবং গুরুত্বপূর্ণ ধাপ। এটি ডেটাকে প্রস্তুত করার একটি প্রক্রিয়া, যাতে মডেল ডেটা থেকে কার্যকরভাবে শিখতে পারে এবং ভাল ফলাফল প্রদান করতে পারে। ডেটা প্রি-প্রসেসিং ছাড়া, মডেলের পারফরম্যান্স খারাপ হতে পারে বা ভুল ফলাফল তৈরি করতে পারে। নিচে ডেটা প্রি-প্রসেসিং এর প্রয়োজনীয়তা বিস্তারিতভাবে আলোচনা করা হয়েছে:
১. ডেটার গুণগত মান বৃদ্ধি করা (Improving Data Quality):
- ডেটা প্রি-প্রসেসিং এর মাধ্যমে ডেটার গুণগত মান বৃদ্ধি করা হয়। আসল ডেটাতে অনেক সময় missing values (অনুপস্থিত মান), noisy data (অস্বচ্ছ বা অস্পষ্ট তথ্য) বা duplicate entries (অযাচিত কপি) থাকতে পারে।
- এই সমস্যাগুলি সমাধান করা হলে ডেটার গুণগত মান বৃদ্ধি পায় এবং মডেল প্রশিক্ষণের সময় এই সমস্যা দ্বারা পারফরম্যান্স ক্ষতিগ্রস্ত হয় না।
২. মডেল ট্রেনিংয়ের জন্য উপযুক্ত ডেটা তৈরি করা (Preparing Data for Model Training):
- মডেলটি সঠিকভাবে কাজ করতে পারে, এজন্য প্রয়োজন উপযুক্ত ডেটা। ডেটা প্রি-প্রসেসিং মডেল প্রশিক্ষণের জন্য ডেটাকে পরিষ্কার এবং উপযুক্ত করে তোলে।
- উদাহরণস্বরূপ, বিভিন্ন ধরনের স্ট্যান্ডার্ডাইজেশন (Standardization) বা নরমালাইজেশন (Normalization) পদ্ধতির মাধ্যমে ডেটা একক স্কেলে আনা হয়, যাতে মডেলটি আরও কার্যকরভাবে কাজ করতে পারে।
৩. ভুল তথ্য বা মিসিং ভ্যালু (Handling Missing or Incorrect Data):
- অনেক সময় ডেটাতে missing values থাকতে পারে, যেমন কোনও বৈশিষ্ট্য মিসিং বা ভুল তথ্য দেয়া। মডেল এই ধরনের ডেটা থেকে সঠিকভাবে শিখতে পারবে না।
- ডেটা প্রি-প্রসেসিং-এর মাধ্যমে missing values পূর্ণ করতে, ডেটার ধরণ অনুসারে সঠিক মান ব্যবহার করা হয় (যেমন, গড় মান, মধ্যম মান বা পূর্ববর্তী/পরবর্তী মানের উপর ভিত্তি করে)।
৪. ডেটার অপ্রয়োজনীয় বৈশিষ্ট্য (Removing Irrelevant Features):
- অনেক সময় ডেটাতে অপ্রয়োজনীয় বা irrelevant features থাকতে পারে যা মডেলের সঠিক পারফরম্যান্সে বাধা সৃষ্টি করে।
- যেমন কিছু বৈশিষ্ট্য মডেলের জন্য সাহায্যকারী না হতে পারে এবং এতে Overfitting বা Underfitting হতে পারে।
- ডেটা প্রি-প্রসেসিংয়ের মাধ্যমে এই ধরনের বৈশিষ্ট্য সরিয়ে ফেলা হয়।
৫. একক স্কেলে ডেটা আনা (Scaling and Normalization):
- ডেটার বিভিন্ন বৈশিষ্ট্য যদি বিভিন্ন স্কেলে থাকে, তবে মডেল প্রশিক্ষণের সময় কিছু বৈশিষ্ট্য বেশি প্রভাব ফেলতে পারে।
- যেমন, উচ্চ মানের বৈশিষ্ট্যগুলো কম মানের বৈশিষ্ট্যের চেয়ে বেশি গুরুত্ব পায়।
- ডেটা প্রি-প্রসেসিংয়ের মাধ্যমে স্কেলিং (যেমন, Min-Max স্কেলিং) বা নরমালাইজেশন করা হয়, যাতে সমস্ত বৈশিষ্ট্য একই স্কেলে থাকে এবং মডেল নিরপেক্ষভাবে প্রতিটি বৈশিষ্ট্যকে মূল্যায়ন করতে পারে।
৬. ক্যাটাগরিকাল ডেটার ইনকোডিং (Encoding Categorical Data):
- ক্যাটাগরিকাল ডেটা (যেমন, শহরের নাম, রঙের নাম, লিঙ্গ ইত্যাদি) সরাসরি মডেলে ব্যবহার করা যায় না কারণ মেশিন লার্নিং মডেল সাধারণত সংখ্যার সাথে কাজ করে।
- ডেটা প্রি-প্রসেসিংয়ের মাধ্যমে এই ক্যাটাগরিকাল ডেটাকে One-Hot Encoding বা Label Encoding এর মাধ্যমে সংখ্যায় রূপান্তর করা হয়, যাতে মডেল ডেটা শিখতে পারে।
৭. আউটলার্স হ্যান্ডলিং (Handling Outliers):
- আউটলার্স (Outliers) হল ডেটার এমন কিছু মান যা অন্য সাধারণ মান থেকে খুব দূরে থাকে। আউটলার্স মডেলকে বিভ্রান্ত করতে পারে এবং মডেলের পারফরম্যান্স কমিয়ে দিতে পারে।
- ডেটা প্রি-প্রসেসিংয়ের মাধ্যমে আউটলার্স সনাক্ত করে, তাদের অপসারণ বা সংশোধন করা হয়।
৮. ডেটার বিভিন্ন ধরনের রূপান্তর (Feature Engineering):
- প্রায়শই ডেটা প্রি-প্রসেসিংয়ের সময় নতুন বৈশিষ্ট্য তৈরি করা হয়, যেগুলি মডেলের জন্য বেশি কার্যকরী হতে পারে। এটিকে Feature Engineering বলা হয়।
- উদাহরণস্বরূপ, সময়সীমা সম্পর্কিত ডেটার ক্ষেত্রে নতুন বৈশিষ্ট্য তৈরি করা যেতে পারে, যেমন "দিনের সাপ্তাহিক দিন" বা "মাসের সংখ্যার ভিত্তিতে বৈশিষ্ট্য তৈরি করা"।
৯. মডেল পারফরম্যান্সের উন্নতি (Improving Model Performance):
- ডেটা প্রি-প্রসেসিং মডেলের পারফরম্যান্স এবং সঠিকতা বাড়াতে সাহায্য করে। এটি ডেটার সাথে সামঞ্জস্যপূর্ণ এবং কার্যকরী প্যাটার্নগুলো মডেল থেকে বের করতে সহায়ক।
- সঠিকভাবে প্রি-প্রসেসড ডেটা, মডেলের ট্রেনিংয়ের সময় কম সময় নেয় এবং বেশি সঠিক ফলাফল তৈরি করে।
১০. মডেল সাধারণীকরণ (Generalization):
- ডেটা প্রি-প্রসেসিং overfitting (অত্যধিক প্রশিক্ষণ, যেখানে মডেল ট্রেনিং ডেটার জন্য অত্যন্ত বিশেষীকৃত হয়) কমাতে সাহায্য করে।
- নরমালাইজেশন, স্ট্যান্ডার্ডাইজেশন এবং ক্রস ভ্যালিডেশন পদ্ধতির মাধ্যমে মডেলটি generalize হতে সক্ষম হয়, যাতে এটি নতুন, অজানা ডেটাতেও ভালো পারফরম্যান্স প্রদর্শন করতে পারে।
সারাংশ:
ডেটা প্রি-প্রসেসিং হল ডেটাকে মডেল প্রশিক্ষণের জন্য প্রস্তুত করার প্রাথমিক এবং অপরিহার্য ধাপ। এর মাধ্যমে ডেটার গুণগত মান বৃদ্ধি, অপ্রয়োজনীয় বৈশিষ্ট্য সরানো, মিসিং ভ্যালু এবং আউটলার্স হ্যান্ডলিং, এবং বৈশিষ্ট্য তৈরির কাজ করা হয়। সঠিকভাবে ডেটা প্রি-প্রসেসিং করলে মডেল দ্রুত এবং সঠিকভাবে শিখতে পারে, এবং পারফরম্যান্স উন্নত হয়।
ডেটা নরমালাইজেশন (Normalization) এবং ডেটা স্ট্যান্ডার্ডাইজেশন (Standardization) হল ডেটা প্রিপ্রসেসিংয়ের দুটি জনপ্রিয় পদ্ধতি, যা মেশিন লার্নিং এবং ডিপ লার্নিং মডেলগুলির কার্যকারিতা বাড়ানোর জন্য ব্যবহৃত হয়। উভয় পদ্ধতির মূল উদ্দেশ্য হল মডেলটি ডেটাকে আরও কার্যকরভাবে শিখতে সক্ষম করতে, তবে এগুলোর প্রক্রিয়া এবং ব্যবহার ভিন্ন।
১. ডেটা Normalization (নরমালাইজেশন):
Normalization হল একটি প্রক্রিয়া যার মাধ্যমে ডেটার পরিসর (range) একটি নির্দিষ্ট সীমার মধ্যে নিয়ে আসা হয়, সাধারণত [0, 1] বা [-1, 1] পরিসরে।
কিভাবে কাজ করে:
নরমালাইজেশন সাধারণত Min-Max স্কেলিং পদ্ধতির মাধ্যমে করা হয়, যেখানে একটি ফিচারের সমস্ত মানকে তার সর্বনিম্ন এবং সর্বোচ্চ মানের মধ্যে স্কেল করা হয়।
নরমালাইজেশন সূত্র:
- X: বর্তমান মান
- X_min: ফিচারের সর্বনিম্ন মান
- X_max: ফিচারের সর্বোচ্চ মান
উদাহরণ:
ধরা যাক, একটি ফিচারের মান [10, 20, 30, 40, 50]। এখানে,
- X_min = 10
- X_max = 50
এখন, যদি 30 মানটির নরমালাইজেশন করতে হয়, তবে:
কখন Normalization ব্যবহার করবেন:
- যখন আপনার ডেটা বিভিন্ন স্কেলে থাকে, যেমন কিছু ফিচার 0 থেকে 1 এর মধ্যে এবং কিছু ফিচার হাজার হাজারের মধ্যে থাকে।
- মেশিন লার্নিং অ্যালগরিদম যেমন K-nearest neighbors (KNN), Support Vector Machine (SVM), এবং Neural Networks নরমালাইজড ডেটাতে ভাল কাজ করে, কারণ এই অ্যালগরিদমগুলি দূরত্ব (distance) বা স্কেল-ভিত্তিক অপারেশন করে।
২. ডেটা Standardization (স্ট্যান্ডার্ডাইজেশন):
Standardization হল একটি প্রক্রিয়া যার মাধ্যমে ডেটার মানকে গড় (mean) ০ এবং মানক বিচ্যুতি (standard deviation) ১-এ রূপান্তর করা হয়। এটি ডেটাকে একটি নতুন স্কেলে স্থানান্তর করে যা গড় থেকে বিচ্যুতি এবং স্কেলিংয়ের পার্থক্য কমায়।
কিভাবে কাজ করে:
স্ট্যান্ডার্ডাইজেশন সাধারণত Z-score normalization নামে পরিচিত, যেখানে প্রতিটি মানের থেকে গড় (mean) বিয়োগ করা হয় এবং মানক বিচ্যুতি (standard deviation) দ্বারা ভাগ করা হয়।
স্ট্যান্ডার্ডাইজেশন সূত্র:
- X: বর্তমান মান
- μ (mean): ফিচারের গড় মান
- σ (standard deviation): ফিচারের মানক বিচ্যুতি
উদাহরণ:
ধরা যাক, একটি ফিচারের মান [10, 20, 30, 40, 50] এবং এর গড় μ = 30 এবং মানক বিচ্যুতি σ = 15।
এখন, যদি 30 মানটির স্ট্যান্ডার্ডাইজেশন করতে হয়, তাহলে:
কখন Standardization ব্যবহার করবেন:
- যখন আপনার ডেটা গড়ের চারপাশে কেন্দ্রীভূত থাকে এবং আপনার ডেটার স্কেল একরকম হয় না।
- Linear Regression, Logistic Regression, SVM, এবং PCA (Principal Component Analysis) মডেলগুলিতে স্ট্যান্ডার্ডাইজড ডেটা প্রয়োজন, কারণ এই অ্যালগরিদমগুলি গড় এবং বিচ্যুতি নিয়ে কাজ করে।
Normalization এবং Standardization এর মধ্যে পার্থক্য:
| বৈশিষ্ট্য | Normalization | Standardization |
|---|---|---|
| প্রক্রিয়া | Min-Max স্কেলিং (0 থেকে 1 বা -1 থেকে 1)। | গড় (mean) ০ এবং মানক বিচ্যুতি (standard deviation) ১। |
| ফর্মুলা | ||
| ডেটা স্কেল | সীমিত [0, 1] বা [-1, 1] পরিসরে স্কেল করা হয়। | গড় ০ এবং মানক বিচ্যুতি ১ থাকে। |
| কখন ব্যবহার করবেন | যখন ডেটা বিভিন্ন পরিসরে থাকে এবং স্কেলিং করতে হয়। | যখন ডেটা গড়ের চারপাশে কেন্দ্রীভূত থাকে এবং মানক বিচ্যুতি প্রয়োজন। |
| ফলস্বরূপ | মানগুলি একটি নির্দিষ্ট পরিসরে থাকে। | মানগুলি গড়ের চারপাশে কেন্দ্রীভূত হয়। |
| যতটা ব্যাপকভাবে ব্যবহৃত হয় | KNN, Neural Networks, SVM-এর মতো দূরত্বভিত্তিক অ্যালগরিদমে বেশি ব্যবহৃত হয়। | লিনিয়ার অ্যালগরিদম (যেমন, লিনিয়ার রিগ্রেশন, PCA) এবং গড় ও বিচ্যুতি নিয়ে কাজ করা অ্যালগরিদমে বেশি ব্যবহৃত হয়। |
সারাংশ:
- Normalization ডেটাকে একটি নির্দিষ্ট পরিসরে (0 থেকে 1 বা -1 থেকে 1) স্কেল করে, যা সাধারণত KNN এবং Neural Networks এর মতো দূরত্বভিত্তিক অ্যালগরিদমের জন্য উপকারী।
- Standardization ডেটাকে গড় ০ এবং মানক বিচ্যুতি ১-এ রূপান্তরিত করে, যা PCA, Linear Regression, এবং Logistic Regression এর মতো অ্যালগরিদমে ভাল কাজ করে।
Train, Validation, এবং Test Set হল মেশিন লার্নিং এবং ডিপ লার্নিং মডেল প্রশিক্ষণ এবং মূল্যায়নের জন্য ব্যবহৃত প্রধান ডেটাসেট। এই তিনটি সেট ব্যবহার করা হয় মডেলের অফারফিটিং (overfitting) এবং অনঅন্ডারফিটিং (underfitting) সমস্যাগুলি সমাধান করতে এবং মডেলের সাধারণীকরণ ক্ষমতা পরীক্ষা করতে।
১. Train Set (প্রশিক্ষণ সেট):
- Train set হল মূল ডেটাসেটের একটি অংশ যা মডেলকে প্রশিক্ষণ দিতে ব্যবহৃত হয়।
- এটি মডেলকে ইনপুট এবং আউটপুট সম্পর্ক শেখায়, যাতে মডেল ডেটা থেকে প্যাটার্ন শিখে ভবিষ্যতের জন্য সঠিক পূর্বাভাস দিতে পারে।
- সাধারণত, Train Set ডেটাসেটের 70%-80% অংশ নিয়ে থাকে।
২. Validation Set (ভ্যালিডেশন সেট):
- Validation set হল ডেটাসেটের একটি অংশ যা মডেলের হাইপারপ্যারামিটার (যেমন, লার্নিং রেট, নেটওয়ার্ক আর্কিটেকচার) টিউনিং করতে ব্যবহৃত হয়।
- এটি মডেলের অপারফিটিং এবং অনঅন্ডারফিটিং চেক করতে সহায়ক, কারণ এটি মডেল প্রশিক্ষণ প্রক্রিয়া থেকে আলাদা এবং মডেলের প্রকৃত পারফরম্যান্স পরিমাপ করতে সহায়ক।
- ভ্যালিডেশন সেট ব্যবহার করে মডেল টিউন করা হয়, কিন্তু এটি প্রশিক্ষণ ডেটাতে অন্তর্ভুক্ত করা হয় না।
- সাধারণত, Validation Set ডেটাসেটের 10%-15% অংশ নিয়ে থাকে।
৩. Test Set (টেস্ট সেট):
- Test set হল ডেটাসেটের একটি অংশ যা মডেল প্রশিক্ষণের পর তার পূর্ণাঙ্গ মূল্যায়ন করতে ব্যবহৃত হয়।
- এটি মডেলের সাধারণীকরণ ক্ষমতা পরীক্ষা করে, অর্থাৎ মডেলটি নতুন, অজানা ডেটার উপর কেমন পারফর্ম করে।
- Test Set প্রশিক্ষণ বা ভ্যালিডেশন সেটের অংশ নয় এবং একমাত্র এক্সপেরিমেন্টের শেষে এর মাধ্যমে মডেলটির সঠিকতা পরিমাপ করা হয়।
- সাধারণত, Test Set ডেটাসেটের 10%-15% অংশ নিয়ে থাকে।
Train, Validation, এবং Test Set ভাগ করার উপায়:
ডেটাসেটকে এই তিনটি সেটে ভাগ করার কিছু সাধারণ পদ্ধতি:
১. র্যান্ডম ডাটা স্প্লিট (Random Split):
- ডেটাসেটের একটি বড় অংশ র্যান্ডমভাবে প্রশিক্ষণ সেট, ভ্যালিডেশন সেট, এবং টেস্ট সেটে ভাগ করা হয়।
- উদাহরণস্বরূপ, 70% ডেটা প্রশিক্ষণ সেটে, 15% ডেটা ভ্যালিডেশন সেটে, এবং 15% ডেটা টেস্ট সেটে ভাগ করা হয়।
২. K-Fold Cross-Validation:
- এটি একটি উন্নত কৌশল যা কেবলমাত্র একটি Validation set ব্যবহৃত হতে দেয়, এবং ডেটাকে অংশে ভাগ করা হয়, যেখানে অংশ Train Set হিসেবে এবং 1 অংশ Validation Set হিসেবে ব্যবহৃত হয়।
- প্রতিটি ফোল্ডে মডেল ট্রেনিং এবং ভ্যালিডেশন হয় এবং শেষে পারফরম্যান্সের গড় পরিমাপ করা হয়।
- এটি মডেলটির সাধারণীকরণ ক্ষমতা উন্নত করে।
৩. Stratified Split:
- যদি ডেটাতে ভারসাম্যহীন শ্রেণী (class imbalance) থাকে (যেমন, এক শ্রেণীর উদাহরণ অন্য শ্রেণীর তুলনায় অনেক কম), তবে Stratified Split ব্যবহার করা হয়।
- এতে প্রতিটি শ্রেণী থেকে সমান অনুপাতের ডেটা নির্বাচন করা হয় প্রশিক্ষণ, ভ্যালিডেশন, এবং টেস্ট সেটে, যাতে প্রতিটি সেটে সব শ্রেণীর ডেটার সঠিক বিতরণ থাকে।
Python এ Train, Validation, এবং Test Set তৈরি:
উদাহরণ: Scikit-learn ব্যবহার করে
- ডেটা ইনপোর্ট এবং ডিভাইড করা:
from sklearn.model_selection import train_test_split
# উদাহরণস্বরূপ, X হল ফিচার (features), y হল লেবেল (labels)
X = data.drop('target', axis=1) # features
y = data['target'] # target labels
# প্রথমে Train ও Test সেট ভাগ করা হবে (80% Train, 20% Test)
X_train, X_temp, y_train, y_temp = train_test_split(X, y, test_size=0.2, random_state=42)
# এরপর, Test সেট থেকে Validation সেট তৈরি করা হবে (50% Train, 50% Validation)
X_val, X_test, y_val, y_test = train_test_split(X_temp, y_temp, test_size=0.5, random_state=42)
# Train, Validation, এবং Test সেট এখন প্রস্তুত।
- K-Fold Cross-Validation উদাহরণ:
from sklearn.model_selection import KFold
kf = KFold(n_splits=5, shuffle=True, random_state=42)
for train_index, val_index in kf.split(X):
X_train, X_val = X.iloc[train_index], X.iloc[val_index]
y_train, y_val = y.iloc[train_index], y.iloc[val_index]
# মডেল প্রশিক্ষণ এবং মূল্যায়ন কোড এখানে হবে।
সারাংশ:
- Train Set: মডেল প্রশিক্ষণের জন্য ব্যবহৃত ডেটা।
- Validation Set: মডেলের হাইপারপ্যারামিটার টিউনিং এবং অপটিমাইজেশনের জন্য ব্যবহৃত ডেটা।
- Test Set: মডেল মূল্যায়ন এবং বাস্তব পারফরম্যান্স পরীক্ষা করার জন্য ব্যবহৃত ডেটা।
ডেটাসেটকে সঠিকভাবে ভাগ করা এবং ভ্যালিডেশন সেটের মাধ্যমে মডেল মূল্যায়ন করা, মডেলের পারফরম্যান্স এবং সাধারণীকরণের জন্য অত্যন্ত গুরুত্বপূর্ণ।
One-Hot Encoding এবং Label Encoding দুটি জনপ্রিয় কৌশল যা ক্যাটেগোরিকাল (categorical) ডেটাকে নিউরাল নেটওয়ার্ক বা অন্য মেশিন লার্নিং মডেলগুলির জন্য প্রিপ্রসেস করতে ব্যবহৃত হয়। ক্যাটেগোরিকাল ডেটা, যেমন, লিঙ্গ (পুরুষ/মহিলা), শহর (ঢাকা, চট্টগ্রাম, কক্সবাজার) বা রং (লাল, নীল, সবুজ) কে মেশিন লার্নিং মডেলগুলি প্রক্রিয়া করতে পারে না, কারণ মডেলগুলি সংখ্যাগত (numerical) ডেটা নিয়ে কাজ করতে সক্ষম। এই কারণে, One-Hot Encoding এবং Label Encoding ডেটাকে সংখ্যায় রূপান্তরিত করতে ব্যবহৃত হয়।
নিচে One-Hot Encoding এবং Label Encoding এর বিস্তারিত আলোচনা করা হলো।
1. One-Hot Encoding:
One-Hot Encoding হল একটি পদ্ধতি যেখানে প্রতিটি ক্যাটেগোরিকাল মান (value) কে একটি বাইনারি ভেক্টরে রূপান্তরিত করা হয়, যার মধ্যে প্রতিটি ভেক্টরের একমাত্র একটি উপাদান 1 হয় এবং বাকি উপাদানগুলো 0 থাকে। এটি সাধারণত ব্যবহার করা হয় যখন ক্যাটেগোরিকাল ভেরিয়েবলগুলির মধ্যে কোনো ধারণাগত সম্পর্ক (ordinal relationship) না থাকে, অর্থাৎ মানগুলির মধ্যে কোনো শ্রেণীবিন্যাসের কোন বিশেষ ক্রম বা পরিসীমা নেই।
উদাহরণ:
ধরা যাক আমাদের কাছে একটি Color নামক ক্যাটেগোরিকাল কলাম রয়েছে, যার মানগুলো হল: ['Red', 'Blue', 'Green']
One-Hot Encoding এ এই মানগুলি এইভাবে রূপান্তরিত হবে:
| Color | Red | Blue | Green |
|---|---|---|---|
| Red | 1 | 0 | 0 |
| Blue | 0 | 1 | 0 |
| Green | 0 | 0 | 1 |
এখানে:
- Red কে [1, 0, 0] এ রূপান্তরিত করা হয়েছে।
- Blue কে [0, 1, 0] এ রূপান্তরিত করা হয়েছে।
- Green কে [0, 0, 1] এ রূপান্তরিত করা হয়েছে।
বিশেষ বৈশিষ্ট্য:
- No Ordinal Relationship: এই পদ্ধতিতে ক্যাটেগোরিকাল ভেরিয়েবলগুলির মধ্যে কোনো শ্রেণীবিন্যাস নেই (যেমন, রংগুলির মধ্যে কোনো নির্দিষ্ট ক্রম বা পরিসীমা নেই)।
- Dimensionality Increase: One-Hot Encoding এর ফলে ডেটার মাত্রা বৃদ্ধি পায়। যদি একটি ক্যাটেগোরিকাল ভেরিয়েবলের অনেক ভ্যালু থাকে, তাহলে সেগুলোর জন্য অনেক নতুন ফিচার তৈরি হয়।
- Useful for Nominal Data: এটি সাধারণত nominal (যেমন, রং, শহর) ধরনের ডেটার জন্য ব্যবহৃত হয়।
2. Label Encoding:
Label Encoding হল একটি পদ্ধতি যেখানে ক্যাটেগোরিকাল ভেরিয়েবলগুলির প্রতিটি ভ্যালুকে একটি ইউনিক সংখ্যা বা লেবেল দ্বারা রূপান্তরিত করা হয়। এটি সাধারণত ব্যবহৃত হয় যখন ক্যাটেগোরিকাল ভেরিয়েবলগুলির মধ্যে অর্ডিনাল সম্পর্ক (ordinal relationship) থাকে, অর্থাৎ মানগুলির মধ্যে একটি নির্দিষ্ট ক্রম বা পরিসীমা থাকে।
উদাহরণ:
ধরা যাক আমাদের কাছে একটি Size নামক ক্যাটেগোরিকাল কলাম রয়েছে, যার মানগুলো হল: ['Small', 'Medium', 'Large']
Label Encoding এ এই মানগুলি এইভাবে রূপান্তরিত হবে:
| Size | Encoded Value |
|---|---|
| Small | 0 |
| Medium | 1 |
| Large | 2 |
এখানে:
- Small কে 0 এ রূপান্তরিত করা হয়েছে।
- Medium কে 1 এ রূপান্তরিত করা হয়েছে।
- Large কে 2 এ রূপান্তরিত করা হয়েছে।
বিশেষ বৈশিষ্ট্য:
- Ordinal Relationship: Label Encoding সাধারণত ordinal (যেমন, ছোট, মাঝারি, বড়) ধরনের ডেটার জন্য উপযুক্ত, যেখানে মানগুলির মধ্যে একটি নির্দিষ্ট ক্রম বা পরিসীমা থাকে।
- Efficient: One-Hot Encoding এর তুলনায়, Label Encoding প্রক্রিয়া আরও কম স্থান (memory) নেয় কারণ এটি একক সংখ্যা ব্যবহার করে।
- Risk of Misinterpretation: এই পদ্ধতিতে, মডেলটি লেবেলগুলির মধ্যে একটি সংখ্যাগত সম্পর্ক তৈরি করতে পারে, যা প্রকৃতপক্ষে নেই (যেমন, 0 < 1 < 2), ফলে কখনও কখনও ভুলভাবে মডেলটি ডেটার মধ্যে সম্পর্ক বুঝতে পারে।
কোন পরিস্থিতিতে কোনটি ব্যবহার করবেন?
- One-Hot Encoding:
- যখন ক্যাটেগোরিকাল ডেটার মধ্যে কোনো অর্ডিনাল সম্পর্ক (ordinal relationship) না থাকে, অর্থাৎ মানগুলির মধ্যে কোনো নির্দিষ্ট ক্রম নেই।
- উদাহরণ: রং, শহর, বা অন্যান্য ক্যাটেগোরিকাল ভেরিয়েবল যা শুধুমাত্র ভিন্ন ভিন্ন শ্রেণীকে চিহ্নিত করে।
- Label Encoding:
- যখন ক্যাটেগোরিকাল ডেটার মধ্যে অর্ডিনাল সম্পর্ক (ordinal relationship) থাকে, অর্থাৎ মানগুলির মধ্যে নির্দিষ্ট ক্রম বা পরিসীমা থাকে।
- উদাহরণ: শিক্ষার স্তর (প্রাথমিক, মাধ্যমিক, উচ্চ মাধ্যমিক, স্নাতক), আয় শ্রেণী (নিম্ন, মধ্য, উচ্চ) ইত্যাদি।
সারাংশ:
- One-Hot Encoding: এটি একটি বাইনারি ভেক্টরের মাধ্যমে প্রতিটি ক্যাটেগোরিকাল মানকে আলাদাভাবে রূপান্তরিত করে। এটি nominal ডেটার জন্য ব্যবহৃত হয় যেখানে কোন শ্রেণীবিন্যাস সম্পর্ক থাকে না।
- Label Encoding: এটি প্রতিটি ক্যাটেগোরিকাল মানকে একটি নির্দিষ্ট সংখ্যা দ্বারা রূপান্তরিত করে। এটি ordinal ডেটার জন্য উপযুক্ত যেখানে মানগুলির মধ্যে একটি নির্দিষ্ট ক্রম থাকে।
আপনার ডেটার প্রকৃতি এবং মডেলের প্রয়োজনীয়তার উপর ভিত্তি করে আপনি এই দুটি পদ্ধতির মধ্যে একটি নির্বাচন করতে পারেন।
Read more