Train/Test Split এবং Cross Validation

ডেটা ম্যানিপুলেশন এবং প্রি-প্রসেসিং - পাইথন দিয়ে মেশিন লার্নিং (Machine Learning with Python) - Machine Learning

257

Train/Test Split এবং Cross Validation হল মেশিন লার্নিং মডেল প্রশিক্ষণ এবং মূল্যায়নের দুটি গুরুত্বপূর্ণ কৌশল। এদের উদ্দেশ্য হল মডেলকে যথাযথভাবে প্রশিক্ষণ দেওয়া এবং তার কার্যকারিতা মূল্যায়ন করা, যাতে মডেলটি নতুন, অদেখা ডেটার উপর ভালভাবে কাজ করতে পারে।

১. Train/Test Split

Train/Test Split হল একটি সাধারণ কৌশল যেখানে ডেটাকে দুটি ভাগে ভাগ করা হয়: একটি Training Set এবং একটি Testing Set। মডেলটি Training Set ব্যবহার করে প্রশিক্ষিত হয় এবং পরে Testing Set ব্যবহার করে মূল্যায়ন করা হয়।

Train/Test Split এর প্রক্রিয়া:

  1. Training Set: এটি সেই ডেটা যা মডেল প্রশিক্ষণের জন্য ব্যবহৃত হয়। সাধারণত, ডেটার ৭০% থেকে ৮০% অংশকে ট্রেনিং ডেটা হিসেবে ব্যবহার করা হয়।
  2. Testing Set: এটি সেই ডেটা যা মডেলটি প্রশিক্ষিত হওয়ার পর মডেলটির কার্যকারিতা যাচাই করতে ব্যবহৃত হয়। সাধারণত, ডেটার ২০% থেকে ৩০% অংশকে টেস্ট ডেটা হিসেবে ব্যবহার করা হয়।

উপকারিতা:

  • সহজ এবং দ্রুত বাস্তবায়ন।
  • বড় ডেটাসেটের জন্য ভালো কাজ করে।

অবশিষ্ট:

  • যদি ডেটার পরিমাণ কম হয়, তবে টেস্ট সেটের মডেল গঠন করার জন্য পর্যাপ্ত ডেটা নাও থাকতে পারে।

উদাহরণ:

from sklearn.model_selection import train_test_split
from sklearn.datasets import load_iris
from sklearn.linear_model import LogisticRegression

# Iris ডেটাসেট লোড
data = load_iris()
X = data.data
y = data.target

# Train/Test Split (80% ট্রেনিং, 20% টেস্ট)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# মডেল প্রশিক্ষণ
model = LogisticRegression(max_iter=200)
model.fit(X_train, y_train)

# মডেল মূল্যায়ন
accuracy = model.score(X_test, y_test)
print("Test Accuracy:", accuracy)

২. Cross Validation

Cross Validation একটি শক্তিশালী কৌশল যেখানে ডেটাকে একাধিক ভাগে ভাগ করা হয় এবং প্রতিটি ভাগে মডেল প্রশিক্ষিত এবং মূল্যায়ন করা হয়। এটি মডেলের কার্যকারিতা আরও নির্ভুলভাবে মূল্যায়ন করার জন্য ব্যবহৃত হয়, কারণ এটি ডেটার প্রতিটি অংশকে প্রশিক্ষণ এবং টেস্ট উভয় ক্ষেত্রেই ব্যবহার করে।

Cross Validation এর প্রক্রিয়া:

  1. ডেটা কেএফোল্ডে (K-fold) ভাগ করা হয়, যেমন ৫-fold বা ১০-fold।
  2. প্রতিটি ফোল্ড একবার Testing Set হিসেবে কাজ করে, এবং অন্য সব ফোল্ড মিলিয়ে Training Set হিসেবে কাজ করে।
  3. প্রতিটি ফোল্ডের জন্য মডেল প্রশিক্ষণ এবং মূল্যায়ন করা হয়, এবং শেষে সব ফোল্ডের মধ্যে গড়ে আউটপুট নেয়া হয়।

উপকারিতা:

  • মডেলটি ডেটার বিভিন্ন অংশে পরীক্ষা করা হয়, তাই এটি মডেলটির সাধারণীকরণ ক্ষমতা (generalization ability) বৃদ্ধি করে।
  • ছোট ডেটাসেটের জন্য কার্যকরী।

অবশিষ্ট:

  • এটি প্রশিক্ষণ এবং মূল্যায়ন করার জন্য বেশি সময় নেয়।

উদাহরণ:

from sklearn.model_selection import cross_val_score
from sklearn.datasets import load_iris
from sklearn.linear_model import LogisticRegression

# Iris ডেটাসেট লোড
data = load_iris()
X = data.data
y = data.target

# মডেল তৈরি
model = LogisticRegression(max_iter=200)

# ৫-fold cross-validation
scores = cross_val_score(model, X, y, cv=5)

# Cross-validation এর ফলাফল
print("Cross-validation scores:", scores)
print("Average Accuracy:", scores.mean())

Cross Validation এর ধরন:

  1. K-Fold Cross Validation:
    • ডেটাকে Kটি ভাগে ভাগ করা হয় এবং প্রতিটি ভাগ একবার টেস্ট সেট হিসেবে ব্যবহার করা হয়। এটি সবচেয়ে সাধারণ ধরনের ক্রস-ভ্যালিডেশন।
  2. Stratified K-Fold Cross Validation:
    • K-Fold এর একটি উন্নত সংস্করণ যেখানে ক্লাসের ভারসাম্য বজায় রাখার জন্য ডেটাকে ভাগ করা হয়। এটি ক্লাস ইমব্যালেন্স থাকলে আরও কার্যকর।
  3. Leave-One-Out Cross Validation (LOOCV):
    • যেখানে প্রতিটি ডেটা পয়েন্ট একবার টেস্ট ডেটা হিসেবে ব্যবহৃত হয় এবং বাকি সব ডেটা প্রশিক্ষণ ডেটা হিসেবে ব্যবহৃত হয়। এটি বেশ সময়সাপেক্ষ হতে পারে, তবে ছোট ডেটাসেটের জন্য কার্যকর।
  4. Leave-P-Out Cross Validation:
    • এখানে প্রতি ব্যাচে P সংখ্যক ডেটা পয়েন্ট টেস্ট হিসেবে ব্যবহার করা হয়।

সারাংশ:

  • Train/Test Split: ডেটাকে দুটি ভাগে ভাগ করে প্রশিক্ষণ এবং মূল্যায়ন করা হয়, সাধারণত ৭০% ট্রেনিং এবং ৩০% টেস্ট ডেটা থাকে।
  • Cross Validation: ডেটাকে একাধিক ভাগে ভাগ করে, প্রতিটি অংশে প্রশিক্ষণ ও মূল্যায়ন করা হয়, যা মডেলের কার্যকারিতা আরও নির্ভুলভাবে পর্যালোচনা করতে সাহায্য করে।

Cross Validation সাধারণত Train/Test Split এর তুলনায় বেশি নির্ভুল ফলাফল দেয়, বিশেষত যখন ডেটা সাইজ ছোট বা ক্লাস ইমব্যালেন্স থাকে।

Content added By
Promotion

Are you sure to start over?

Loading...