লাভ:
- কাজের আসল খরচ অনুযায়ী সমস্যার ধরন (শ্রেণীবিন্যাস, রিগ্রেশন, ক্লাস্টারিং) এবং সাফল্যের মানদণ্ড নির্ধারণ করার ক্ষমতা
- ডেটা সততার সাথে ভাগ করার ক্ষমতা (পরীক্ষা সেট স্পর্শ না করে; কালানুক্রমিকভাবে সময় সিরিজে) এবং একটি ফাঁস-মুক্ত মূল্যায়ন ভিত্তি স্থাপন করা
- একটি সাধারণ বেসলাইন দিয়ে শুরু করে এবং জটিলতা যোগ করে একটি ব্যাখ্যাযোগ্য মডেল বেছে নেওয়ার ক্ষমতা যখন এটি প্রাপ্য।
এখন পর্যন্ত আমরা ডেটা সংগ্রহ করেছি, এটি পরিষ্কার করেছি, এটি অন্বেষণ করেছি এবং বৈশিষ্ট্যগুলি তৈরি করেছি। এখন আমরা আসল কাজে আসি, একটা মডেল তৈরি করি। একটি মডেল হল একটি গাণিতিক কাঠামো যা ডেটা থেকে একটি প্যাটার্ন শেখে এবং নতুন পরিস্থিতির জন্য ভবিষ্যদ্বাণী তৈরি করে। কিন্তু একটি মডেল তৈরির সবচেয়ে গুরুত্বপূর্ণ অংশটি নিজেই কোড নয়, তবে দুটি সিদ্ধান্ত যা এর আগে: সঠিক সমস্যাটি সংজ্ঞায়িত করা এবং ডেটা সঠিকভাবে বিভক্ত করা। AI হল অ্যালগরিদম নির্বাচন, কোড লেখা এবং প্যারামিটার টিউনিংয়ের একটি শক্তিশালী উপদেষ্টা; তবে কী ভবিষ্যদ্বাণী করতে হবে এবং সাফল্যের অর্থ কী তা সিদ্ধান্ত নেওয়া একজনের উপর নির্ভর করে। একটি ভুল-সংজ্ঞায়িত সমস্যা এমনকি একটি পুরোপুরি লিখিত মডেলের সাথে কাজ করবে না।
সমস্যা সংজ্ঞা প্রথম: আমরা কি ভবিষ্যদ্বাণী না
প্রতিটি মডেলিং কাজ একটি প্রশ্ন দিয়ে শুরু হয় এবং এই প্রশ্নটি মডেলের ধরন নির্ধারণ করে। শ্রেণীবিভাগ — আউটপুট একটি বিভাগ: "এই গ্রাহক কি চলে যাবে নাকি থাকবে?", "এই লেনদেনটি কি জাল?"। রিগ্রেশন (ইংরেজি রিগ্রেশনে - আউটপুট একটি সংখ্যা): "এই বাড়ির মূল্য কত?", "পরের মাসে কতগুলি অর্ডার আসবে?"। ক্লাস্টারিং (লেবেলবিহীন ডেটা প্রাকৃতিক গ্রুপে বিভক্ত করা): "আমার গ্রাহকরা কতটি প্রাকৃতিক বিভাগে বিভক্ত?"।
সমস্যা বিবৃতির দ্বিতীয় অংশ হল সাফল্যের মাপকাঠি: এই মডেলটির "ভাল" হওয়ার অর্থ কী? একটি জালিয়াতির মডেলে, একজন প্রতারককে হারিয়ে যাওয়া একজন সৎ গ্রাহককে দুর্ঘটনাক্রমে ব্লক করার চেয়ে অনেক বেশি ব্যয়বহুল; সুতরাং, "সাধারণ নির্ভুলতা" নয় বরং "প্রতারকদের ধরার হার" সামনে আসে। আপনি যদি ব্যবসার মালিকের সাথে শুরু থেকে এই মানদণ্ডটি সংজ্ঞায়িত না করেন তবে আপনি একটি "অত্যন্ত নির্ভুল" মডেলের সাথে শেষ করবেন যা কাজ করে না (আমরা ইউনিট 7-এর মেট্রিক্সের আরও গভীরে যাব)।
সতর্কতা: "নির্ভুলতা" বিভ্রান্তিকর হতে পারে। যদি 1000টি লেনদেনের মধ্যে 10টি প্রতারণামূলক হয়, তাহলে একটি বোকা মডেল যা বলে যে "কোনোটিই প্রতারণামূলক নয়" 99% নির্ভুলতা দেবে কিন্তু একটিও প্রতারককে ধরবে না। সমস্যার প্রকৃত খরচের উপর ভিত্তি করে সাফল্যের মানদণ্ড নির্বাচন করুন।
প্রশিক্ষণ/পরীক্ষা বিভাজন: মডেলের সৎ পরীক্ষা
এটি যে ডেটা শিখেছে তার সাথে একটি মডেল পরীক্ষা করা হল শিক্ষার্থীকে সেই একই প্রশ্ন জিজ্ঞাসা করার মতো যা সে পরীক্ষায় অধ্যয়ন করেছিল; তিনি উচ্চ নম্বর পান কিন্তু তিনি আসলে কী জানেন তা দেখান না। তাই আমরা ডেটাকে দুই ভাগে বিভক্ত করি (প্রায়ই তিনটি):
- প্রশিক্ষণ সেট (ইংরেজিতে প্রশিক্ষণ সেট, সাধারণত 70-80%): মডেল এটি শিখে।
- টেস্ট সেট (পরীক্ষা সেট, সাধারণত 20-30%): মডেলটি এটি দেখতে পায় না; বাস্তব কর্মক্ষমতা এখানে পরিমাপ করা হয়.
- বৈধকরণ সেট: মডেল সেটিংয়ের জন্য ব্যবহৃত মধ্যবর্তী সেট (কোন প্যারামিটারটি ভাল); পরীক্ষার সেট "পরিষ্কার" রাখতে।
সবচেয়ে মৌলিক নিয়ম: প্রশিক্ষণের সময় পরীক্ষা সেট স্পর্শ করা হয় না. স্কেলিং, কোডিং, ফিচার সিলেকশন — সবগুলোই ট্রেনিং সেট থেকে শেখা হয়, তারপর পরীক্ষায় প্রয়োগ করা হয় (ইউনিট 5 থেকে ফুটো নীতি)। পরীক্ষার সেটটি হল প্রথমবারের মতো মডেলটি বাস্তব পৃথিবী দেখে; আপনি যদি এটি খুব তাড়াতাড়ি চালু করেন তবে আপনি কখনই প্রকৃত কর্মক্ষমতা জানতে পারবেন না।
সময় সিরিজ ব্যতিক্রম: যদি আপনার ডেটা সময় নির্ভরশীল হয় (বিক্রয়, স্টক মার্কেট, চাহিদা), র্যান্ডম বিভাজন করা হয় না। কারণ এলোমেলো বিভাজন মডেলটিকে ভবিষ্যত দেখতে এবং অতীতের ভবিষ্যদ্বাণী করে — এটি ফুটো। পরিবর্তে, কালানুক্রমিকভাবে ভাগ করুন: পুরানো সময়ের সাথে ট্রেন, নতুন সময়কালের সাথে পরীক্ষা করুন।
অ্যালগরিদম নির্বাচন: সহজ থেকে জটিল
নতুনদের সবচেয়ে সাধারণ ভুল হল সবচেয়ে জটিল মডেল দিয়ে শুরু করা। সঠিক পদ্ধতিটি বিপরীত: প্রথমে একটি সাধারণ বেসলাইন স্থাপন করুন। একটি শ্রেণীবিভাগে "সর্বদা সংখ্যাগরিষ্ঠ শ্রেণী অনুমান করুন"; একটি রিগ্রেশনে "সর্বদা গড় অনুমান করুন"। এই বোকা মডেল একটি বেসলাইন দেয়; যদি আপনার আসল মডেল এটি পাস করতে না পারে তবে একটি সমস্যা আছে। তারপরে সহজ এবং ব্যাখ্যাযোগ্য মডেলগুলিতে যান।
মডেল
সমস্যার ধরন
শক্তিশালী পয়েন্ট
দুর্বলতা
বেসলাইন (সংখ্যাগরিষ্ঠ/গড়)
উভয়
বেঞ্চমার্ক দেয়
শিখে না
লজিস্টিক রিগ্রেশন
শ্রেণীবিভাগ
সহজ, ব্যাখ্যাযোগ্য
শুধুমাত্র রৈখিক সম্পর্ক
লিনিয়ার রিগ্রেশন
রিগ্রেশন
সহজ, দ্রুত
রৈখিক অনুমান
সিদ্ধান্ত গাছ
উভয়
ব্যাখ্যাযোগ্য
সহজ মুখস্থ
এলোমেলো বন
উভয়
শক্তিশালী, টেকসই
কম ব্যাখ্যাযোগ্য
গ্রেডিয়েন্ট বুস্টিং (XGBoost ইত্যাদি)
উভয়
খুব শক্তিশালী
সামঞ্জস্য করা কঠিন, মুখস্থ হওয়ার ঝুঁকি
নিয়ম: সহজতম "যথেষ্ট ভাল" মডেলটি বেছে নিন। বেশিরভাগ ব্যবসায়িক প্রসঙ্গে ক্ষমতার চেয়ে ব্যাখ্যাযোগ্যতা বেশি মূল্যবান; একটি ঋণ প্রত্যাখ্যান ব্যাখ্যা করা ভাল "কারণ আপনার ঋণ থেকে আয়ের অনুপাত বেশি" এর চেয়ে "কারণ ব্ল্যাক বক্স তাই বলেছে।"
তিনটি মিনি কেস
কেস 1 - ভুল সমস্যার সংজ্ঞা। একটি দল "গ্রাহক সন্তুষ্ট" এর উপর ভিত্তি করে একটি শ্রেণিবিন্যাস মডেল তৈরি করেছে কিন্তু সাফল্যের মাপকাঠি হিসাবে "নির্ভুলতা" বেছে নিয়েছে। তথ্যে, 88% গ্রাহক সন্তুষ্ট ছিল; মডেলটি প্রত্যেককে "সন্তুষ্ট" বলে 88% নির্ভুলতা পেয়েছে এবং অসন্তুষ্ট ব্যক্তিদের কখনই ধরতে পারেনি — যদিও আসল লক্ষ্য ছিল তাদের খুঁজে বের করা। পাঠ: প্রকৃত উদ্দেশ্যের উপর ভিত্তি করে সাফল্যের মানদণ্ড নির্বাচন করুন।
কেস 2 - বগিতে সময় লিক। একটি চাহিদা পূর্বাভাস প্রকল্পে, ডেটা এলোমেলোভাবে বিভক্ত করা হয়েছিল। মডেলটি 93% নির্ভুলতা দিয়েছে কিন্তু উৎপাদনে বিপর্যস্ত হয়েছে কারণ প্রশিক্ষণে এটি ডিসেম্বরের তথ্য সহ জানুয়ারি, তারপর নভেম্বর ভবিষ্যদ্বাণী করেছিল — এটি ভবিষ্যত দেখেছিল। যখন আমরা কালানুক্রমিক বিভাজনে স্যুইচ করি, প্রকৃত কর্মক্ষমতা 74% বৃদ্ধি পায়। পাঠ: সময় সিরিজে কালানুক্রমিক বিভাজন।
কেস 3 - অপ্রয়োজনীয় জটিলতা। একজন বিশ্লেষক একটি গভীর নিউরাল নেটওয়ার্কের সাথে সরাসরি শুরু করেছেন, কয়েক সপ্তাহ ধরে এটি টিউন করেছেন এবং 81% নির্ভুলতা পেয়েছেন। তারপর একজন সহকর্মী লজিস্টিক রিগ্রেশনের 20 লাইন সহ 80% পেয়েছে — অনেক দ্রুত, ব্যাখ্যাযোগ্য এবং বজায় রাখা সহজ। পাঠ: একটি বেসলাইন এবং একটি সাধারণ মডেল দিয়ে শুরু করুন, যখন এটি প্রাপ্য তখন জটিলতা যোগ করুন।
চারটি অনুলিপিযোগ্য টেমপ্লেট
1) সমস্যার সংজ্ঞা স্পষ্ট করা:
আপনার ভূমিকা: মডেলিং পরামর্শদাতা। আমাকে এই কাজটি সংজ্ঞায়িত করতে সাহায্য করুন: "আমি গ্রাহক মন্থন কমাতে চাই।" আমাকে জিজ্ঞাসা করুন এবং স্পষ্ট করুন: (1) এটি কি একটি শ্রেণীবিভাগ বা রিগ্রেশন, (2) টার্গেট পরিবর্তনশীল ঠিক কী এবং এটি কীভাবে সংজ্ঞায়িত করা উচিত, (3) সাফল্যের মানদণ্ড কী হওয়া উচিত এবং কেন। সিদ্ধান্ত আমার; আপনি প্রশ্ন এবং বিকল্প উপস্থাপন করুন.
2) নিরাপদ প্রশিক্ষণ/পরীক্ষা বগি:
আমার ডিএফকে প্রশিক্ষণ/পরীক্ষায় 80%/20% ভাগ করুন। ক্লাস ডিস্ট্রিবিউশন বজায় রাখুন (স্ট্র্যাটিফাই)। random_state=42। এটি একটি টাইম সিরিজ নয় (স্বাধীন পর্যবেক্ষণ)। বিভাজনের পর প্রতিটি সেটের শ্রেণী অনুপাত প্রিন্ট করুন। কোনো রূপান্তর প্রয়োগ না করেই পরীক্ষার সেটে স্প্লিটিং কোড দিন।
3) সময় সিরিজ কালানুক্রমিক বিভাগ:
ডেটা সময় নির্ভর (তারিখ কলাম: অর্ডার_তারিখ)। এলোমেলো নয়, কালানুক্রমিকভাবে ভাগ করুন: প্রাচীনতম 80% প্রশিক্ষণ, নতুন 20% পরীক্ষা। প্রশিক্ষণ এবং পরীক্ষার তারিখের রেঞ্জগুলি প্রিন্ট করুন যাতে আমি যাচাই করতে পারি যে ভবিষ্যত ফাঁস হয়নি৷
4) একটি বেসলাইন সেট করা:
আমার একটি শ্রেণীবিভাগ সমস্যা আছে (লক্ষ্য: মন্থন 0/1)। প্রথমে একটি বেসলাইন স্থাপন করুন: DummyClassifier দিয়ে প্রশিক্ষণ/পরীক্ষার নির্ভুলতা পরিমাপ করুন, যা সর্বদা সংখ্যাগরিষ্ঠ শ্রেণীর পূর্বাভাস দেয়। তারপরে একটি সাধারণ লজিস্টিক রিগ্রেশন প্রশিক্ষণ দিন এবং এটি বেসলাইনকে বীট করে কিনা তা তুলনা করুন। পাশাপাশি দুটির মেট্রিক্স দেখাও।
দুর্বল প্রম্পট / শক্তিশালী প্রম্পট
দুর্বল প্রম্পট:
এই ডেটা দিয়ে সেরা মডেল তৈরি করুন।
"সেরা" অনির্ধারিত; কোন সমস্যা টাইপ নেই, কোন লক্ষ্য নেই, কোন সাফল্যের মাপকাঠি নেই এবং কোন বিভাগ কৌশল নেই। এআই একটি এলোমেলো প্যাটার্ন তৈরি করে, সম্ভবত লিকি।
শক্তিশালী প্রম্পট:
আপনার ভূমিকা: মডেলিং সহকারী। সমস্যা: শ্রেণীবিভাগ, লক্ষ্য "মন্থন" (0/1), শ্রেণীগত ভারসাম্যহীনতা রয়েছে (~12% মন্থন)। সাফল্যের মাপকাঠি: যারা মন্থন করে তাদের স্মরণ করা একটি অগ্রাধিকার। ডেটা স্বাধীন পর্যবেক্ষণ (সময় সিরিজ নয়)। টাস্ক: (1) 80/20% স্তরিত বিভক্ত, (2) ডামি ক্লাসিফায়ার বেসলাইন, (3) লজিস্টিক রিগ্রেশন, পাইপলাইনে সমস্ত রূপান্তর এবং শুধুমাত্র প্রশিক্ষণ থেকে শিখেছি। বিভক্ত করার আগে পরীক্ষার সেট স্পর্শ করবেন না।
এখানে সমস্যার ধরন, ভারসাম্যহীনতা, মানদণ্ড এবং ফুটো পরিমাপ স্পষ্ট।
সাধারণ ভুল
- প্রকৃত উদ্দেশ্য অনুযায়ী সাফল্যের মানদণ্ড নির্বাচন না করা। ভারসাম্যহীন ডেটাতে "নির্ভুলতা" বিভ্রান্তিকর; সংখ্যালঘু শ্রেণীকে ধরতে চাইলে প্রত্যাহার সামনে আসে।
- প্রশিক্ষণের সময় পরীক্ষার সেট স্পর্শ করা। বিভক্ত করার আগে স্কেলিং/এনকোডিং করা ফাঁস এবং আসল কর্মক্ষমতা লুকিয়ে রাখে।
- টাইম সিরিজে এলোমেলো বিভাজন। মডেল ভবিষ্যত দেখে, উৎপাদনে ধসে পড়ে; কালানুক্রমিক বিভাজন অপরিহার্য।
- একটি বেসলাইন স্থাপন না করে একটি জটিল মডেলে ঝাঁপ দেওয়া। বেঞ্চমার্ক ছাড়া আপনি জানতে পারবেন না যে একটি মডেল সত্যিই ভাল বা না।
- ব্যাখ্যাযোগ্যতা উপেক্ষা করা। ব্যবসায়িক সিদ্ধান্তে, একটি সাধারণ ব্যাখ্যাযোগ্য মডেল প্রায়ই একটি কালো বাক্সের চেয়ে বেশি মূল্যবান।
টিপ: আপনি একটি মডেল তৈরি করা শুরু করার আগে, একটি বাক্য লিখুন: "এই মডেলটি _____ ভবিষ্যদ্বাণী করবে, এর সাফল্য মেট্রিক _____ দ্বারা পরিমাপ করা হবে, কারণ কাজের প্রকৃত খরচ হল _____।" আপনি যদি এই বাক্যটি পূরণ করতে না পারেন তবে আপনি এখনও কোড লিখতে প্রস্তুত নন।
সংক্ষেপে
একটি মডেল তৈরির সবচেয়ে গুরুত্বপূর্ণ অংশটি কোড নয়, তবে সিদ্ধান্তগুলি যা এর আগে থাকে: সঠিক সমস্যাটি সংজ্ঞায়িত করা (শ্রেণীবিভাগ বা রিগ্রেশন, লক্ষ্য কী, সাফল্যের মানদণ্ড কী) এবং ডেটা মোটামুটিভাবে বিভক্ত করা (পরীক্ষা সেট স্পর্শ না করে; সময় সিরিজে কালানুক্রমিক)। সর্বদা একটি সাধারণ বেসলাইন দিয়ে শুরু করুন এবং জটিলতা যোগ করুন শুধুমাত্র যখন এটি প্রাপ্য হয়; অধিকাংশ ব্যবসায়িক প্রেক্ষাপটে ক্ষমতার চেয়ে ব্যাখ্যাযোগ্যতাকে মূল্য দেওয়া হয়। AI অ্যালগরিদম নির্বাচন এবং কোডে একটি শক্তিশালী উপদেষ্টা, কিন্তু আপনি কী ভবিষ্যদ্বাণী করেন এবং কেন তা মানুষই সিদ্ধান্ত নেয়।
আবেদন টাস্ক
একটি ভবিষ্যদ্বাণী সমস্যা সংজ্ঞায়িত করুন এবং লিখিতভাবে নিম্নলিখিত বাক্যটি সম্পূর্ণ করুন: "এই মডেলটি ___ (শ্রেণীবিভাগ/রিগ্রেশন) ভবিষ্যদ্বাণী করবে, লক্ষ্য ___, সাফল্যের মানদণ্ড হল ___ কারণ ___।" তারপরে সঠিক কৌশলের সাথে ডেটা বিভক্ত করুন (কালানুক্রমিক যদি এটি একটি টাইম সিরিজ হয়), একটি বেসলাইন স্থাপন করুন এবং একটি সাধারণ প্যাটার্ন সেই বেসলাইনটি ভঙ্গ করে কিনা তা পরিমাপ করুন।
চেকলিস্ট
- [ ] আমি কি স্পষ্টভাবে সমস্যার ধরন (শ্রেণীবিভাগ/রিগ্রেশন) এবং লক্ষ্য নির্ধারণ করেছি?
- আমি কি কাজের প্রকৃত খরচের উপর ভিত্তি করে সাফল্যের মানদণ্ড বেছে নিয়েছি?
- [ ] আমি কি প্রশিক্ষণের সময় পরীক্ষার সেটটি অস্পৃশ্য রেখেছিলাম?
- [ ] এটি একটি টাইম সিরিজ হলে, আমি কি এটিকে কালানুক্রমিকভাবে ভাগ করেছি?
- জটিল মডেলে যাওয়ার আগে আমি কি একটি বেসলাইন স্থাপন করেছি?