Support Vector Machine (SVM) হল একটি শক্তিশালী মেশিন লার্নিং অ্যালগরিদম যা ক্লাসিফিকেশন এবং রিগ্রেশন সমস্যা সমাধান করতে ব্যবহৃত হয়। তবে, অনেক সময় ডেটা লিনিয়ারলি সেপারেবল (linearly separable) না হয়ে থাকে, অর্থাৎ ডেটার মধ্যে সরাসরি সোজা রেখা দিয়ে ক্লাসিফিকেশন করা সম্ভব হয় না। এ ধরনের সমস্যার সমাধানে Kernel Trick ব্যবহৃত হয়।
Kernel SVM কী?
Kernel SVM হল SVM এর একটি সংস্করণ যা Kernel Trick ব্যবহার করে লিনিয়ারভাবে সেপারেবল না থাকা ডেটার ক্লাসিফিকেশনকে সম্ভব করে তোলে। এটি ডেটাকে উচ্চমাত্রার (high-dimensional) একটি স্পেসে ম্যাপ করে, যেখানে সেগুলি লিনিয়ারলি সেপারেবল হয়।
Kernel Trick কীভাবে কাজ করে?
Kernel Trick মূলত ডেটাকে উচ্চমাত্রার স্পেসে ম্যাপ করার জন্য একটি ফাংশন (kernel function) ব্যবহার করে, যাতে ডেটা লিনিয়ারলি সেপারেবল হয়ে ওঠে। সুতরাং, SVM মূলত উচ্চমাত্রার স্পেসে কাজ করে, যেখানে ক্লাসিফিকেশন সোজা হয়ে যায়, কিন্তু মূল ডেটা স্পেসে তা সম্ভব নয়।
Kernel Function Types:
Kernel SVM এ সাধারণত তিনটি মূল ধরনের কের্নেল ফাংশন ব্যবহৃত হয়:
- Linear Kernel:
- এটি লিনিয়ার ডেটা ক্লাসিফিকেশনের জন্য ব্যবহৃত হয়, যেখানে ডেটা ইতিমধ্যেই সোজা রেখা দিয়ে আলাদা করা যায়।
- ফর্মুলা:
- Polynomial Kernel:
- এটি পলিনোমিয়াল সম্পর্কের জন্য ব্যবহৃত হয় এবং ডেটাকে উচ্চমাত্রার পলিনোমিয়াল স্পেসে ম্যাপ করে।
- ফর্মুলা: , যেখানে হল একটি কনস্ট্যান্ট এবং হল পলিনোমিয়াল ডিগ্রী।
- Radial Basis Function (RBF) Kernel:
- এটি সবচেয়ে জনপ্রিয় এবং সাধারণভাবে ব্যবহৃত কের্নেল। এটি ডেটাকে একটি অসীম মাত্রার স্পেসে ম্যাপ করে এবং ক্লাসিফিকেশন প্রক্রিয়া সহজ করে।
- ফর্মুলা: , যেখানে হল পারামিটার।
- Sigmoid Kernel:
- এটি সিগময়েড ফাংশন ব্যবহার করে এবং নিউরাল নেটওয়ার্কের সাথে সম্পর্কিত।
- ফর্মুলা:
Kernel SVM ব্যবহার:
Kernel SVM এর ব্যবহার কিছু প্রধান সমস্যার জন্য যেমন কমপ্লেক্স ডেটার ক্লাসিফিকেশন, হায়ারার্কিক্যাল ডেটার শ্রেণীবিভাগ ইত্যাদিতে গুরুত্বপূর্ণ ভূমিকা পালন করে।
Python এ Kernel SVM ব্যবহার:
এখানে Scikit-learn লাইব্রেরি ব্যবহার করে Kernel SVM কীভাবে প্রয়োগ করা যায় তা দেখানো হয়েছে:
১. লিনিয়ার সাপোর্ট ভেক্টর মেশিন (Linear SVM)
from sklearn.svm import SVC
import numpy as np
import matplotlib.pyplot as plt
# ডেটা তৈরি
X = np.array([[1, 2], [2, 3], [3, 3], [4, 5], [5, 7], [6, 8]])
y = [0, 0, 0, 1, 1, 1]
# মডেল তৈরি এবং প্রশিক্ষণ
model = SVC(kernel='linear') # Linear Kernel
model.fit(X, y)
# ভবিষ্যদ্বাণী
y_pred = model.predict(X)
# গ্রাফ তৈরি
plt.scatter(X[:, 0], X[:, 1], c=y, cmap='autumn')
plt.plot(X[:, 0], model.decision_function(X), label='Decision Boundary')
plt.title('Linear Kernel SVM')
plt.show()
২. RBF Kernel SVM
from sklearn.svm import SVC
import numpy as np
import matplotlib.pyplot as plt
# ডেটা তৈরি
X = np.array([[1, 2], [2, 3], [3, 3], [4, 5], [5, 7], [6, 8]])
y = [0, 0, 0, 1, 1, 1]
# RBF Kernel ব্যবহার
model = SVC(kernel='rbf', gamma=0.5)
model.fit(X, y)
# ভবিষ্যদ্বাণী
y_pred = model.predict(X)
# গ্রাফ তৈরি
plt.scatter(X[:, 0], X[:, 1], c=y, cmap='autumn')
plt.title('RBF Kernel SVM')
plt.show()
৩. Polynomial Kernel SVM
from sklearn.svm import SVC
import numpy as np
import matplotlib.pyplot as plt
# ডেটা তৈরি
X = np.array([[1, 2], [2, 3], [3, 3], [4, 5], [5, 7], [6, 8]])
y = [0, 0, 0, 1, 1, 1]
# Polynomial Kernel ব্যবহার
model = SVC(kernel='poly', degree=3)
model.fit(X, y)
# ভবিষ্যদ্বাণী
y_pred = model.predict(X)
# গ্রাফ তৈরি
plt.scatter(X[:, 0], X[:, 1], c=y, cmap='autumn')
plt.title('Polynomial Kernel SVM')
plt.show()
Kernel SVM এর উপকারিতা:
- Non-linear Classification: Kernel SVM এর সাহায্যে আপনি সহজেই non-linear ডেটা ক্লাসিফাই করতে পারেন।
- High-dimensional data: ডেটাকে উচ্চ মাত্রায় ম্যাপ করে, যেটি সোজা রেখার মাধ্যমে সেপারেবল হয়।
- Flexibility: বিভিন্ন ধরনের কের্নেল ফাংশন ব্যবহার করে ডেটার জন্য সবচেয়ে উপযুক্ত মডেল নির্বাচন করা যায়।
Kernel SVM এর সীমাবদ্ধতা:
- কম্পিউটেশনাল ব্যয়: বৃহৎ ডেটাসেটের জন্য Kernel SVM প্রশিক্ষণ সময়সাপেক্ষ এবং কম্পিউটেশনালভাবে ব্যয়বহুল হতে পারে।
- পারামিটার টিউনিং: সঠিক কের্নেল এবং হাইপারপারামিটার (যেমন ) নির্বাচন গুরুত্বপূর্ণ, এবং সেগুলি ভালোভাবে নির্বাচন করতে সময় প্রয়োজন।
সারাংশ
- Kernel SVM একটি শক্তিশালী টুল যা non-linear ডেটাকে সেপারেবল করতে সাহায্য করে।
- Kernel Trick এর মাধ্যমে ডেটাকে উচ্চমাত্রার স্পেসে ম্যাপ করা হয়, যেখানে সেগুলি লিনিয়ারলি সেপারেবল হয়ে যায়।
- বিভিন্ন ধরনের কের্নেল যেমন Linear, Polynomial, এবং RBF ব্যবহার করে বিভিন্ন ধরনের ডেটার ক্লাসিফিকেশন করা যায়।
- Python এর Scikit-learn লাইব্রেরি দিয়ে সহজেই Kernel SVM প্রয়োগ করা সম্ভব।
Read more