কম্পিউটার টিউটোরিয়াল

ডিসিশন ট্রি কীভাবে কনস্ট্রাক্ট করা হয়?

একটি ডিসিশন ট্রি হল একটি ফ্লো-চার্ট-লাইক ট্রি মেকানিজম, যেখানে প্রতিটি ইন্টারনাল নোড একটি অ্যাট্রিবিউটে একটি টেস্ট নির্দেশ করে, প্রতিটি ব্রাঞ্চ টেস্টের ফলাফল ডিফাইন করে, এবং লিফ নোড ক্লাস বা ক্লাস ডিস্ট্রিবিউশন বর্ণনা করে। একটি ট্রির সর্বোচ্চ নোড হল রুট নোড।

ডিসিশন ট্রি কনস্ট্রাকশন

একটি ডিসিশন ট্রি কনস্ট্রাক্ট করার সমস্যাগুলো রিকার্সিভলি ডিফাইন করা যায়। প্রথমে, রুট নোডে রাখার জন্য একটি অ্যাট্রিবিউট সিলেক্ট করুন, এবং প্রতিটি সম্ভাব্য ভ্যালুর জন্য একটি ব্রাঞ্চ তৈরি করুন। এটি উদাহরণ সেটকে সাবসেটে ভাগ করে, অ্যাট্রিবিউটের প্রতিটি ভ্যালুর জন্য একটি। এই প্রসিডিউরটি প্রতিটি ব্রাঞ্চের জন্য রিকার্সিভলি রিপিট করা যেতে পারে, শুধু সেই ইনস্ট্যান্সগুলো ব্যবহার করে যা ব্রাঞ্চে পৌঁছায়। যদি একটি নোডের কিছু ইনস্ট্যান্সের একই ক্লাসিফিকেশন থাকে, তবে ট্রির সেই অংশ তৈরি করা বন্ধ করুন।

শুদ্ধতার মাপ যেটি আমরা ব্যবহার করব সেটিকে ইনফরমেশন বলা হয় এবং বিটসে মাপা হয়। ট্রির প্রতিটি নোডের সাথে যুক্ত, এটি প্রত্যাশিত ইনফরমেশন পরিমাণকে রিপ্রেজেন্ট করে যা প্রয়োজন হবে স্পেসিফাই করতে যে একটি নতুন ইনস্ট্যান্সকে यस বা নো হিসেবে ক্লাসিফাই করা উচিত কিনা, দেয়া যে ইনস্ট্যান্সগুলো সেই নোডে পৌঁছেছে।

প্রুনিং (Pruning)

প্রুনিং হল वह প্রক্রিয়া যা ডিসিশন ট্রির আকার কমায়। এটি ওভারফিটিং এর ঝুঁকি কমানোর জন্য ব্যবহৃত হয় ট্রির আকার বর্ণনা করে বা ট্রির সেই অংশগুলো সরিয়ে যায় যেগুলো কম শক্তি প্রদান করে। প্রুনিং কাজ করে ব্রাঞ্চগুলো ট্রিম করে যেগুলো ট্রেনিং ডেটাতে নয়েজ বা আউটলায়ারের কারণে অ্যানোমালি ফলো করে এবং প্রাথমিক ট্রি একটি পদ্ধতিতে উন্নত করে যা ট্রির জেনারালাইজেশন কার্যকারিতা উন্নত করে।

বেশ কিছু মেথড প্রায়শই স্ট্যাটিস্টিক্যাল মেজার ব্যবহার করে সবচেয়ে কম বিশ্বস্ত ব্রাঞ্চগুলো সরিয়ে ফেলে, প্রায়শই ফাস্টার ক্লাসিফিকেশন এবং ট্রির ক্ষমতায় উন্নতি ফলাফল হিসেবে আসে যাতে সঠিকভাবে স্বাধীন টেস্ট ডেটা ক্লাসিফাই করা যায়।

ডিসিশন ট্রি লার্নিং অ্যালগরিদম

অ্যালগরিদম - দেওয়া ট্রেনিং ইনফরমেশন থেকে একটি ডিসিশন ট্রি তৈরি করুন।

ইনপুট - ট্রেনিং স্যাম্পল, স্যাম্পল, ডিসক্রিট-ভ্যালুড অ্যাট্রিবিউট দ্বারা বর্ণিত; ছাত্র অ্যাট্রিবিউটের সেট, অ্যাট্রিবিউট-লিস্ট।

আউটপুট - একটি ডিসিশন ট্রি।

মেথড

  • একটি নোড N তৈরি করুন;

  • যদি স্যাম্পলগুলো একই ক্লাস C হয়, তবে

  • N কে একটি লিফ নোড হিসেবে রিটার্ন করুন ক্লাস C সহ লেবেল্ড

  • যদি অ্যাট্রিবিউট-লিস্ট নাল হয়, তবে

  • N কে একটি লিফ নোড হিসেবে রিটার্ন করুন স্যাম্পলগুলোর মোস্ট ফ্রিকোয়েন্ট ক্লাসের সাথে লেবেল্ড। // মেজোরিটি ভোটিং

  • টেস্ট-অ্যাট্রিবিউট বেছে নিন, অ্যাট্রিবিউট-লিস্টের মধ্যে সবচেয়ে বড় ইনফরমেশন গেইন والے অ্যাট্রিবিউট।

  • নোড N কে টেস্ট অ্যাট্রিবিউট দিয়ে লেবেল করুন।

  • টেস্ট-অ্যাট্রিবিউটের প্রতিটি পরিচিত ভ্যালু ai এর জন্য // স্যাম্পল পার্টিশন করুন।

  • নোড N থেকে একটি ব্রাঞ্চ বাড়ান কন্ডিশন test-attribute = ai এর জন্য।

  • si কে সেট হওয়া দিন স্যাম্পলগুলোর সেট যেগুলো স্যাম্পলসে আছে যাদের জন্য test-attribute = ai।

  • যদি si খালি হয়, তবে

  • এটি স্যাম্পলগুলোর মোস্ট কমন ক্লাসের সাথে লেবেল্ড একটি লিফের সাথে লিংক করা যেতে পারে।

  • অন্যথায় Generate decision tree ( si, attribute-list - test-attribute) দিয়ে রিটার্ন করা নোড অ্যাটাচ করুন।

  1. ডেটা স্ট্রাকচারে বাইনারি ট্রি ট্রাভার্সাল

  2. জাভাFX-এ টেক্সট নোড তৈরি করা

  3. পাইথনে বাইনারি ট্রি থেকে স্ট্রিং কনস্ট্রাক্ট (Construct String from Binary Tree)

  4. পাইথনে প্রिअর্ডার এবং পোস্টঅর্ডার ট্রাভার্সাল থেকে বাইনারি ট্রি কনস্ট্রাক্ট করুন