Support Vector Machine (SVM) একটি জনপ্রিয় সুপারভাইজড লার্নিং অ্যালগরিদম, যা ক্লাসিফিকেশন এবং রিগ্রেশন কাজের জন্য ব্যবহৃত হয়। এটি প্রধানত ক্লাসিফিকেশন সমস্যা সমাধানে ব্যবহৃত হয়, বিশেষত দুই শ্রেণীর মধ্যে সীমারেখা চিহ্নিত করতে। SVM দুটি প্রধান ধরনের হয়: লিনিয়ার SVM এবং নন-লিনিয়ার SVM।
১. লিনিয়ার SVM (Linear SVM)
লিনিয়ার SVM একটি ক্লাসিফিকেশন মডেল যা দুটি শ্রেণীকে আলাদা করতে একটি সোজা বা লিনিয়ার হাইপারপ্লেন (hyperplane) ব্যবহার করে। এই হাইপারপ্লেনটি এমনভাবে চিহ্নিত করা হয় যে এটি দুই শ্রেণীকে সবচেয়ে বড় মার্জিনের সাথে আলাদা করতে পারে।
কীভাবে কাজ করে:
- দুটি শ্রেণীকে আলাদা করার জন্য একটি সোজা লাইন বা হাইপারপ্লেন নির্বাচন করা হয়, যাতে দুই শ্রেণীর মধ্যে সর্বোচ্চ মার্জিন থাকে।
- মার্জিন (Margin): দুটি শ্রেণীর মধ্যে একটি সোজা রেখা (বা হাইপারপ্লেন) এ যতটা সম্ভব স্থান রাখা হয়, এটি যেটি মডেলটিকে সঠিকভাবে ভবিষ্যদ্বাণী করতে সহায়ক হয়।
- সাপোর্ট ভেক্টর (Support Vectors): সাপোর্ট ভেক্টরগুলি হলো ডেটা পয়েন্টগুলি যা হাইপারপ্লেনের খুব কাছে থাকে এবং সেগুলি মার্জিন নির্ধারণ করে।
লিনিয়ার SVM এর সুবিধা:
- সরলতা: লিনিয়ার SVM সহজ এবং দ্রুত কাজ করে যখন ডেটা সরল এবং লিনিয়ার সেপারেবল হয়।
- দ্রুত প্রশিক্ষণ: কম্পিউটেশনাল দৃষ্টিকোণ থেকে, এটি দ্রুত প্রশিক্ষিত হয়, বিশেষত ছোট এবং সোজা ডেটাসেটে।
উদাহরণ:
যেমন, একটি ডেটাসেট যেখানে পণ্য দুটি শ্রেণীতে বিভক্ত: "স্প্যাম" এবং "নন-স্প্যাম"। লিনিয়ার SVM এই দুটি শ্রেণীকে একটি সরল হাইপারপ্লেন দ্বারা আলাদা করতে পারে।
২. নন-লিনিয়ার SVM (Non-linear SVM)
যখন ডেটা সরল লিনিয়ার শ্রেণীভুক্ত করা যায় না, তখন নন-লিনিয়ার SVM ব্যবহৃত হয়। নন-লিনিয়ার SVM ঐ ধরনের সমস্যা সমাধান করতে ব্যবহৃত হয় যেখানে ডেটা দুটি শ্রেণীকে সোজা রেখা দ্বারা আলাদা করা সম্ভব নয়।
কীভাবে কাজ করে:
- কর্নেল ট্রিক (Kernel Trick): নন-লিনিয়ার SVM একটি কর্নেল ফাংশন ব্যবহার করে, যা ডেটাকে উচ্চতর ডাইমেনশন স্পেসে মানচিত্রিত (map) করে এবং সেখানে ডেটাকে সোজা রেখা দ্বারা আলাদা করা সম্ভব হয়।
- কর্নেল ফাংশন: এটি মূলত একটি ফাংশন যা ডেটার লিনিয়ার সেপারেবিলিটির জন্য উচ্চতর স্পেসে স্থানান্তর করে। কিছু সাধারণ কার্নেল ফাংশন হলো:
- রেডিয়াল বেসিস ফাংশন (RBF) কার্নেল
- পলিনোমিয়াল কার্নেল
- সিগময়েড কার্নেল
নন-লিনিয়ার SVM এর সুবিধা:
- জটিল ডেটা হ্যান্ডলিং: নন-লিনিয়ার SVM জটিল এবং নন-লিনিয়ার ডেটা সেটের জন্য উপযুক্ত, যা সরল রেখার সাহায্যে আলাদা করা সম্ভব নয়।
- আলাদা শ্রেণীভেদ করা: এটি এমন পরিস্থিতিতেও কাজ করতে পারে যেখানে শ্রেণীগুলি সোজা রেখার মাধ্যমে বিভক্ত করা সম্ভব নয়।
উদাহরণ:
যেমন, একটি ডেটাসেট যেখানে পণ্য দুটি শ্রেণীতে বিভক্ত: "কুকুর" এবং "বিড়াল"। তবে, যদি কুকুর এবং বিড়াল তাদের বিভিন্ন বৈশিষ্ট্য দ্বারা খুব কাছাকাছি থাকে, তাহলে তাদের সরল রেখা দ্বারা আলাদা করা সম্ভব নাও হতে পারে। এই ধরনের ক্ষেত্রে, নন-লিনিয়ার SVM RBF বা পলিনোমিয়াল কার্নেল ব্যবহার করে তাদের আলাদা করতে পারে।
৩. লিনিয়ার এবং নন-লিনিয়ার SVM এর তুলনা
| বৈশিষ্ট্য | লিনিয়ার SVM | নন-লিনিয়ার SVM |
|---|---|---|
| ডেটা শ্রেণীভেদ | সরল সোজা রেখা দ্বারা | উচ্চতর ডাইমেনশন স্পেসে |
| কর্নেল ফাংশন | দরকার নেই | কর্নেল ফাংশন (যেমন RBF, পলিনোমিয়াল) |
| প্রসেসিং ক্ষমতা | দ্রুত, কম্পিউটেশনাল দিক থেকে কম | কম্পিউটেশনালভাবে বেশি এবং সময়সাপেক্ষ |
| ডেটা | সরল এবং লিনিয়ার সেপারেবল | জটিল এবং নন-লিনিয়ার সেপারেবল |
| বিপদ/সীমাবদ্ধতা | শুধুমাত্র লিনিয়ার সম্পর্ক সমাধান করতে সক্ষম | জটিল সম্পর্ক সমাধানে সক্ষম |
উপসংহার:
- লিনিয়ার SVM যখন ডেটা সোজা বা লিনিয়ারভাবে সেপারেবল হয়, তখন এটি খুবই কার্যকরী।
- নন-লিনিয়ার SVM তখন ব্যবহৃত হয় যখন ডেটা লিনিয়ার সেপারেবল নয় এবং এর জন্য কর্নেল ট্রিক ব্যবহার করে ডেটাকে উচ্চতর ডাইমেনশন স্পেসে স্থানান্তরিত করে শ্রেণীভেদ করা হয়।
উপযুক্ত SVM মডেল নির্বাচন করা ডেটার প্রকৃতি এবং সমস্যার ধরনের উপর নির্ভর করে।
Read more