শুরু থেকেই ডিসিশন ট্রি রিগ্রেশন: তত্ত্ব এবং অনুশীলন

সর্বশেষ আপডেট: 03/14/2026
লেখক: C SourceTrail
  • ডিসিশন ট্রিগুলি জিনি, এনট্রপি বা ভ্যারিয়েন্সের মতো পরিমাপ ব্যবহার করে অপবিত্রতা কমাতে বেছে নেওয়া পুনরাবৃত্ত বিভাজনের মাধ্যমে ভবিষ্যদ্বাণী মডেল করে।
  • ইনফরমেশন গেইন প্রতিটি নোডে বৈশিষ্ট্য এবং থ্রেশহোল্ডের পছন্দ নির্দেশ করে, যা গাছগুলিকে রিগ্রেশন এবং শ্রেণীবিভাগ উভয়ই পরিচালনা করতে দেয়।
  • হাইপারপ্যারামিটার যেমন max_depth, min_samples_split এবং min_information_gain ওভারফিটিং এবং ট্রি জটিলতা নিয়ন্ত্রণ করে।
  • স্থিতিশীল এবং কর্মক্ষমতা বৃদ্ধিকারী এলোমেলো বনের মতো সমষ্টিতে যাওয়ার আগে একক-গাছের বলবিদ্যা বোঝা অপরিহার্য।

শুরু থেকেই সিদ্ধান্ত বৃক্ষের প্রতিবন্ধকতা

ট্রি-ভিত্তিক মডেলগুলি কীভাবে চিন্তা করে এবং মেশিন লার্নিংয়ে কেন তারা এত জনপ্রিয় তা সত্যিই বুঝতে চাইলে, শুরু থেকেই ডিসিশন ট্রি রিগ্রেশন হল সবচেয়ে চোখ খুলে দেওয়ার মতো একটি অনুশীলন যা আপনি করতে পারেন। গাছটিকে একটি রহস্যময় ব্ল্যাক বক্স হিসেবে বিবেচনা করার পরিবর্তে, আপনি দেখতে পাবেন কিভাবে প্রতিটি বিভাজন নির্বাচন করা হয়, কিভাবে অপবিত্রতা পরিমাপ করা হয় এবং পাতাগুলিতে কীভাবে সংখ্যাসূচক ভবিষ্যদ্বাণী তৈরি করা হয়, রিগ্রেশন এবং শ্রেণীবিভাগ উভয় সমস্যার জন্য।

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

সিদ্ধান্ত বৃক্ষ কী এবং কেন এটি এত স্বজ্ঞাত?

একটি সিদ্ধান্ত বৃক্ষ মূলত হ্যাঁ/না প্রশ্নের (অথবা সহজ নিয়ম) একটি প্রবাহ যা আপনাকে একটি মূল সিদ্ধান্ত থেকে শুরু করে একটি পাতার নোডে একটি চূড়ান্ত ভবিষ্যদ্বাণী পর্যন্ত পরিচালিত করে। একটি সাধারণ তত্ত্বাবধানে থাকা শিক্ষণ সেটিংয়ে, লক্ষ্য হল একটি লক্ষ্য পরিবর্তনশীলের পূর্বাভাস দেওয়া Y একাধিক ভবিষ্যদ্বাণীকারী (বৈশিষ্ট্য, সহ-ভেরিয়েট) ব্যবহার করে, এবং গাছটি "ওজন কি ≤ 103?" অথবা "দেশ কি {মার্কিন যুক্তরাষ্ট্র, যুক্তরাজ্য, ক্যালিফোর্নিয়া} এর মধ্যে?" এর মতো প্রশ্নের একটি ক্রম শেখে যা ধীরে ধীরে ডেটাকে আরও সমজাতীয় গোষ্ঠীতে ভাগ করে দেয়।

