Train, Validation, এবং Test Set তৈরি

ডেটা প্রি-প্রসেসিং - পাইথন ডিপ লার্নিং (Python Deep Learning) - Machine Learning

343

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 ব্যবহৃত হতে দেয়, এবং ডেটাকে kk অংশে ভাগ করা হয়, যেখানে k1k-1 অংশ Train Set হিসেবে এবং 1 অংশ Validation Set হিসেবে ব্যবহৃত হয়।
  • প্রতিটি ফোল্ডে মডেল ট্রেনিং এবং ভ্যালিডেশন হয় এবং শেষে পারফরম্যান্সের গড় পরিমাপ করা হয়।
  • এটি মডেলটির সাধারণীকরণ ক্ষমতা উন্নত করে।

৩. Stratified Split:

  • যদি ডেটাতে ভারসাম্যহীন শ্রেণী (class imbalance) থাকে (যেমন, এক শ্রেণীর উদাহরণ অন্য শ্রেণীর তুলনায় অনেক কম), তবে Stratified Split ব্যবহার করা হয়।
  • এতে প্রতিটি শ্রেণী থেকে সমান অনুপাতের ডেটা নির্বাচন করা হয় প্রশিক্ষণ, ভ্যালিডেশন, এবং টেস্ট সেটে, যাতে প্রতিটি সেটে সব শ্রেণীর ডেটার সঠিক বিতরণ থাকে।

Python এ Train, Validation, এবং Test Set তৈরি:

উদাহরণ: Scikit-learn ব্যবহার করে

  1. ডেটা ইনপোর্ট এবং ডিভাইড করা:
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 সেট এখন প্রস্তুত।
  1. 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: মডেল মূল্যায়ন এবং বাস্তব পারফরম্যান্স পরীক্ষা করার জন্য ব্যবহৃত ডেটা।

ডেটাসেটকে সঠিকভাবে ভাগ করা এবং ভ্যালিডেশন সেটের মাধ্যমে মডেল মূল্যায়ন করা, মডেলের পারফরম্যান্স এবং সাধারণীকরণের জন্য অত্যন্ত গুরুত্বপূর্ণ।

Content added By
Promotion

Are you sure to start over?

Loading...