Supervised Learning মেশিন লার্নিং এর একটি জনপ্রিয় শাখা, যেখানে মডেলকে লেবেলড ডেটা প্রদান করা হয়, অর্থাৎ ডেটার সাথে তার সঠিক আউটপুট জানানো হয়। এই লেবেলড ডেটা ব্যবহার করে মডেল শেখে এবং নতুন, অজানা ডেটা থেকে সঠিক আউটপুট প্রেডিক্ট করার ক্ষমতা অর্জন করে।
Classification:
যদি আপনার কাছে একটি ডেটাসেট থাকে যেখানে ইনপুট হিসেবে বিভিন্ন বৈশিষ্ট্য (যেমন: বয়স, লিঙ্গ, রক্তচাপ) দেওয়া আছে এবং আউটপুট (লেবেল) হিসেবে রোগের অবস্থার উল্লেখ রয়েছে ("Healthy" বা "Sick"), তবে এটি একটি বাইনারি ক্লাসিফিকেশন সমস্যা।
Regression:
যদি আপনার কাছে একটি ডেটাসেট থাকে যেখানে ইনপুট হিসেবে বিভিন্ন বৈশিষ্ট্য (যেমন: ঘরটির আকার, অবস্থান) দেওয়া থাকে এবং আউটপুট (লেবেল) হিসেবে বাড়ির মূল্য দেওয়া থাকে, তবে এটি একটি রিগ্রেশন সমস্যা।
Supervised Learning হল একটি মেশিন লার্নিং কৌশল যা লেবেলড ডেটার মাধ্যমে শেখে এবং নতুন, অজানা ডেটার জন্য সঠিক আউটপুট প্রেডিক্ট করতে পারে। এটি দুটি প্রধান প্রকারে বিভক্ত: Classification এবং Regression। এটি ডেটা সায়েন্স, অর্থনীতি, স্বাস্থ্যসেবা, রোবটিক্স এবং আরও অনেক ক্ষেত্রে ব্যবহৃত হয়।
Supervised Learning (সুপারভাইজড লার্নিং) হল মেশিন লার্নিং এর একটি পদ্ধতি, যেখানে একটি মডেলকে ইনপুট এবং আউটপুট ডেটা দেওয়া হয় এবং মডেলটি আউটপুট (লেবেল) অনুমান করতে শিখে। এখানে, ডেটাসেটে প্রতিটি ইনপুটের সাথে সংশ্লিষ্ট সঠিক আউটপুট (লেবেল) দেওয়া থাকে। সুপারভাইজড লার্নিং এর মূল উদ্দেশ্য হল মডেলকে সঠিকভাবে প্রশিক্ষণ দেওয়া, যাতে এটি নতুন অজানা ডেটার জন্য সঠিক আউটপুট তৈরি করতে পারে।
Supervised Learning এমন একটি মেশিন লার্নিং পদ্ধতি যেখানে ইনপুট ডেটার সাথে সংশ্লিষ্ট আউটপুট (লেবেল) জানা থাকে এবং মডেলকে আউটপুট অনুমান করতে শেখানো হয়। এটি দুটি প্রধান ক্যাটেগরিতে ভাগ করা যায়: ক্লাসিফিকেশন এবং রিগ্রেশন। সুপারভাইজড লার্নিং এর মাধ্যমে মডেল প্রশিক্ষণ লাভ করে এবং ভবিষ্যতে অজানা ডেটার জন্য সঠিক ফলাফল দিতে সক্ষম হয়।
Classification এবং Regression হল মেশিন লার্নিংয়ের দুটি প্রধান ধরনের সমস্যা। Classification মূলত একটি নির্দিষ্ট শ্রেণীতে ডেটাকে ভাগ করার জন্য ব্যবহৃত হয়, যেখানে আউটপুটটি ক্যাটেগরিকাল হয়। অন্যদিকে, Regression একটি ধারাবাহিক আউটপুট মান প্রেডিক্ট করার জন্য ব্যবহৃত হয়। এখানে দুটি প্রজেক্ট উদাহরণ দেওয়া হলো — একটি Classification প্রজেক্ট এবং একটি Regression প্রজেক্ট।
Problem: Iris dataset ব্যবহার করে বিভিন্ন প্রকারের ফুল (Iris-setosa, Iris-versicolor, Iris-virginica) ক্লাসিফাই করা।
# প্রয়োজনীয় লাইব্রেরি ইমপোর্ট করা
import pandas as pd
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score
# Iris ডেটাসেট লোড করা
iris = load_iris()
X = iris.data
y = iris.target
# ডেটাসেটকে ট্রেন এবং টেস্ট সেটে ভাগ করা
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
# ডেটা স্ট্যান্ডারাইজেশন (Standardization)
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)
# মডেল তৈরি করা (Random Forest Classifier)
model = RandomForestClassifier(n_estimators=100, random_state=42)
model.fit(X_train, y_train)
# টেস্ট সেটের উপর প্রেডিকশন করা
y_pred = model.predict(X_test)
# Accuracy মাপা
accuracy = accuracy_score(y_test, y_pred)
print(f"Accuracy: {accuracy * 100:.2f}%")
এই প্রজেক্টে, আপনি দেখবেন কীভাবে একটি মডেলকে ট্রেন করা হয় এবং তার পরবর্তী পারফরম্যান্স যাচাই করা হয়। এই মডেলটি ফুলের ধরন নির্ধারণ করতে সক্ষম হবে।
Problem: Boston Housing dataset ব্যবহার করে বাড়ির মূল্য প্রেডিক্ট করা।
# প্রয়োজনীয় লাইব্রেরি ইমপোর্ট করা
import pandas as pd
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error, r2_score
# Boston Housing ডেটাসেট লোড করা
boston = load_boston()
X = boston.data
y = boston.target
# ডেটাসেটকে ট্রেন এবং টেস্ট সেটে ভাগ করা
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
# মডেল তৈরি করা (Linear Regression)
model = LinearRegression()
model.fit(X_train, y_train)
# টেস্ট সেটের উপর প্রেডিকশন করা
y_pred = model.predict(X_test)
# Performance metrics গণনা করা
mse = mean_squared_error(y_test, y_pred)
r2 = r2_score(y_test, y_pred)
print(f"Mean Squared Error (MSE): {mse:.2f}")
print(f"R^2 Score: {r2:.2f}")
এই প্রজেক্টে, Linear Regression ব্যবহার করে বাড়ির মূল্য প্রেডিক্ট করার জন্য একটি মডেল তৈরি করা হয়েছে এবং তার পারফরম্যান্স মূল্যায়ন করা হয়েছে।
এই প্রজেক্টগুলো সাধারণত মেশিন লার্নিং শিখতে ব্যবহৃত হয় এবং ডেটা হ্যান্ডলিং, মডেল ট্রেনিং, এবং মেট্রিক্সের মাধ্যমে পারফরম্যান্স যাচাই করার মৌলিক ধারণা দেয়।
Supervised Learning মডেল তৈরি করার জন্য PyBrain একটি খুবই শক্তিশালী লাইব্রেরি। এই প্রক্রিয়ায়, আপনি ডেটাকে ইনপুট এবং আউটপুট পেয়ার হিসেবে ব্যবহার করে মডেল ট্রেনিং করতে পারবেন। PyBrain এর মাধ্যমে আপনি বিভিন্ন supervised learning অ্যালগরিদম ব্যবহার করতে পারেন, যেমন classification এবং regression। এখানে classification মডেলের উদাহরণ দেওয়া হবে, যা backpropagation অ্যালগরিদম ব্যবহার করে ট্রেনিং করা হবে।
Supervised Learning হল একটি মেশিন লার্নিং প্রক্রিয়া যেখানে মডেল ইনপুট-আউটপুট পেয়ার দেখে শিখে এবং ভবিষ্যতে নতুন ইনপুটের জন্য আউটপুট অনুমান করতে সক্ষম হয়। দুটি সাধারণ ধরন হল:
এই উদাহরণে, আমরা classification মডেল তৈরি করব।
প্রথমে একটি সাধারণ XOR সমস্যা নিয়ে কাজ করব, যেখানে দুটি ইনপুট এবং একটি আউটপুট থাকবে। XOR এর জন্য আউটপুট হবে:
এখানে XOR Dataset ব্যবহার করব।
PyBrain ইনস্টল করা না থাকলে প্রথমে ইনস্টল করে নিন:
pip install pybrain
from pybrain.datasets import ClassificationDataSet
from pybrain.tools.shortcuts import buildNetwork
from pybrain.supervised.trainers import BackpropTrainer
import numpy as np
# XOR ডেটাসেট তৈরি
ds = ClassificationDataSet(2, 1, nb_classes=2)
# XOR ইনপুট এবং আউটপুট ডেটা
input_data = np.array([[0, 0], [0, 1], [1, 0], [1, 1]])
output_data = np.array([0, 1, 1, 0])
# ডেটাসেট পূর্ণ করা
for i in range(4):
ds.addSample(input_data[i], [output_data[i]])
# ডেটাসেট স্কেলিং (যেমন নিউরাল নেটওয়ার্কে ভালোভাবে কাজ করার জন্য)
ds._convertToOneOfMany()
# নিউরাল নেটওয়ার্ক তৈরি
network = buildNetwork(2, 3, 1)
# BackpropTrainer ব্যবহার করে ট্রেনিং করা
trainer = BackpropTrainer(network, dataset=ds)
trainer.trainEpochs(1000)
# ফলাফল দেখা
for inp, targ in zip(input_data, output_data):
print("Input:", inp, "Predicted Output:", network.activate(inp), "True Output:", targ)
আপনি যখন কোডটি রান করবেন, তখন এটি ইনপুট অনুযায়ী আউটপুট প্রদর্শন করবে এবং অনুমান করা আউটপুটের সাথে সঠিক আউটপুটের তুলনা করবে।
উদাহরণ আউটপুট:
Input: [0 0] Predicted Output: [0.012] True Output: 0
Input: [0 1] Predicted Output: [0.998] True Output: 1
Input: [1 0] Predicted Output: [0.998] True Output: 1
Input: [1 1] Predicted Output: [0.011] True Output: 0
এখানে, নিউরাল নেটওয়ার্কের আউটপুট খুব কাছাকাছি সঠিক আউটপুটের সাথে মিলেছে, যা মডেল সফলভাবে ট্রেনিং করেছে।
মডেলটি সফলভাবে ট্রেনিং হয়েছে কিনা তা যাচাই করার জন্য আমরা ইনপুটের সাথে আউটপুট তুলনা করেছি। এটি বাইনারি ক্লাসিফিকেশন সমস্যা (XOR গেট) হিসাবে কাজ করছে, যেখানে 0 এবং 1 আউটপুট যথাযথভাবে তৈরি হয়েছে।
PyBrain এর মাধ্যমে আপনি খুব সহজেই supervised learning মডেল তৈরি করতে পারেন এবং আপনার ডেটার উপর ভিত্তি করে মডেল ট্রেনিং এবং টেস্টিং করতে পারবেন।
মডেল পারফর্মেন্স বিশ্লেষণ একটি গুরুত্বপূর্ণ পদক্ষেপ, যা নিশ্চিত করে যে আপনার মডেলটি সঠিকভাবে এবং কার্যকরভাবে কাজ করছে। মডেল পারফর্মেন্স মূল্যায়ন করার জন্য বিভিন্ন পরিমাপক (metrics) এবং কৌশল ব্যবহার করা হয়, যা মডেলটির দক্ষতা এবং সঠিকতা পরিমাপ করতে সহায়ক।
Confusion Matrix হল একটি টুল যা মডেলের পারফরম্যান্স বিশ্লেষণে সাহায্য করে। এটি প্রকৃত এবং পূর্বাভাসিত ক্লাসের মধ্যে সম্পর্ক দেখায়। এটি ৪টি প্রধান উপাদান ধারণ করে:
Confusion Matrix এর মাধ্যমে আপনি বিভিন্ন পরিমাপক যেমন Precision, Recall, এবং Accuracy গণনা করতে পারেন।
Cross-validation হল একটি প্রযুক্তি যা মডেল ট্রেনিংয়ের সময় ডেটা সেটকে বিভক্ত করে ট্রেনিং এবং টেস্ট সেট তৈরি করে। এটি মডেলের সঠিকতা পরিমাপ করার জন্য সাহায্য করে এবং ওভারফিটিং রোধ করে।
এগুলি সাধারণত Regression Problems এর জন্য ব্যবহৃত পরিমাপক।
মডেল পারফর্মেন্স বিশ্লেষণ অত্যন্ত গুরুত্বপূর্ণ, কারণ এটি মডেলের সঠিকতা এবং কার্যকারিতা পরিমাপ করে। Accuracy, Precision, Recall, F1 Score, এবং AUC এর মতো পরিমাপকগুলি ব্যবহার করে আপনি আপনার মডেলের কার্যকারিতা যাচাই করতে পারেন। এছাড়া Confusion Matrix এবং Cross-validation পদ্ধতিগুলি মডেল উন্নত করার জন্য গুরুত্বপূর্ণ টুল হিসেবে কাজ করে। Regression সমস্যায় MAE এবং MSE ব্যবহৃত হয়, যা পূর্বাভাসের গড় ত্রুটি পরিমাপ করে।
Read more