কিছুটা অন্তর্দৃষ্টি পেতে, কল্পনা করুন যে আপনি কেবল উচ্চতা এবং ওজন ব্যবহার করে ভবিষ্যদ্বাণী করতে চান যে কেউ স্থূল কিনা, এবং আপনার কাছে একটি লেবেলযুক্ত ডেটাসেট রয়েছে যা আপনাকে বলে যে কে স্থূল এবং কে নয়। একটি গাছ হয়তো "ওজন ১০০ কেজির বেশি হলে, স্থূলতার পূর্বাভাস দাও" এর মতো একটি নিয়ম আবিষ্কার করতে পারে, কিন্তু সেই নিয়মটি নিখুঁত হবে না: ১০০ কেজির উপরে কিছু লোক স্থূল হবে না, এবং সেই সীমার নীচের কিছু লোক স্থূল হবে। এরপর গাছটি আরও প্রশ্ন (উপ-বিভাজন) যোগ করতে থাকে, উদাহরণস্বরূপ উচ্চতা বা একটি পরিমার্জিত ওজনের সীমা, সেই প্রাথমিক রুক্ষ ভবিষ্যদ্বাণীগুলিকে "সূক্ষ্ম-সুর" করার জন্য।

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

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

শ্রেণীবিভাগ বনাম রিগ্রেশন ট্রি

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

একটি রিগ্রেশন ট্রিতে, স্বাভাবিক উদ্দেশ্য হল বৈশিষ্ট্য স্থানটিকে এমন অঞ্চলে ভাগ করা যেখানে প্রতিক্রিয়াটি একটি ধ্রুবক দ্বারা আনুমানিক করা যেতে পারে, প্রায়শই সেই অঞ্চলে পর্যবেক্ষণের গড়। সাধারণ সিদ্ধান্তের নিয়মগুলির রূপ হল “x”k ≤ c?”, যেখানে xk হল সহ-ভ্যারিয়েটগুলির মধ্যে একটি এবং c হল একটি থ্রেশহোল্ড; এই নিয়মগুলি বারবার স্থানটিকে হাইপার-আয়তক্ষেত্রে বিভক্ত করে, এবং একই হাইপার-আয়তক্ষেত্রের সমস্ত বিন্দু একই পূর্বাভাসিত মান ভাগ করে ŷ।

একটি শ্রেণীবিভাগ বৃক্ষে, বিভাজনগুলি এখনও "বৈশিষ্ট্য ≤ থ্রেশহোল্ড?" বা "সেট S-এ বিভাগ?" থাকে, তবে একটি বিভাজনের গুণমান পরিমাপ করা হয় শ্রেণী লেবেলের পরিপ্রেক্ষিতে প্রাপ্ত চাইল্ড নোডগুলি কতটা বিশুদ্ধ তা দ্বারা। পাতার পূর্বাভাস সাধারণত সেই নোডের ভিতরে সংখ্যাগরিষ্ঠ শ্রেণীর হয় এবং মডেলটি এমন পাতা তৈরি করার চেষ্টা করে যা কেবলমাত্র একটি শ্রেণী ধারণ করার যতটা সম্ভব কাছাকাছি থাকে।

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

সিদ্ধান্ত বৃক্ষে অপরিষ্কারতা এবং খরচের কার্যকারিতা

যেকোনো ডিসিশন ট্রি অ্যালগরিদমের কেন্দ্রবিন্দুতে থাকে একটি খরচ ফাংশন যা মূল্যায়ন করে যে একটি নির্দিষ্ট বিভাজন ডেটাকে অর্থপূর্ণ গোষ্ঠীতে বিভক্ত করার ক্ষেত্রে কতটা ভালো। এই খরচ ফাংশনটি অপবিত্রতার পরিপ্রেক্ষিতে প্রকাশ করা হয়: একটি নোডকে বিশুদ্ধ বলে মনে করা হয় যদি এর সমস্ত নমুনা একই শ্রেণীর (শ্রেণীবিভাগের জন্য) হয় অথবা প্রায় একই সাংখ্যিক মান (রিগ্রেশনের জন্য) থাকে।

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

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

গিনি সূচক: শ্রেণিবিন্যাস গাছে অপরিষ্কারতা পরিমাপ

শ্রেণীবিভাগের গাছের জন্য গিনি সূচকটি সবচেয়ে বেশি ব্যবহৃত অপরিষ্কার পরিমাপগুলির মধ্যে একটি কারণ এটি গণনা করা সহজ এবং বাস্তবে এটি ভালভাবে কাজ করে। ধারণাগতভাবে, এটি সম্ভাব্যতা পরিমাপ করে যে নোড থেকে এলোমেলোভাবে নির্বাচিত পর্যবেক্ষণটি ভুলভাবে শ্রেণীবদ্ধ করা হবে যদি এর লেবেলটি সেই নোডের লেবেল বিতরণ অনুসারে পূর্বাভাস দেওয়া হয়।

