Kernel SVM (Support Vector Machine)
Support Vector Machine (SVM) হলো একটি শক্তিশালী এবং জনপ্রিয় মেশিন লার্নিং অ্যালগরিদম যা মূলত ক্লাসিফিকেশন এবং রিগ্রেশন সমস্যাগুলোর জন্য ব্যবহৃত হয়। SVM একটি সুপারভাইজড লার্নিং অ্যালগরিদম, যা দুটি শ্রেণির মধ্যে সেরা হাইপারপ্লেন বা সীমা (boundary) তৈরি করে, যা শ্রেণীগুলিকে আলাদা করে।
Kernel Trick:
SVM এর সবচেয়ে শক্তিশালী দিক হলো এর Kernel Trick। Kernel একটি মেথড যা আপনাকে নন-লাইনিয়ার (Non-linear) ডেটাকে লাইনিয়ার (Linear) ভাবে রূপান্তর করতে সাহায্য করে। এর মাধ্যমে আপনি ডেটাকে উচ্চ মাত্রার স্পেসে ম্যাপ করে শ্রেণীবিভাগ করতে পারেন, যেখানে ডেটা সোজা হাইপারপ্লেনে বিভক্ত হতে পারে।
ডেটা যদি দুইটি শ্রেণী দিয়ে বিভক্ত হয়, তবে আমরা SVM এর মাধ্যমে সেরা হাইপারপ্লেন তৈরি করি, কিন্তু কখনও কখনও ডেটা নন-লাইনীয় (Non-linear) হয়, যেখানে এই হাইপারপ্লেন ব্যবহার করে শ্রেণীগুলিকে সঠিকভাবে বিভক্ত করা সম্ভব হয় না। এখানে Kernel Trick সাহায্য করে, যা ডেটাকে একটি উচ্চমাত্রার স্পেসে ম্যাপ করে এবং সেখানে সোজা শ্রেণীবিভাগের জন্য উপযুক্ত হাইপারপ্লেন তৈরি করতে সাহায্য করে।
Kernel Functions:
SVM-এ বেশ কিছু kernel functions রয়েছে, যার মধ্যে জনপ্রিয় কিছু হলো:
Linear Kernel: ডেটা যদি সরাসরি লাইন দিয়ে বিভক্ত করা যায়, তবে এটি ব্যবহার করা হয়।
Polynomial Kernel: ডেটাকে পলিনোমিয়াল ফিচার স্পেসে ম্যাপ করে।
যেখানে হলো পলিনোমিয়ালের ডিগ্রি।
Radial Basis Function (RBF) Kernel: এটি সবচেয়ে জনপ্রিয় এবং শক্তিশালী kernel, যা ডেটাকে উচ্চ মাত্রায় ম্যাপ করে এবং গাউসিয়ান ফাংশন ব্যবহার করে।
এখানে, হলো হাইপারপ্যারামিটার যা গাউসিয়ান ফাংশনের প্রশস্ততা নিয়ন্ত্রণ করে।
Sigmoid Kernel: সিগময়েড ফাংশনের ভিত্তিতে কাজ করে।
Kernel SVM এর সুবিধা:
- Non-linear Data Classification: এটি সোজা লিনিয়ার বিভাজন না হওয়া ডেটাতেও কার্যকরীভাবে শ্রেণীবিভাগ করতে সক্ষম।
- High-dimensional Spaces: Kernel SVM অনেক উচ্চ মাত্রার ডেটাতেও কাজ করতে সক্ষম।
Hyperparameter Tuning in SVM
Hyperparameter Tuning হলো মডেল তৈরি করার একটি গুরুত্বপূর্ণ অংশ যেখানে মডেলের কার্যকারিতা বাড়ানোর জন্য বিভিন্ন হাইপারপ্যারামিটার এর মান পরিবর্তন করা হয়। SVM মডেলটিতে অনেক ধরনের হাইপারপ্যারামিটার থাকে, এবং তাদের সঠিক মান নির্বাচন করার মাধ্যমে মডেলের পারফরম্যান্স উন্নত করা যায়।
SVM এর হাইপারপ্যারামিটারস:
- C (Regularization Parameter):
- C হাইপারপ্যারামিটারটি রেগুলারাইজেশন এর জন্য ব্যবহৃত হয়। এটি মডেলটির ট্রেনিং সময়ের জন্য সঠিক সিদ্ধান্তের সীমাবদ্ধতা নির্ধারণ করে।
- C এর উচ্চ মান: মডেলটি ভুল শ্রেণীবিভাগকে কম গুরুত্ব দেবে এবং বেশি কমপ্লেক্স হবে।
- C এর কম মান: মডেলটি অধিক সাদৃশ্যপূর্ণ (generalized) হবে এবং ভুল শ্রেণীবিভাগ মেনে নেবে।
- Kernel Type:
- SVM-এর জন্য সবচেয়ে জনপ্রিয় কনফিগারেশন হচ্ছে RBF Kernel। তবে, কনফিগারেশনের জন্য বিভিন্ন কনফিগারেশন যেমন Linear Kernel বা Polynomial Kernel নির্বাচন করা যেতে পারে।
- Gamma ():
- হাইপারপ্যারামিটারটি RBF Kernel এর জন্য গুরুত্বপূর্ণ। এটি কিভাবে কানুনের (kernel) সিগময়েড প্রশস্ততা বা ফাংশনকে নিয়ন্ত্রণ করবে তা নির্ধারণ করে।
- এর উচ্চ মান: খুব কাছাকাছি ডেটা পয়েন্টগুলিকে ভালভাবে শ্রেণীবিভাগ করবে, তবে অতিরিক্ত ফিটিং হতে পারে।
- এর কম মান: মডেলটি সাধারণ হবে এবং অধিক underfitting ঘটাতে পারে।
- Degree (for Polynomial Kernel):
- Degree হাইপারপ্যারামিটারটি পলিনোমিয়াল কনফিগারেশনের জন্য ব্যবহৃত হয়। এটি পলিনোমিয়াল ফিচারের ডিগ্রি নিয়ন্ত্রণ করে।
Hyperparameter Tuning এর পদ্ধতি
1. Grid Search Cross Validation:
- Grid Search একটি সাধারণ পদ্ধতি যা বিভিন্ন হাইপারপ্যারামিটার এর সেটের জন্য সেরা মান নির্বাচন করতে সাহায্য করে। এটি সবার জন্য উপযুক্ত, তবে বেশ সময়সাপেক্ষ হতে পারে।
from sklearn.model_selection import GridSearchCV
from sklearn.svm import SVC
# SVM মডেল
svm_model = SVC()
# Hyperparameter Grid
param_grid = {
'C': [0.1, 1, 10],
'gamma': [0.01, 0.1, 1],
'kernel': ['rbf', 'linear']
}
# GridSearchCV
grid_search = GridSearchCV(svm_model, param_grid, cv=5)
grid_search.fit(X_train, y_train)
# সেরা মডেল
print("Best parameters found: ", grid_search.best_params_)
2. Randomized Search Cross Validation:
- Randomized Search Grid Search এর তুলনায় দ্রুত পদ্ধতি যেখানে র্যান্ডমভাবে হাইপারপ্যারামিটার নির্বাচন করা হয়।
from sklearn.model_selection import RandomizedSearchCV
from scipy.stats import uniform
from sklearn.svm import SVC
# SVM মডেল
svm_model = SVC()
# Hyperparameter Distribution
param_dist = {
'C': uniform(0.1, 10),
'gamma': uniform(0.01, 1),
'kernel': ['rbf', 'linear']
}
# RandomizedSearchCV
rand_search = RandomizedSearchCV(svm_model, param_dist, n_iter=100, cv=5)
rand_search.fit(X_train, y_train)
# সেরা মডেল
print("Best parameters found: ", rand_search.best_params_)
সারাংশ
Kernel SVM একটি শক্তিশালী মেশিন লার্নিং অ্যালগরিদম, যা non-linear ডেটা ক্লাসিফিকেশন সমস্যায় কার্যকরীভাবে ব্যবহার করা যায়। এটি Kernel Trick ব্যবহার করে ডেটাকে উচ্চমাত্রায় ম্যাপ করে, যেখানে লিনিয়ার বিভাজন করা সম্ভব। SVM এর হাইপারপ্যারামিটার যেমন C, Gamma, Kernel Type এবং Degree-এর সঠিক মান নির্বাচন করে মডেলটির কার্যকারিতা বৃদ্ধি করা যায়। Grid Search এবং Randomized Search হলো দুটি জনপ্রিয় পদ্ধতি যা ব্যবহার করে এই হাইপারপ্যারামিটার টিউনিং করা হয়।
Read more