ফিচার ইঞ্জিনিয়ারিং (Feature Engineering)
ভাবুন তো, আপনি রাতের খাবার রান্না করতে যাচ্ছেন। আপনি বাজার থেকে এক ব্যাগ বাজারপাতি নিয়ে এলেন: কাদা মাখা গাজর, আস্ত মুরগি, খোসা ছাড়ানো রসুন আর এক ডালা পনির। আপনি কি এগুলো সোজা কড়াইতে দিয়ে দেবেন? কখনোই নয়। আপনাকে অবশ্যই আগে সবকিছু ধুতে, খোসা ছাড়াতে, কাটতে, মাপতে এবং গুছিয়ে রাখতে (prep) হবে।
ফিচার ইঞ্জিনিয়ারিং (Feature engineering) হলো মূলত মেশিন লার্নিংয়ের ডেটা প্রেপ (data prep) ধাপ। যেকোনো কাঁচা বা র ডেটা (raw data) সাধারণত বেশ অগোছালো হয় — যেমন: লেখা বা টেক্সট হিসেবে তারিখ দেওয়া থাকে, ক্যাটাগরিগুলো শব্দ হিসেবে থাকে, বা মানগুলো বিভিন্ন স্কেলে দেওয়া থাকে। আপনার মডেল এগুলো সরাসরি ব্যবহার করতে বা খেতে পারবে না। মডেল যেন এগুলো আসলেই শিখতে বা কাজে লাগাতে পারে, সেজন্য আপনাকে এগুলোকে ট্রান্সফর্ম বা পরিবর্তন করে পরিষ্কার, সংখ্যা বা নিউমেরিক্যাল (numerical) ইনপুটে পরিণত করতে হবে।
আর সবচেয়ে মজার ব্যাপার হলো: আপনি এখানে উপাদানগুলো কতটা ভালোভাবে গুছিয়ে নিচ্ছেন বা প্রেপ করছেন, তা অনেক সময় আপনার বেছে নেওয়া রেসিপির (recipe) চেয়েও বেশি গুরুত্বপূর্ণ হয়। কারণ একেবারে জঘন্য ও আবর্জনা ফিচার পাওয়া একটি দামি মডেলের চেয়ে, দারুণ দারুণ ফিচার পাওয়া একটি সাধারণ মডেল প্রায় সবসময়ই বেশি ভালো পারফর্ম করবে।
ফিচার ইঞ্জিনিয়ারিংয়ের কয়েকটি সাধারণ পদ্ধতি (Common feature engineering techniques)
১. ক্যাটাগরি এনকোডিং বা Encoding categories
মডেলের শুধু সংখ্যা (numbers) দরকার হয়, কোনো শব্দ (words) নয়। যদি আপনার ডেটায় "color" নামে একটি কলাম থাকে যেখানে "লাল (red)", "নীল (blue)", "সবুজ (green)" ইত্যাদি শব্দ দেওয়া থাকে, তবে আপনি এগুলো সরাসরি বসিয়ে দিতে পারবেন নাস আপনাকে এগুলোকে এনকোড (encode) করতে হবে:
- ওয়ান-হট এনকোডিং (One-Hot Encoding): প্রতিটি ক্যাটাগরির জন্য একটি করে কলাম তৈরি করা হয়। লাল → [১, ০, ০], নীল → [০, ১, ০]
- লেবেল এনকোডিং (Label Encoding): লাল → ০, নীল → ১, সবুজ → ২ (তবে এখানে সাবধান থাকতে হবে — কারণ এটি দিয়ে এদের মধ্যে একটি ক্রম বা অর্ডারিং বোঝাতে পারে!)
২. নাম্বারের স্কেলিং বা Scaling numbers
যদি "বয়স (age)"-এর মান ০-১০০ এর মধ্যে হয় এবং "বেতন (salary)"-এর মান ২০,০০০-২০০,০০০ এর মধ্যে হয়, তবে মডেল ভাববে যে বেতনটাই বেশি গুরুত্বপূর্ণ শুধু এই কারণে যে এর সংখ্যাগুলো বড়। স্কেলিং (Scaling) মূলত এই সমস্যার সমাধান করে আর সে জন্য এটি সবগুলোকে একই সীমার (similar range) মধ্যে নিয়ে আসে।
৩. নতুন ফিচার তৈরি করা (Creating new features)
মাঝে মাঝে এর র ডেটার (raw data) মধ্যে সবচেয়ে সেরা ফিচারগুলো পাওয়া যায় না। একটি টাইমস্ট্যাম্প (timestamp) থেকে আপনি সপ্তাহের দিন (day of week), সময় বা ঘণ্টা (hour), এটি কি ছুটির দিন (is_weekend), সবশেষ ইভেন্ট থেকে পার হওয়া সময় (time_since_last_event) ইত্যাদি বের করে নিতে পারেন। আবার একটি ঠিকানা (address) থেকে জিপ কোড (zip code), শহরের কেন্দ্র থেকে এর দূরত্ব (distance to city center), এলাকার আয়ের পরিমাণ (neighborhood income level) ইত্যাদি বের করে নেওয়া যায়।
অ্যাকশনে ফিচার ইঞ্জিনিয়ারিং (Feature Engineering in Practice)
মিসিং বা নিখোঁজ ডেটা সামলানো (Handling missing data)
বাস্তব জগতের ডেটাগুলো অনেক সময়ই অসম্পূর্ণ হয় বা এতে অনেক ফাঁকা জায়গা (holes) থাকে। যেমন: হয়তো কেউ সার্ভের বা জরিপের একটি প্রশ্নের উত্তর দেয়নি, কোনো সেন্সরে সমস্যা হয়েছিল, বা ডেটাবেস পাল্টানোর সময় কোনো কলাম বাদ পড়েছিল। এসব ক্ষেত্রে আপনার হাতে কয়েকটি উপায় আছে:
- রো বা সারিটি ফেলে দেওয়া (Drop the row) — এটি সবচেয়ে সহজ, তবে এতে আপনি ডেটা হারাবেন
- এগুলো গড় (mean) বা মধ্যমা (median) দিয়ে পূরণ করা — এটি সংখ্যা বা নিউমেরিক্যাল ডেটার (numerical data) জন্য খুব ভালো কাজ করে আর এর ফলে ডেটাসেটের আকারও ঠিক থাকে
- মোড বা mode দিয়ে পূরণ করা — এটি ক্যাটাগরিক্যাল ডেটার (categorical data) জন্য বেশ ভালো কাজ করে
- একটি "মিসিং (missing)" ফ্ল্যাগ বা অংশ তৈরি করা — মাঝে মাঝে ডেটা মিসিং আছে — এই তথ্যটিই খুব কাজের একটি সংকেত বা সিগন্যাল (signal) হিসেবে কাজ করতে পারে
ফিচার সিলেকশন (Feature selection): কম জিনিসই অনেক সময় বেশি উপকারী হয় (less is more)
খুব বেশি ফিচার থাকা মানেই সব সময় ভালো কিছু নয়। অপ্রয়োজনীয় ফিচারগুলো মূলত নয়েজ (noise) তৈরি করে এবং ট্রেইনিংয়ের গতি (training) কমিয়ে দেয়। কোরিলেশন অ্যানালাইসিস (correlation analysis), ফিচার ইম্পরট্যান্স (feature importance), এবং পিসিএ (PCA)-এর মতো টেকনিকগুলো বা পদ্ধতিগুলো আপনার কেবল দরকারি জিনিসগুলোই ধরে রাখতে সাহায্য করে।
Key Metrics
ছোট কুইজ
পড়া চালিয়ে যান