যদি একটি নোডে সম্ভাব্যতা সহ ক্লাস থাকে P1, পি2, …, পিn, গিনি সূচকটি গিনি = 1 − Σ (P) হিসাবে গণনা করা হয়i)²। যখন একটি নোড সম্পূর্ণ বিশুদ্ধ হয় (সমস্ত পর্যবেক্ষণ একই শ্রেণীর অন্তর্গত), তখন সম্ভাব্যতার একটি 1 এবং বাকিগুলি 0 হয়, তাই বর্গক্ষেত্রের যোগফল 1 এবং গিনি সূচক 0 হয়, যা পূর্ণ বিশুদ্ধতা নির্দেশ করে।

অন্যদিকে, গিনি সূচক সর্বোচ্চে পৌঁছায় যখন ক্লাসগুলি নোডের ভিতরে সমানভাবে মিশ্রিত হয়, উদাহরণস্বরূপ P সহ একটি বাইনারি সমস্যায়1 = পি2 = ০.৫, যা গিনি = ১ − (০.৫² + ০.৫²) = ০.৫ দেয়। সেই পরিস্থিতিতে, সংখ্যাগরিষ্ঠ শ্রেণীর ভবিষ্যদ্বাণী করা সেই বন্টনের জন্য যতটা সম্ভব খারাপ কারণ নোডে প্রতিটি শ্রেণীর অর্ধেক থাকে।

যখন আপনি কোডে Gini প্রয়োগ করেন, তখন আপনি সাধারণত নোডের জন্য লেবেল ভেক্টর নেন, প্রতিটি শ্রেণীর ফ্রিকোয়েন্সি গণনা করেন, ফ্রিকোয়েন্সিগুলিকে সম্ভাব্যতায় রূপান্তর করেন এবং তারপর সূত্র 1 − Σ p² প্রয়োগ করেন। যদি আপনি একাধিক প্রার্থী বিভাজনের জন্য এটি করেন, তাহলে আপনি তুলনা করতে পারবেন কোন বিভাজন কম ওজনের গড় গিনি অপরিষ্কারতার সাথে শিশু তৈরি করে, যা গাছের জন্য সর্বোত্তম বিভাজন নির্ধারণের জন্য ঠিক এটিই প্রয়োজন।

এনট্রপি: শ্রেণীবিভাগের অপরিষ্কারতার আরেকটি দৃষ্টিভঙ্গি

এনট্রপি হল একটি বিকল্প অপবিত্রতা পরিমাপ যা তথ্য তত্ত্ব এবং ID3 এবং C4.5 এর মতো প্রাথমিক ট্রি অ্যালগরিদমে ব্যাপকভাবে ব্যবহৃত হয় এবং এটি নোডের শ্রেণী বিতরণে এলোমেলোতা বা অনিশ্চয়তার পরিমাণ ক্যাপচার করে। গিনি ভুল শ্রেণীবিভাগের সম্ভাবনার উপর দৃষ্টি নিবদ্ধ করলেও, এনট্রপি একটি নির্দিষ্ট শ্রেণী পর্যবেক্ষণের সাথে সম্পর্কিত "আশ্চর্য" পরিমাপ করে যখন বন্টন মিশ্রিত হয়।

প্রদত্ত শ্রেণীর সম্ভাব্যতা p1, …, পৃc একটি নোড S এর জন্য, এর এনট্রপিকে E(S) = − Σ p হিসাবে সংজ্ঞায়িত করা হয়i লগ₂(pi). যদি নোডটি বিশুদ্ধ হয়, তাহলে সম্ভাব্যতার একটি 1 হবে এবং বাকি সব 0 হবে, যা যোগফলকে শূন্য করে (কারণ log₂(1) = 0), তাই এনট্রপি 0 হবে, যা কোনও অনিশ্চয়তা নির্দেশ করে না।

