Decision Tree হলো একটি জনপ্রিয় Supervised Learning মডেল যা বিশেষ করে classification এবং regression কাজের জন্য ব্যবহৃত হয়। এটি ডেটার বিভিন্ন বৈশিষ্ট্যের ভিত্তিতে সিদ্ধান্ত নেয়ার একটি গাছ (tree)-আকৃতির মডেল তৈরি করে। প্রতিটি অভ্যন্তরীণ নোডে একটি প্রশ্ন বা শর্ত থাকে এবং প্রতিটি শাখা একটি সম্ভাব্য উত্তর নির্দেশ করে, যা শেষ নোড বা পাতা (leaf) এ গিয়ে পৌঁছায়।
Decision Tree এর কাজের ধাপ
- ডেটা ভাগ করা:
- গাছের শাখায় ডেটা বিভিন্ন বৈশিষ্ট্য বা ফিচার দ্বারা ভাগ করা হয়, যার মাধ্যমে শ্রেণীবদ্ধ করা হয়।
- শর্ত নির্ধারণ:
- গাছের প্রতিটি নোডে এমন একটি শর্ত বা প্রশ্ন নির্ধারণ করা হয় যা ডেটাকে শ্রেণীবদ্ধ করে।
- রেকারসিভ ভ্যালিডেশন:
- প্রতিটি শাখায় গাছ পুনরায় বিভক্ত হতে থাকে যতক্ষণ না ডেটা শ্রেণীবদ্ধ হয়।
- মডেল ভবিষ্যদ্বাণী:
- প্রশিক্ষিত মডেলটি নতুন ইনপুট ডেটার জন্য সিদ্ধান্ত নেয়।
Python দিয়ে Decision Tree তৈরি
Python-এ Scikit-learn লাইব্রেরি দিয়ে Decision Tree তৈরি করা যায়। এখানে একটি সাধারণ উদাহরণ দেওয়া হল যেখানে আমরা Iris Dataset ব্যবহার করব এবং Decision Tree Classifier দিয়ে ক্লাসিফিকেশন মডেল তৈরি করব।
ধাপ ১: প্রয়োজনীয় লাইব্রেরি ইন্সটল এবং ইনপোর্ট
pip install scikit-learn
pip install matplotlib
ধাপ ২: কোড উদাহরণ
# প্রয়োজনীয় লাইব্রেরি ইনপোর্ট করা
import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import accuracy_score
from sklearn.tree import plot_tree
# Iris dataset লোড করা
iris = load_iris()
X = iris.data # ইনপুট বৈশিষ্ট্য (features)
y = iris.target # লক্ষ্য বা আউটপুট (target)
# ডেটা প্রশিক্ষণ এবং পরীক্ষার জন্য ভাগ করা
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
# Decision Tree Classifier তৈরি করা
model = DecisionTreeClassifier(random_state=42)
model.fit(X_train, y_train) # মডেল প্রশিক্ষণ
# মডেল দিয়ে পূর্বাভাস করা
y_pred = model.predict(X_test)
# Accuracy গণনা করা
print("Accuracy:", accuracy_score(y_test, y_pred))
# Decision Tree প্লট করা
plt.figure(figsize=(12, 8))
plot_tree(model, filled=True, feature_names=iris.feature_names, class_names=iris.target_names, rounded=True)
plt.show()
কোড বিশ্লেষণ:
- লাইব্রেরি ইনপোর্ট:
scikit-learnলাইব্রেরি থেকে DecisionTreeClassifier ব্যবহার করা হয়েছে মডেল তৈরির জন্য এবং train_test_split ডেটাকে প্রশিক্ষণ এবং পরীক্ষার সেটে ভাগ করার জন্য।matplotlibলাইব্রেরি ব্যবহার করা হয়েছে Decision Tree-র গাছের কাঠামো ভিজ্যুয়ালাইজ করার জন্য।
- Iris Dataset লোড করা:
- Iris dataset একটি জনপ্রিয় ডেটাসেট যা তিনটি শ্রেণির (setosa, versicolor, virginica) ফুলের বৈশিষ্ট্য (petal length, petal width, sepal length, sepal width) নিয়ে কাজ করে।
- মডেল প্রশিক্ষণ:
DecisionTreeClassifierমডেলটি তৈরি করে, এবংfit()ফাংশন ব্যবহার করে এটি প্রশিক্ষিত করা হয়।
- পূর্বাভাস এবং মূল্যায়ন:
- মডেলটি পরীক্ষার ডেটাতে পূর্বাভাস করার পর, আমরা
accuracy_scoreদিয়ে মডেলটির সঠিকতা মূল্যায়ন করি।
- মডেলটি পরীক্ষার ডেটাতে পূর্বাভাস করার পর, আমরা
- গাছের কাঠামো ভিজ্যুয়ালাইজেশন:
plot_tree()ফাংশন ব্যবহার করে Decision Tree-র গাছের কাঠামো চিত্রে প্রদর্শন করা হয়।
আউটপুট
- Accuracy:
- এটি মডেলটির সঠিকতা দেখাবে, যা পরীক্ষার ডেটার সাথে সঠিক পূর্বাভাসের অনুপাত।
- Decision Tree Visualization:
- গাছের কাঠামো প্লট হবে যেখানে প্রতিটি নোডে শর্ত থাকবে এবং প্রতিটি শাখায় শ্রেণী বা ক্লাসের নাম হবে।
Decision Tree এর সুবিধা
- সহজ এবং ব্যাখ্যাতীত:
- Decision Tree মডেলটি খুবই সহজ এবং যে কেউ এটি বোঝতে পারে। এটি একটি গাছের কাঠামোতে সিদ্ধান্ত নেয়, যা মানুষের জন্য বুঝতে সহজ।
- কোনো ডেটা প্রক্রিয়া ছাড়াই কাজ করে:
- Decision Tree সাধারণত ডেটাকে স্বয়ংক্রিয়ভাবে প্রক্রিয়া করতে পারে, যেমন স্কেলিং বা শূন্যস্থান পূর্ণ করা।
- একাধিক শ্রেণী এবং বৈশিষ্ট্য সামলাতে সক্ষম:
- এটি একাধিক শ্রেণী বা ক্লাস এবং বৈশিষ্ট্যের সাথে কাজ করতে সক্ষম, এবং কন্টিনিউয়াস এবং ডিসক্রীট (continuous & discrete) বৈশিষ্ট্যগুলো ম্যানেজ করতে পারে।
Decision Tree এর সীমাবদ্ধতা
- ওভারফিটিং (Overfitting):
- Decision Tree মডেলটি প্রশিক্ষণ ডেটাতে খুব ভালো ফলাফল করতে পারে, কিন্তু এটি নতুন ডেটাতে ভাল পারফর্ম নাও করতে পারে (যদি ডেটা বেশি কমপ্লেক্স হয়)।
- বিশাল গাছের সমস্যা:
- Decision Tree যদি খুব গভীর হয়, তাহলে তা অনেক বেশি জটিল হতে পারে এবং মডেলটির ব্যাখ্যা করা কঠিন হতে পারে।
- ব্যালেন্সড ডেটা প্রয়োজন:
- Decision Tree অনেক সময় যখন শ্রেণীগুলোর মধ্যে বৈষম্য থাকে (Imbalanced Classes), তখন এটি সঠিকভাবে কাজ নাও করতে পারে।
সারাংশ
Decision Tree একটি শক্তিশালী এবং জনপ্রিয় মেশিন লার্নিং মডেল যা classification এবং regression কাজের জন্য ব্যবহৃত হয়। এটি সহজেই বোঝা যায় এবং টুল হিসেবে খুব কার্যকরী। Python-এ Scikit-learn লাইব্রেরি ব্যবহার করে Decision Tree তৈরি এবং প্রশিক্ষণ দেওয়া যায়।
Read more