সাপোর্ট ভেক্টর মেশিন (SVM) হল একটি শক্তিশালী তত্ত্বাবধান করা শেখার অ্যালগরিদম যা শ্রেণীবিভাগ এবং রিগ্রেশন কাজগুলির জন্য ব্যবহৃত হয়। একটি SVM-এর প্রাথমিক লক্ষ্য হল সর্বোত্তম হাইপারপ্লেন খুঁজে পাওয়া যা একটি উচ্চ-মাত্রিক স্থানের বিভিন্ন শ্রেণীর ডেটা পয়েন্টগুলিকে সর্বোত্তমভাবে আলাদা করে। SVM-এ সেট করা বৈশিষ্ট্যের শ্রেণীবিভাগ গভীরভাবে ডিসিশন ফাংশনের সাথে আবদ্ধ, বিশেষ করে এর চিহ্ন, যা হাইপারপ্লেনের কোন দিকে প্রদত্ত ডেটা পয়েন্ট পড়ে তা নির্ধারণে গুরুত্বপূর্ণ ভূমিকা পালন করে।
SVM-এ সিদ্ধান্ত ফাংশন
একটি SVM এর সিদ্ধান্ত ফাংশন হিসাবে প্রকাশ করা যেতে পারে:
কোথায়:
- ওজন ভেক্টর যা হাইপারপ্লেনের অভিযোজন সংজ্ঞায়িত করে।
- শ্রেণীবদ্ধ করা হচ্ছে ডেটা পয়েন্টের বৈশিষ্ট্য ভেক্টর।
- পক্ষপাত শব্দ যা হাইপারপ্লেনকে স্থানান্তরিত করে।
একটি ডেটা পয়েন্ট শ্রেণীবদ্ধ করতে , সিদ্ধান্ত ফাংশনের চিহ্ন ব্যবহার করা হয়:
এই চিহ্নটি হাইপারপ্লেনের দিকটি নির্ধারণ করে যার উপর ডেটা পয়েন্ট রয়েছে।
শ্রেণীবিভাগে সাইন ইন ভূমিকা
সিদ্ধান্ত ফাংশনের চিহ্ন () সরাসরি ডেটা পয়েন্টে নির্ধারিত ক্লাস লেবেল নির্ধারণ করে
। এখানে কিভাবে এটা কাজ করে:
1. পজিটিভ সাইন: যদি , সিদ্ধান্ত ফাংশন সাইন ইতিবাচক. এর মানে হল ডাটা পয়েন্ট
হাইপারপ্লেনের পাশে যেখানে পজিটিভ ক্লাস অবস্থিত। অতএব,
ইতিবাচক শ্রেণীর অন্তর্গত হিসাবে শ্রেণীবদ্ধ করা হয় (সাধারণত +1 হিসাবে চিহ্নিত)।
2. নেতিবাচক চিহ্ন: যদি , সিদ্ধান্ত ফাংশনের চিহ্ন নেতিবাচক। এটি নির্দেশ করে যে ডেটা পয়েন্ট
হাইপারপ্লেনের পাশে যেখানে নেতিবাচক শ্রেণী অবস্থিত। তাই,
নেতিবাচক শ্রেণীর অন্তর্গত হিসাবে শ্রেণীবদ্ধ করা হয় (সাধারণত -1 হিসাবে চিহ্নিত)।
3. শূন্য: বিরল ক্ষেত্রে যেখানে , ডেটা পয়েন্ট
হাইপারপ্লেনে ঠিক আছে। বাস্তব-মূল্যবান ডেটার ক্রমাগত প্রকৃতির কারণে এই দৃশ্যটি তাত্ত্বিকভাবে সম্ভব কিন্তু কার্যত বিরল।
জ্যামিতিক ব্যাখ্যা
এসভিএম কীভাবে ডেটা পয়েন্টকে শ্রেণীবদ্ধ করে তা বোঝার জন্য সিদ্ধান্ত ফাংশনের জ্যামিতিক ব্যাখ্যা অপরিহার্য। হাইপারপ্লেন দ্বারা সংজ্ঞায়িত দুই শ্রেণীর মধ্যে সিদ্ধান্তের সীমানা হিসাবে কাজ করে। এই হাইপারপ্লেনের অভিযোজন এবং অবস্থান ওজন ভেক্টর দ্বারা নির্ধারিত হয়
এবং পক্ষপাত শব্দ
.
1. মার্জিন: মার্জিন হল হাইপারপ্লেন এবং প্রতিটি ক্লাস থেকে নিকটতম ডেটা পয়েন্টের মধ্যে দূরত্ব। SVM-এর লক্ষ্য হল এই মার্জিনটি সর্বাধিক করা যাতে নিশ্চিত করা যায় যে হাইপারপ্লেন শুধুমাত্র ক্লাসগুলিকে আলাদা করে না কিন্তু নিকটতম ডেটা পয়েন্ট থেকে সম্ভাব্য সর্বাধিক দূরত্বের সাথে তা করে। এই নিকটতম ডেটা পয়েন্টগুলি সমর্থন ভেক্টর হিসাবে পরিচিত।
2. সমর্থন ভেক্টর: সাপোর্ট ভেক্টর হল ডেটা পয়েন্ট যা হাইপারপ্লেনের সবচেয়ে কাছে থাকে। তারা হাইপারপ্লেনের অবস্থান এবং অভিযোজন সংজ্ঞায়িত করার জন্য গুরুত্বপূর্ণ। এই সমর্থন ভেক্টরগুলির অবস্থানের যেকোনো পরিবর্তন হাইপারপ্লেনকে পরিবর্তন করবে।
উদাহরণ
একটি সাধারণ উদাহরণ বিবেচনা করুন যেখানে আমাদের কাছে দুটি শ্রেণির ডেটা পয়েন্ট সহ একটি দ্বি-মাত্রিক বৈশিষ্ট্য স্থান রয়েছে। +1 দ্বারা ধনাত্মক শ্রেণী এবং -1 দ্বারা ঋণাত্মক শ্রেণী বোঝাই। ধরুন ওজন ভেক্টর এবং পক্ষপাত শব্দ
.
একটি ডেটা পয়েন্টের জন্য , আমরা সিদ্ধান্ত ফাংশনটি নিম্নরূপ গণনা করতে পারি:
থেকে , সিদ্ধান্ত ফাংশন সাইন ইতিবাচক, এবং এইভাবে, ডেটা পয়েন্ট
ইতিবাচক শ্রেণীর (+1) অন্তর্গত হিসাবে শ্রেণীবদ্ধ করা হয়।
অন্য ডেটা পয়েন্টের জন্য , আমরা সিদ্ধান্ত ফাংশন হিসাবে গণনা করি:
আবার, , তাই চিহ্নটি ইতিবাচক, এবং
ইতিবাচক শ্রেণীর (+1) অন্তর্গত হিসাবে শ্রেণীবদ্ধ করা হয়।
এখন, একটি ডেটা পয়েন্ট বিবেচনা করুন :
এক্ষেত্রে, , তাই চিহ্নটি নেতিবাচক, এবং
নেতিবাচক শ্রেণীর (-1) অন্তর্গত হিসাবে শ্রেণীবদ্ধ করা হয়।
গাণিতিক ফর্মুলেশন
SVM-এর গাণিতিক সূত্রে সর্বোত্তম খুঁজে পেতে একটি অপ্টিমাইজেশন সমস্যা সমাধান করা জড়িত এবং
যা প্রশিক্ষণের ডেটা সঠিকভাবে শ্রেণীবদ্ধ করার সময় মার্জিনকে সর্বোচ্চ করে। অপ্টিমাইজেশান সমস্যাটি এভাবে প্রকাশ করা যেতে পারে:
কোথায় ডেটা পয়েন্টের ক্লাস লেবেল
, এবং সীমাবদ্ধতা নিশ্চিত করে যে সমস্ত ডেটা পয়েন্ট কমপক্ষে 1 এর মার্জিন সহ সঠিকভাবে শ্রেণীবদ্ধ করা হয়েছে।
কার্নেল ট্রিক
অনেক ব্যবহারিক অ্যাপ্লিকেশনে, ডেটা মূল বৈশিষ্ট্যের জায়গায় রৈখিকভাবে বিভাজ্য নাও হতে পারে। এটি মোকাবেলা করার জন্য, কার্নেল কৌশল ব্যবহার করে SVM গুলিকে অ-রৈখিক শ্রেণীবিভাগে প্রসারিত করা যেতে পারে। একটি কার্নেল ফাংশন পরোক্ষভাবে ডেটাকে একটি উচ্চ-মাত্রিক স্থানে ম্যাপ করে যেখানে একটি রৈখিক বিচ্ছেদ সম্ভব। সাধারণত ব্যবহৃত কার্নেল ফাংশনের মধ্যে রয়েছে বহুপদী কার্নেল, রেডিয়াল বেসিস ফাংশন (RBF) কার্নেল এবং সিগমায়েড কার্নেল।
কার্নেলাইজড এসভিএম-এ সিদ্ধান্ত ফাংশন হয়ে যায়:
কোথায় অপ্টিমাইজেশন সমস্যার দ্বৈত ফর্ম থেকে প্রাপ্ত ল্যাগ্রেঞ্জ গুণক।
পাইথন বাস্তবায়ন
পাইথনে, `scikit-learn` লাইব্রেরি `SVC` ক্লাসের মাধ্যমে SVM-এর একটি সরল বাস্তবায়ন প্রদান করে। একটি ডেটাসেটকে শ্রেণীবদ্ধ করতে কীভাবে `SVC` ব্যবহার করবেন তার একটি উদাহরণ নিচে দেওয়া হল:
python from sklearn import datasets from sklearn.model_selection import train_test_split from sklearn.svm import SVC from sklearn.metrics import accuracy_score # Load the dataset iris = datasets.load_iris() X = iris.data y = iris.target # Select only two classes for binary classification X = X[y != 2] y = y[y != 2] # Split the dataset into training and testing sets X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42) # Create an SVM classifier with a linear kernel clf = SVC(kernel='linear') # Train the classifier clf.fit(X_train, y_train) # Predict the class labels for the test set y_pred = clf.predict(X_test) # Calculate the accuracy of the classifier accuracy = accuracy_score(y_test, y_pred) print(f'Accuracy: {accuracy * 100:.2f}%')
এই উদাহরণে, `SVC` ক্লাসটি একটি লিনিয়ার কার্নেল সহ একটি SVM শ্রেণীবিভাগ তৈরি করতে ব্যবহৃত হয়। ক্লাসিফায়ারকে প্রশিক্ষণ সেটে প্রশিক্ষিত করা হয়, এবং পরীক্ষার সেটে নির্ভুলতা মূল্যায়ন করা হয়। SVM-এ একটি বৈশিষ্ট্য সেটের শ্রেণীবিভাগ মৌলিকভাবে সিদ্ধান্ত ফাংশনের চিহ্নের উপর নির্ভরশীল। . সাইনটি নির্ধারণ করে যে হাইপারপ্লেনের কোন দিকে একটি ডেটা পয়েন্ট রয়েছে, যার ফলে এটি সংশ্লিষ্ট শ্রেণীতে বরাদ্দ করা হয়। সিদ্ধান্ত ফাংশন, সর্বোত্তম হাইপারপ্লেন খুঁজে পাওয়ার জন্য অপ্টিমাইজেশন প্রক্রিয়া এবং নন-লিনিয়ার বিভাজ্যতা পরিচালনা করার জন্য কার্নেল ফাংশনগুলির সম্ভাব্য ব্যবহার এসভিএম-এর সমস্ত গুরুত্বপূর্ণ উপাদান। এই দিকগুলি বোঝার ফলে SVMগুলি কীভাবে কাজ করে এবং বিভিন্ন মেশিন লার্নিং কাজে তাদের প্রয়োগের একটি বিস্তৃত দৃশ্য প্রদান করে।
সম্পর্কিত অন্যান্য সাম্প্রতিক প্রশ্ন এবং উত্তর পাইথনের সাথে ইআইটিসি/এআই/এমএলপি মেশিন লার্নিং:
- রৈখিক রিগ্রেশনে b প্যারামিটার (সর্বোত্তম ফিট লাইনের y-ইন্টারসেপ্ট) কীভাবে গণনা করা হয়?
- একটি SVM-এর সিদ্ধান্তের সীমানা নির্ধারণে সমর্থন ভেক্টরগুলি কী ভূমিকা পালন করে এবং প্রশিক্ষণ প্রক্রিয়া চলাকালীন কীভাবে তাদের চিহ্নিত করা হয়?
- SVM অপ্টিমাইজেশানের প্রেক্ষাপটে, ওজন ভেক্টর `w` এবং বায়াস `b` এর তাৎপর্য কী এবং সেগুলি কীভাবে নির্ধারণ করা হয়?
- একটি SVM বাস্তবায়নে `ভিজ্যুয়ালাইজ` পদ্ধতির উদ্দেশ্য কী এবং এটি কীভাবে মডেলের কর্মক্ষমতা বুঝতে সাহায্য করে?
- কিভাবে একটি SVM বাস্তবায়নে `ভবিষ্যদ্বাণী` পদ্ধতি একটি নতুন ডেটা পয়েন্টের শ্রেণীবিভাগ নির্ধারণ করে?
- মেশিন লার্নিং প্রসঙ্গে একটি সাপোর্ট ভেক্টর মেশিন (SVM) এর প্রাথমিক উদ্দেশ্য কি?
- Python-এ SVM শ্রেণীবিভাগ বাস্তবায়নের জন্য কীভাবে scikit-learn-এর মতো লাইব্রেরি ব্যবহার করা যেতে পারে এবং কী কী কাজ জড়িত?
- SVM অপ্টিমাইজেশানে সীমাবদ্ধতার (y_i (mathbf{x}_i cdot mathbf{w} + b) geq 1) তাৎপর্য ব্যাখ্যা করুন।
- SVM অপ্টিমাইজেশান সমস্যার উদ্দেশ্য কি এবং কিভাবে এটি গাণিতিকভাবে প্রণয়ন করা হয়?
- সাপোর্ট ভেক্টর মেশিন (SVM) প্রসঙ্গে হাইপারপ্লেন সমীকরণের (mathbf{x} cdot mathbf{w} + b = 0) ভূমিকা কী?
পাইথনের সাথে EITC/AI/MLP মেশিন লার্নিং-এ আরও প্রশ্ন ও উত্তর দেখুন