ওভারফিটিং এবং ছাঁটাই
উপরে বর্ণিত অ্যালগরিদম ব্যবহার করে, আমরা একটি সিদ্ধান্ত গাছকে প্রশিক্ষণ দিতে পারি যা প্রশিক্ষণের উদাহরণগুলিকে সম্পূর্ণরূপে শ্রেণীবদ্ধ করবে, অনুমান করে উদাহরণগুলিকে পৃথক করা যায়। যাইহোক, যদি ডেটাসেটে শব্দ থাকে, তাহলে এই গাছটি ডেটার সাথে ওভারফিট হবে এবং খারাপ পরীক্ষার সঠিকতা দেখাবে।
নিম্নলিখিত চিত্রটি একটি বৈশিষ্ট্য x এবং লেবেল y এর মধ্যে একটি রৈখিক সম্পর্ক সহ একটি শোরগোলযুক্ত ডেটাসেট দেখায়। চিত্রটি কোনও ধরণের নিয়মিতকরণ ছাড়াই এই ডেটাসেটে প্রশিক্ষণপ্রাপ্ত একটি সিদ্ধান্ত গাছও দেখায়। এই মডেলটি সঠিকভাবে সমস্ত প্রশিক্ষণ উদাহরণের ভবিষ্যদ্বাণী করে (মডেলের ভবিষ্যদ্বাণী প্রশিক্ষণের উদাহরণের সাথে মেলে)। যাইহোক, একই রৈখিক প্যাটার্ন এবং একটি ভিন্ন শব্দের উদাহরণ ধারণকারী একটি নতুন ডেটাসেটে, মডেলটি খারাপভাবে কাজ করবে।
চিত্র 12. একটি কোলাহলপূর্ণ ডেটাসেট।
ডিসিশন ট্রিকে ওভারফিটিং সীমিত করতে, ডিসিশন ট্রিকে প্রশিক্ষন দেওয়ার সময় নিম্নলিখিত একটি বা উভয়টি নিয়মিতকরণের মানদণ্ড প্রয়োগ করুন:
- একটি সর্বাধিক গভীরতা সেট করুন: সিদ্ধান্ত গাছগুলিকে সর্বাধিক গভীরতা অতিক্রম করতে বাধা দিন, যেমন 10৷
- পাতায় ন্যূনতম সংখ্যক উদাহরণ সেট করুন: একটি নির্দিষ্ট সংখ্যক উদাহরণের কম উদাহরণ সহ একটি পাতা বিভক্ত করার জন্য বিবেচনা করা হবে না।
নিম্নলিখিত চিত্রটি প্রতি পাতায় ন্যূনতম সংখ্যক উদাহরণের ভিন্নতার প্রভাবকে চিত্রিত করে। মডেলটি কম নয়েজ ক্যাপচার করে।
চিত্র 13. প্রতি পাতায় ন্যূনতম সংখ্যক উদাহরণের পার্থক্য।
আপনি প্রশিক্ষণের পরে নির্দিষ্ট শাখাগুলিকে বেছে বেছে অপসারণ (ছাঁটাই) করেও নিয়মিত করতে পারেন, অর্থাৎ, কিছু নন-লিফ নোডকে পাতায় রূপান্তর করে। অপসারণের জন্য শাখা নির্বাচন করার একটি সাধারণ সমাধান হল একটি বৈধতা ডেটাসেট ব্যবহার করা। অর্থাৎ, যদি একটি শাখা অপসারণ করা বৈধতা ডেটাসেটের মডেলের গুণমান উন্নত করে, তাহলে শাখাটি সরানো হয়।
নিম্নলিখিত অঙ্কন এই ধারণা চিত্রিত. এখানে, আমরা পরীক্ষা করি যে সিদ্ধান্ত বৃক্ষের বৈধতা নির্ভুলতা উন্নত হবে যদি পাতাহীন সবুজ নোডটিকে একটি পাতায় পরিণত করা হয়; যে, কমলা নোড ছাঁটাই.
চিত্র 14. একটি অবস্থা এবং এর বাচ্চাদের একটি পাতায় ছাঁটাই করা।
নিম্নলিখিত চিত্রটি সিদ্ধান্ত গাছ ছাঁটাই করার জন্য বৈধতা হিসাবে ডেটাসেটের 20% ব্যবহারের প্রভাবকে চিত্রিত করে:
চিত্র 15. সিদ্ধান্ত গাছ ছাঁটাই করার জন্য ডেটাসেটের 20% ব্যবহার করে।
নোট করুন যে একটি বৈধতা ডেটাসেট ব্যবহার সিদ্ধান্ত গাছের প্রাথমিক প্রশিক্ষণের জন্য উপলব্ধ উদাহরণের সংখ্যা হ্রাস করে।
অনেক মডেল নির্মাতা একাধিক মানদণ্ড প্রয়োগ করে। উদাহরণস্বরূপ, আপনি নিম্নলিখিত সব করতে পারেন:
- প্রতি পাতায় ন্যূনতম সংখ্যক উদাহরণ প্রয়োগ করুন।
- সিদ্ধান্ত গাছের বৃদ্ধি সীমাবদ্ধ করতে সর্বোচ্চ গভীরতা প্রয়োগ করুন।
- সিদ্ধান্ত গাছ ছাঁটাই।
- উদাহরণের সর্বনিম্ন সংখ্যা হল 5 (
min_examples = 5
) - প্রশিক্ষণ ডেটাসেটের 10% বৈধকরণের জন্য রাখা হয়েছে (
validation_ratio = 0.1
)।
validation_ratio=0.0
সেট করে বৈধতা ডেটাসেট দিয়ে ছাঁটাই অক্ষম করতে পারেন।এই মানদণ্ডগুলি নতুন হাইপারপ্যারামিটারগুলি প্রবর্তন করে যা টিউন করা প্রয়োজন (যেমন সর্বাধিক গাছের গভীরতা), প্রায়ই স্বয়ংক্রিয় হাইপারপ্যারামিটার টিউনিং সহ। ক্রস-ভ্যালিডেশন সহ হাইপারপ্যারামিটার টিউনিং ব্যবহার করার জন্য ডিসিশন ট্রি সাধারণত যথেষ্ট দ্রুত। উদাহরণস্বরূপ, "n" উদাহরণ সহ একটি ডেটাসেটে:
- প্রশিক্ষণের উদাহরণগুলিকে অ-ওভারল্যাপিং গ্রুপগুলিতে ভাগ করুন। উদাহরণস্বরূপ:
p=10
। - সমস্ত সম্ভাব্য হাইপারপ্যারামিটার মানগুলির জন্য; উদাহরণস্বরূপ, সর্বাধিক গভীরতা {3,5,6,7,8,9}, ন্যূনতম উদাহরণ {5,8,10,20}।
- মূল্যায়ন করুন, প্রতিটি গ্রুপে, অন্যান্য p-1 গ্রুপে প্রশিক্ষিত সিদ্ধান্ত গাছের গুণমান।
- গ্রুপ জুড়ে গড় মূল্যায়ন।
- সেরা গড় মূল্যায়ন সহ হাইপারপ্যারামিটার মান নির্বাচন করুন।
- নির্বাচিত হাইপারপ্যারামিটার সহ সমস্ত "n" উদাহরণ ব্যবহার করে একটি চূড়ান্ত সিদ্ধান্তের গাছকে প্রশিক্ষণ দিন।
এই বিভাগে আমরা সিদ্ধান্ত গাছের ওভারফিটিং সীমাবদ্ধ করার উপায় নিয়ে আলোচনা করেছি। এই পদ্ধতি সত্ত্বেও, আন্ডারফিটিং এবং ওভারফিটিং সিদ্ধান্ত গাছের প্রধান দুর্বলতা। সিদ্ধান্ত বন ওভারফিটিং সীমিত করার জন্য নতুন পদ্ধতি প্রবর্তন করে, যা আমরা পরে দেখব।
সরাসরি সিদ্ধান্ত গাছের ব্যাখ্যা
সিদ্ধান্ত গাছ সহজে ব্যাখ্যাযোগ্য. এটি বলেছিল, এমনকি কয়েকটি উদাহরণ পরিবর্তন করা সম্পূর্ণরূপে কাঠামো পরিবর্তন করতে পারে - এবং সেইজন্য সিদ্ধান্তের গাছের ব্যাখ্যা।
যেভাবে সিদ্ধান্ত গাছ তৈরি করা হয়, প্রশিক্ষণের উদাহরণগুলিকে বিভাজন করে, কেউ একটি সিদ্ধান্ত গাছ ব্যবহার করে ডেটাসেট নিজেই ব্যাখ্যা করতে পারে (মডেলের বিপরীতে)। প্রতিটি পাতা ডেটাসেটের একটি নির্দিষ্ট কোণার প্রতিনিধিত্ব করে।
model.describe()
ফাংশন সহ গাছ দেখতে পারেন। এছাড়াও আপনি model.get_tree()
এর মাধ্যমে পৃথক ট্রি অ্যাক্সেস করতে এবং প্লট করতে পারেন। আরো বিস্তারিত জানার জন্য YDF এর মডেল পরিদর্শন টিউটোরিয়াল দেখুন।যাইহোক, পরোক্ষ ব্যাখ্যাও তথ্যপূর্ণ।