যখন নোডে ক্লাসের একটি অভিন্ন বন্টন থাকে, তখন এনট্রপি সর্বাধিক হয়; p সহ একটি বাইনারি সমস্যার জন্য1 = পি2 = ০.৫, এনট্রপি হল ১ বিট, যা দুটি শ্রেণীর জন্য সর্বোচ্চ সম্ভাব্য মান। এই মানটি সর্বাধিক অনিশ্চয়তার সাথে মিলে যায়, যার অর্থ নোডটি সেই বিতরণের অধীনে যতটা অপরিষ্কার হতে পারে।

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

তথ্য অর্জন এবং সেরা বিভাজন নির্বাচন করা

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

এনট্রপি ব্যবহার করে শ্রেণীবদ্ধকরণ গাছের জন্য, একটি বিভক্তির তথ্য লাভকে IG হিসাবে সংজ্ঞায়িত করা হয়শ্রেণীবিন্যাস = E(প্যারেন্ট) − Σ (|S)শিশু| / |এসমাতা|) · ই(এস)শিশু). প্রথমে আপনি প্যারেন্ট নোডের এনট্রপি গণনা করুন, তারপর চাইল্ড নোডের ওয়েটেড এভারেজ এনট্রপি বিয়োগ করুন, যেখানে ওজনগুলি তাদের আপেক্ষিক আকার।

রিগ্রেশন ট্রির জন্য, একটি অনুরূপ ধারণা অপবিত্রতা পরিমাপ হিসাবে ভ্যারিয়েন্স বা গড় বর্গ ত্রুটি ব্যবহার করে, যা IG প্রদান করেপ্রত্যাগতি = ভার(প্যারেন্ট) − Σ (|S)শিশু| / |এসমাতা|) · ভার(এস)শিশু). এই সেটিংয়ে, একটি ভালো বিভাজন হল এমন একটি বিভাজন যা প্রতিটি শিশুর ভিতরে লক্ষ্য মানের পরিবর্তনশীলতাকে উল্লেখযোগ্যভাবে হ্রাস করে।

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

প্রতিটি বৈশিষ্ট্যের সেরা বিভাজন কীভাবে অনুসন্ধান করবেন

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

একটি সংখ্যাসূচক ভবিষ্যদ্বাণীকারীর জন্য, স্বাভাবিক কৌশল হল বর্তমান নোডে বৈশিষ্ট্যটি যে সমস্ত অনন্য মান গ্রহণ করে তা দেখা, সেগুলিকে বাছাই করা এবং তারপর ধারাবাহিক মানের মধ্যে প্রার্থীর থ্রেশহোল্ড বিবেচনা করা। প্রতিটি প্রার্থীর থ্রেশহোল্ড c এর জন্য, আপনি দুটি গ্রুপ তৈরি করুন (x ≤ c এবং x > c), প্রতিটি গ্রুপের অশুদ্ধতা গণনা করুন, এবং তারপর তথ্য লাভ গণনা করুন; যে থ্রেশহোল্ড সর্বোচ্চ লাভ প্রদান করে তা হল সেই বৈশিষ্ট্যের উপর আপনার সেরা সংখ্যাসূচক বিভাজন।

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

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

হাইপারপ্যারামিটার ব্যবহার করে গাছের বৃদ্ধি নিয়ন্ত্রণ করা

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

একটি সাধারণ হাইপারপ্যারামিটার হল max_depth, যা গাছের মূল থেকে যেকোনো পাতা পর্যন্ত সর্বাধিক কত স্তরে বৃদ্ধি পেতে পারে তা সীমাবদ্ধ করে। যদি max_depth কে None (অথবা খুব বড় সংখ্যা) তে সেট করা থাকে, তাহলে অন্যান্য সীমাবদ্ধতা পূরণ না হওয়া পর্যন্ত গাছটি বাড়তে থাকবে; যদি এটি ছোট হয়, তাহলে গাছটি অগভীর থাকে এবং আরও ব্যাখ্যাযোগ্য থাকে তবে এটি অপ্রয়োজনীয় হতে পারে।

আরেকটি গুরুত্বপূর্ণ হাইপারপ্যারামিটার হল min_samples_split, যা একটি নোডকে বিভক্ত করার আগে ন্যূনতম কতগুলি পর্যবেক্ষণ থাকতে হবে তা নির্দিষ্ট করে। যদি কোনও নোডে এই থ্রেশহোল্ডের চেয়ে কম নমুনা থাকে, তবে এটি একটি পাতায় পরিণত হয়, যা মডেলটিকে ডেটার খুব ছোট উপসেটে শব্দ তাড়া করতে বাধা দেয়।

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

