Arefin Anwar

যখন মেশিন লার্নিং মডেলের কথা আসে, তখন অনেক সময় একটি মাত্র ডিসিশন ট্রি আমাদের কাঙ্ক্ষিত ফলাফল দিতে পারে না। ঠিক তখনই আসে র‍্যান্ডম ফরেস্ট, একটি শক্তিশালী এবং কার্যকরী অ্যালগরিদম যা একাধিক ডিসিশন ট্রি ব্যবহার করে আরও নির্ভুল এবং স্থিতিশীল প্রেডিকশন করতে পারে। র‍্যান্ডম ফরেস্ট একটি এনসেম্বল মডেল (একাধিক মডেলের সমন্বয়ে তৈরি মডেল)। এটি একাধিক ডিসিশন ট্রি তৈরি করে এবং সেগুলোর ফলাফলকে একত্রিত করে চূড়ান্ত সিদ্ধান্তে পৌঁছায়। ক্লাসিফিকেশনের ক্ষেত্রে এটি প্রতিটি ট্রি থেকে ভোট নিয়ে মেজরিটি ভোটকে প্রেডিকশন হিসেবে গণনা করে। আর রিগ্রেশনের ক্ষেত্রে, এটি সমস্ত ট্রির আউটপুটের গড়কে চূড়ান্ত ফলাফল হিসেবে গ্রহণ করে।

অর্থাৎ একাধিক ডিসিশন ট্রি (৫০-১০০) একত্র করে যে মডেল প্রেডিকশন দেয়, তাই ই হলো রেনডম ফরেস্ট মডেল।

র‍্যান্ডম ফরেস্টের কাজের ধাপগুলোকে সহজভাবে ব্যাখ্যা করা যাক (আবারো বলি, এসব জিনিস বুঝার জন্য লেখা, ইউজ করতে তোমাকে জাস্ট লাইব্রেরি ফাংশন কল করতে হবে):

১. বুটস্ট্র্যাপ স্যাম্পল তৈরি:

র‍্যান্ডম ফরেস্ট ট্রেনিং ডেটা থেকে একাধিক স্যাম্পল তৈরি করে। প্রতিটি স্যাম্পল মূল ডেটার থেকে এলোমেলোভাবে তৈরি হয় এবং এটি ডুপ্লিকেট ডেটাও রাখতে পারে। এই প্রক্রিয়াকে বলা হয় বুটস্ট্র্যাপিং।

২. ডিসিশন ট্রি তৈরি:

প্রতিটি বুটস্ট্র্যাপ স্যাম্পল দিয়ে একটি ডিসিশন ট্রি তৈরি করা হয়। তবে, প্রতিটি নোড বিভাজনের সময়, এটি পুরো ফিচার সেটের বদলে এলোমেলোভাবে নির্বাচন করা একটি সাবসেট ব্যবহার করে। এই এলোমেলোতা ট্রিগুলোর ভিন্নতা নিশ্চিত করে।

৩. প্রেডিকশন করা:

নতুন ডেটা আসার পর, র‍্যান্ডম ফরেস্টের প্রতিটি ট্রি প্রেডিকশন করে। ক্লাসিফিকেশনের ক্ষেত্রে, প্রতিটি ট্রি তার ভোট দেয়, এবং সবচেয়ে বেশি ভোট পাওয়া লেবেলটি চূড়ান্ত প্রেডিকশন হয়। রিগ্রেশনের ক্ষেত্রে, সব ট্রির প্রেডিকশনের গড় চূড়ান্ত ফলাফল হিসেবে নির্ধারিত হয়।

ধরো, তুমি একটি বাগান দেখতে গিয়েছো, যেখানে বিভিন্ন ধরনের গাছ রয়েছে। তুমি জানতে চাও, একটি বিশেষ গাছের ফল খাওয়া যাবে কি না। যদি তুমি একটি ডিসিশন ট্রি ব্যবহার করো, তবে এটি একটি নির্দিষ্ট পথ ধরে সিদ্ধান্ত দেবে। কিন্তু, যদি একাধিক গাছ (র‍্যান্ডম ফরেস্ট) ব্যবহার করো এবং তাদের সবাইকে আলাদাভাবে জিজ্ঞাসা করো, তখন সবচেয়ে বেশি সংখ্যক গাছ যে উত্তর দেবে, সেটাই হবে তোমার চূড়ান্ত সিদ্ধান্ত। এতে করে ভুলের সম্ভাবনা অনেক কমে যাবে।

import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score

# উদাহরণস্বরূপ ডেটাসেট তৈরি (Iris dataset)
from sklearn.datasets import load_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.2, random_state=42)

# র‍্যান্ডম ফরেস্ট ক্লাসিফায়ার মডেল তৈরি
rf_model = RandomForestClassifier(n_estimators=100, random_state=42)

# মডেল ট্রেন করা
rf_model.fit(X_train, y_train)

# প্রেডিকশন করা
y_pred = rf_model.predict(X_test)

# একুরেসি মাপা
accuracy = accuracy_score(y_test, y_pred)
print(f'র‍্যান্ডম ফরেস্ট মডেলের একুরেসি: {accuracy:.2f}')


র‍্যান্ডম ফরেস্টের সুবিধা:

নানান ধরনের ডেটার জন্য কার্যকরী: এটি ক্লাসিফিকেশন এবং রিগ্রেশন উভয় ক্ষেত্রেই ভালো কাজ করে।

হাই একুরেসি: একাধিক ডিসিশন ট্রি ব্যবহার করায় এটি স্থিতিশীল এবং নির্ভুল ফলাফল দেয়।

ওভারফিটিং রোধ: এলোমেলো ফিচার নির্বাচন এবং বুটস্ট্র্যাপিং এর কারণে এটি ওভারফিটিং কমায়।

অ্যানমলি ডিটেকশন: এটি অ্যানমলি বা ব্যতিক্রমী ডেটা সনাক্ত করতে খুব কার্যকর।