Decision Tree (ডিসিশন ট্রি) একটি জনপ্রিয় মেশিন লার্নিং অ্যালগরিদম যা প্রধানত শ্রেণীবিভাগ (Classification) এবং রিগ্রেশন (Regression) সমস্যাগুলি সমাধান করতে ব্যবহৃত হয়। এটি একটি বেসিক অ্যালগরিদম যা খুবই সহজে বুঝে কাজ করতে পারে এবং এর গঠন বেশ খুঁটিনাটি এবং স্বচ্ছ থাকে।
Decision Tree এর গঠন
ডিসিশন ট্রি মূলত একটি বিনিয়ার ট্রি (Binary Tree) ফর্মে কাজ করে, যেখানে প্রতিটি নোড একটি বৈশিষ্ট্য (feature) বা শর্ত (condition) পরীক্ষা করে এবং তার উপর ভিত্তি করে সিদ্ধান্ত নেয়। ট্রির শাখাগুলি সিদ্ধান্ত গ্রহণের পথ এবং পাতাগুলিতে (leaf nodes) সম্ভাব্য আউটপুট বা সিদ্ধান্ত থাকে। এটি খুবই সহজভাবে ক্লাসিফিকেশন এবং রিগ্রেশন সমস্যা সমাধান করে।
Decision Tree এর প্রধান উপাদান:
- Root Node: এটি ট্রির প্রথম নোড, যেখানে সমস্ত ডেটা পরীক্ষা করা হয় এবং এটি একটি বৈশিষ্ট্য নির্বাচন করে যা ডেটাকে বিভক্ত করে।
- Decision Nodes: এরা এমন নোড যেখানে ডেটা পরীক্ষিত হয় এবং একটি শর্তের ভিত্তিতে বিভক্ত করা হয়। প্রতিটি সিদ্ধান্ত নোডের মধ্যে একটি পরীক্ষা বা শর্ত থাকে।
- Branches: শাখাগুলি সিদ্ধান্ত নোড থেকে বের হয়ে যায় এবং প্রতিটি শাখা একটি সম্ভাব্য ফলাফল বা সিদ্ধান্ত নির্দেশ করে।
- Leaf Nodes (Terminal Nodes): এরা ট্রির শেষ নোড, যা শেষ ফলাফল বা আউটপুট নির্দেশ করে। এখানে সিদ্ধান্ত নেওয়া হয়, যেমন ক্লাস বা রিগ্রেশন মান।
- Splitting: প্রতিটি সিদ্ধান্ত নোডে ডেটা ভাগ করার প্রক্রিয়াকে "splitting" বলা হয়। এই প্রক্রিয়ায়, ডেটা সবচেয়ে ভালোভাবে ভাগ করার জন্য বৈশিষ্ট্য নির্বাচন করা হয়।
- Pruning: ট্রি তৈরি করার পরে অপ্রয়োজনীয় বা অতিরিক্ত নোড বাদ দেওয়ার প্রক্রিয়াকে "pruning" বলা হয়, যাতে মডেলটি বেশি জটিল না হয়ে পড়ে এবং ওভারফিটিং (Overfitting) না হয়।
Decision Tree এর কাজের ধারা
১. ডেটা বিভাজন:
ডিসিশন ট্রি তৈরি করার প্রথম ধাপে ডেটাকে বিভক্ত করা হয়। এই বিভাজনটি একটি বৈশিষ্ট্য বা শর্তের উপর ভিত্তি করে করা হয় যা ডেটাকে সবচেয়ে ভালোভাবে ভাগ করতে সাহায্য করে। এই কাজটি করা হয় গেইন ইনফরমেশন (Information Gain), জিন বা Gini Impurity বা গণনা শক্তি (Variance Reduction) এর মাধ্যমে। এর মধ্যে, গিনি ইমপিউরিটি (Gini Impurity) এবং এন্ট্রোপি (Entropy) সবচেয়ে বেশি ব্যবহৃত হয়।
২. বিভাগ নির্বাচন:
এখানে আমাদের লক্ষ্য হল, এমন একটি বৈশিষ্ট্য নির্বাচন করা যা ডেটাকে সবচেয়ে ভালভাবে বিভক্ত করবে। এই কাজটি গেইন ইনফরমেশন বা গিনি ইমপিউরিটি বা এন্ট্রোপির মাধ্যমে করা হয়।
- গিনি ইমপিউরিটি: এই মেট্রিকটি ব্যবহৃত হয় ক্লাসিফিকেশন সমস্যায়। এটি একটি শাখায় কতটা অশুদ্ধতা বা অস্থিরতা রয়েছে তা পরিমাপ করে। আমাদের লক্ষ্য হলো এই অশুদ্ধতাকে কমানো।
- এন্ট্রোপি: এটি ব্যবহার করা হয় যখন ডেটার সঠিকভাবে শ্রেণীবিভাগ করতে হবে। এন্ট্রোপি যত বেশি হবে, ডেটার অজ্ঞেয়তা (uncertainty) তত বেশি থাকবে।
৩. ট্রি তৈরি:
ডেটা সেটটিকে ধারাবাহিকভাবে বিভক্ত করা হয় এবং একটি ট্রি তৈরি হয়, যেখানে প্রতিটি শাখা একটি বৈশিষ্ট্যের উপর ভিত্তি করে ডেটাকে ভাগ করে।
৪. ট্রি প্রুনিং (Pruning):
যতটা সম্ভব টার্গেট ভ্যালু নির্ভর সিদ্ধান্ত নেয়ার জন্য ট্রির শাখাগুলি ছোট করা হয়। যদি ট্রি খুবই গভীর হয় এবং ডেটাকে খুব বেশি ভাগ করে দেয়, তবে এটি অতিরিক্ত শাখা সৃষ্টি করতে পারে যা মডেলটির সাধারণীকরণ ক্ষমতা কমিয়ে দেয় (ওভারফিটিং)। এই কারণে ট্রি প্রুনিং করা হয়।
৫. শেষ ফলাফল:
একবার ট্রি প্রশিক্ষিত হয়ে গেলে, টেস্ট ডেটা বা নতুন ইনপুট ডেটা ট্রির মাধ্যমে পাস করানো হয় এবং ট্রি থেকে অনুমান করা সিদ্ধান্ত বা আউটপুট প্রাপ্ত হয়।
Decision Tree এর উদাহরণ
ধরা যাক, আমাদের একটি ডেটাসেট আছে যেখানে একটি কাস্টমারের বয়স এবং আয়ের উপর ভিত্তি করে তার ক্রয় সিদ্ধান্ত (Yes/No) predict করতে হবে।
উদাহরণ ডেটাসেট:
| Age | Income | Buy? |
|---|---|---|
| 25 | Low | No |
| 35 | Medium | Yes |
| 45 | High | Yes |
| 23 | Low | No |
| 40 | Medium | Yes |
Step-by-step Process:
- Root Node Selection: প্রথমে, আমরা নির্ধারণ করি কোন বৈশিষ্ট্য (Age বা Income) সবচেয়ে বেশি তথ্য প্রদান করবে। ধরুন, যদি "Income" বৈশিষ্ট্যটি সবচেয়ে বেশি তথ্য প্রদান করে, তবে আমরা "Income" বৈশিষ্ট্য দিয়ে প্রথম বিভাজন শুরু করব।
- Splitting: যদি Income "Low" হয়, তাহলে কাস্টমারটি "No" কিনবে। যদি "Medium" বা "High" হয়, তাহলে কাস্টমারটি "Yes" কিনবে।
- Pruning: অতিরিক্ত বা অপ্রীতিকর বিভাজন (যেমন কেবল "Low" এবং "Medium" দিয়ে শেষ হয়ে যাওয়া) থেকে মুক্তি পাওয়ার জন্য কিছু শাখা বাদ দেওয়া হতে পারে।
- Leaf Nodes: অবশেষে, ট্রির পাতাগুলিতে (leaf nodes) সিদ্ধান্ত বা ফলাফল থাকবে, যেমন ক্রয় করা হবে কিনা।
Decision Tree এর সুবিধা এবং অসুবিধা
সুবিধা:
- সহজ এবং সহজে বুঝতে পারা: এটি খুবই সরল এবং সহজে ব্যাখ্যা করা যায়।
- ডেটার যে কোন স্কেল বা আকারে কাজ করা: কোন ডেটা প্রিপ্রসেসিং ছাড়াই কাজ করতে পারে।
- নন-লিনিয়ার সম্পর্ক মডেলিং: এটি নন-লিনিয়ার সম্পর্কগুলি মডেল করতে পারে।
অসুবিধা:
- ওভারফিটিং: Decision Tree সহজেই overfit হতে পারে, বিশেষত যদি ট্রি অত্যন্ত গভীর হয়।
- অনেক ট্রেনিং ডেটা প্রয়োজন: এটি খুব বড় এবং জটিল ডেটাসেটের জন্য ভালো কাজ করে না।
সারাংশ
- Decision Tree হল একটি জনপ্রিয় মেশিন লার্নিং অ্যালগরিদম যা শ্রেণীবিভাগ এবং রিগ্রেশন সমস্যা সমাধানে ব্যবহৃত হয়।
- এটি একটি বাইনারি ট্রি ফর্মে কাজ করে এবং ডেটাকে বিভক্ত করতে বৈশিষ্ট্যগুলি নির্বাচন করে।
- Decision Tree এর প্রধান উপাদান হল Root Node, Decision Nodes, Branches এবং Leaf Nodes।
- Decision Tree মডেলটি ডেটা বিভাজনের মাধ্যমে শ্রেণীবিভাগ বা ভবিষ্যদ্বাণী করে এবং প্রুনিং করে অপ্রয়োজনীয় শাখা বাদ দেয়।
Read more