কোডে শুরু থেকে একটি ডিসিশন ট্রি তৈরি করা

একটি ডিসিশন ট্রি শুরু থেকে বাস্তবায়ন সাধারণত মূল ফাংশনের একটি ছোট সেটের চারপাশে ঘোরে যাকে রিকার্সিভলি বলা হয়। যদিও scikit-learn বা rpart এর মতো লাইব্রেরিগুলি গোপনে এই সমস্ত কাজ করে, এই পদক্ষেপগুলি নিজে কোডিং করলে যুক্তিটি আরও স্পষ্ট হয়ে ওঠে (প্রোগ্রামিং লজিক) এবং আপনাকে আচরণের উপর সম্পূর্ণ নিয়ন্ত্রণ দেয়।

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

দ্বিতীয়ত, লিফ নোডের জন্য আপনার একটি ভবিষ্যদ্বাণী ফাংশন প্রয়োজন যা সেই নোডের লক্ষ্য মানের সেটকে একটি একক ভবিষ্যদ্বাণীতে রূপান্তর করে। রিগ্রেশনের জন্য, এটি সাধারণত সেই নোডে y এর গড়; শ্রেণীবিভাগের জন্য, আপনি সাধারণত মোড (সবচেয়ে ঘন ঘন ক্লাস) গ্রহণ করেন, যদি আপনি সম্ভাব্য আউটপুট চান তবে সম্ভবত ক্লাস সম্ভাব্যতাও সংরক্ষণ করতে পারেন।

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

একটি প্রশিক্ষিত সিদ্ধান্ত বৃক্ষে ভবিষ্যদ্বাণী কীভাবে কাজ করে

একবার আপনার গাছটি প্রশিক্ষিত হয়ে গেলে এবং আপনি সমস্ত বিভক্ত নিয়ম এবং পাতার ভবিষ্যদ্বাণী সংরক্ষণ করে ফেললে, একটি নতুন পর্যবেক্ষণের জন্য ভবিষ্যদ্বাণী করা কেবল গাছের মূল থেকে পাতা পর্যন্ত হেঁটে যাওয়ার মতো ব্যাপার। প্রতিটি অভ্যন্তরীণ নোডে, আপনি প্রয়োজনীয় বৈশিষ্ট্যটি পরীক্ষা করেন এবং পরীক্ষা করেন যে পর্যবেক্ষণটি নোডের অবস্থা পূরণ করে কিনা।

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

আপনি গাছটি ধরে নামতে থাকবেন যতক্ষণ না আপনি শিশুবিহীন একটি নোডে পৌঁছান, যা একটি পাতা যা একটি ধ্রুবক আউটপুট মান বা একটি ক্লাস লেবেল সংরক্ষণ করে। একটি রিগ্রেশন ট্রির জন্য, ভবিষ্যদ্বাণীটি আনুমানিক আয়ুষ্কাল বা জ্বালানি দক্ষতার মতো একটি সংখ্যা হবে; একটি শ্রেণীবদ্ধ ট্রির জন্য, আউটপুটটি "বেঁচে থাকা" বা "বেঁচে থাকেনি" এর মতো একটি ভবিষ্যদ্বাণী করা বিভাগ হবে।

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

বাস্তবে রিগ্রেশন ট্রি নিয়ে কাজ করা

রিগ্রেশন ট্রি বিশেষভাবে কার্যকর যখন ভবিষ্যদ্বাণীকারী এবং প্রতিক্রিয়ার মধ্যে সম্পর্ক দৃঢ়ভাবে অরৈখিক হয় এবং এমন মিথস্ক্রিয়া জড়িত থাকে যা ক্লাসিক লিনিয়ার রিগ্রেশনের সাথে মডেল করা কঠিন। একটি একক বৈশ্বিক সমীকরণ ফিট করার চেষ্টা করার পরিবর্তে, ট্রিটি বৈশিষ্ট্য স্থানটিকে অঞ্চলে বিভক্ত করে এবং প্রতিটি অঞ্চলের মধ্যে একটি সাধারণ ধ্রুবক মডেল ফিট করে।

R-তে, rpart এবং tree-এর মতো জনপ্রিয় প্যাকেজগুলি y ~ x1 + x2 + … + x11-এর মতো একটি সূত্র নির্দিষ্ট করে একটি একক ফাংশন কলের মাধ্যমে রিগ্রেশন ট্রি তৈরি করা সহজ করে তোলে। এই প্যাকেজগুলি ব্রেইম্যান এবং তার সহকর্মীদের দ্বারা বর্ণিত মূল CART পদ্ধতি দ্বারা প্রভাবিত হয়েছিল এবং তারা আধুনিক বৃক্ষ-ভিত্তিক মডেলিংয়ে বিভাজন এবং ছাঁটাইয়ের ধারণার অনেক মান বাস্তবায়ন করে।

উদাহরণস্বরূপ, আপনি rpart প্যাকেজ ব্যবহার করে x1 থেকে x11 এগারোটি কোভেরিয়েটের উপর ভিত্তি করে একটি প্রতিক্রিয়া y মডেল করতে পারেন, অনুপস্থিত মানগুলির ডেটা পরিষ্কার করতে পারেন এবং তারপর rpart.plot প্যাকেজ থেকে prp এর মতো সহায়ক ফাংশন ব্যবহার করে ফলাফল ট্রিটি কল্পনা করতে পারেন। টার্মিনাল নোডগুলি প্রতিটি অঞ্চলের জন্য পূর্বাভাসিত y দেখায়, যা আপনি সরাসরি নতুন পর্যবেক্ষণের জন্য ব্যবহার করতে পারেন।

একটি প্রশিক্ষিত রিগ্রেশন ট্রি দেওয়া হলে, আপনি আনুমানিক মান ŷ (উদাহরণস্বরূপ, জ্বালানি খরচের উদাহরণে প্রায় 20 বা 28) পেতে predict ফাংশনে x9 = 70, x2 = 100 বা x9 = 60, x2 = 150 এর মতো নতুন কোভেরিয়েট মান ফিড করতে পারেন। এই ভবিষ্যদ্বাণীগুলির তুলনা পর্যবেক্ষণকৃত মানের সাথে করলে, উদাহরণস্বরূপ y এবং ŷ এর মধ্যে পারস্পরিক সম্পর্কের মাধ্যমে, আপনাকে দ্রুত ধারণা দেওয়া হবে যে ট্রিটি অন্তর্নিহিত প্যাটার্নটি কতটা ভালোভাবে ক্যাপচার করছে, এমনকি যখন ডেটাসেটটি মোটামুটি ছোট হয়।

একক গাছ থেকে এলোমেলো বন

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

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

অতিরিক্তভাবে, এলোমেলো বনগুলি বৈশিষ্ট্য নির্বাচন প্রক্রিয়ায় এলোমেলোতার পরিচয় দেয়, প্রতিটি বিভাজনে সমস্ত ভবিষ্যদ্বাণীকারীর পরিবর্তে কেবল একটি এলোমেলো ভবিষ্যদ্বাণীকারীর উপসেট বিবেচনা করে। এটি গাছের মধ্যে পারস্পরিক সম্পর্ক আরও হ্রাস করে, বনের বৈচিত্র্য বৃদ্ধি করে এবং খুব বেশি পক্ষপাত না বাড়িয়ে বৈচিত্র্য হ্রাস করে।

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

যদিও এই প্রবন্ধটি শুরু থেকে একটি একক গাছ তৈরির উপর আলোকপাত করে, সেই মৌলিক উপাদানটি কীভাবে কাজ করে তা বোঝা অনেক সহজ করে তোলে যে কীভাবে এলোমেলো বন, গ্রেডিয়েন্ট বুস্টিং এবং অন্যান্য গাছ-ভিত্তিক পদ্ধতির মতো এনসেম্বলগুলি একই নীতির উপর ভিত্তি করে অত্যাধুনিক ফলাফল অর্জন করে অনেক প্রয়োগিক সমস্যার সৃষ্টি করে।

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

ওভারফিটিং বনাম আন্ডারফিটিং
সম্পর্কিত নিবন্ধ:
ওভারফিটিং বনাম আন্ডারফিটিং: guía completa con señales, causas y solutions
সম্পর্কিত পোস্ট: