ফ্রিচার এবং লেবেল (Features & Labels)
ধরা যাক, আপনি একটি রেসিপি কার্ডের (recipe card) দিকে তাকিয়ে আছেন। এর এক পাশে রয়েছে এর সমস্ত উপাদান (ingredients): যেমন ময়দা, চিনি, ডিম, মাখন, ভ্যানিলা এক্সট্র্যাক্ট বা এসেন্স। আর এর অন্য পাশে রয়েছে খাবারের নাম (dish name): চকলেট কেক (chocolate cake)।
মেশিন লার্নিংয়ের ভাষায় এই উপাদানগুলোকেই ফিচার (features) বলা হয় এবং খাবারের নামটিকে লেবেল (label) বলা হয়।
ফিচার (Features) = মডেল কোনো কিছু প্রেডিক্ট বা অনুমান করার জন্য যে ইনফরমেশন বা তথ্য ব্যবহার করে (অর্থাৎ এগুলো হলো ইনপুট বা inputs)।
লেবেল (Label) = মডেল যা প্রেডিক্ট বা অনুমান করার চেষ্টা করে (অর্থাৎ এটি হলো আউটপুট বা output)।
ব্যাস, এতটুকুই। সুপারভাইজড মেশিন লার্নিংয়ের (Supervised ML) প্রতিটি কাজই শুধু একটি নির্দিষ্ট নিয়মে চলে: "এই ফিচারগুলো ব্যবহার করে, এটি কীসের লেবেল বা কার লেবেল তা প্রেডিক্ট বা অনুমান করো।"
একটি বাস্তব উদাহরণ
ধরা যাক, আপনি অনুমান করতে চাইছেন যে একজন শিক্ষার্থী পরীক্ষায় পাস করবে নাকি ফেল করবে। এর জন্য আপনার কাছে থাকা ডেটাগুলো নিচে দেওয়া হলো:
| পড়ার সময় (Hours Studied) | ঘুমের সময় (Hours Slept) | রিভিউ ক্লাস করেছে? (Attended Review?) | ফলাফল (Result) |
|---|---|---|---|
| ৬ | ৮ | হ্যাঁ (Yes) | পাস (Pass) |
| ২ | ৪ | না (No) | ফেল (Fail) |
| ৭ | ৭ | হ্যাঁ (Yes) | পাস (Pass) |
| ১ | ৫ | না (No) | ফেল (Fail) |
প্রথম তিনটি কলাম — পড়ার সময় (Hours Studied), ঘুমের সময় (Hours Slept), রিভিউ ক্লাস করেছে কি না (Attended Review) — এগুলো হলো এর ফিচার (features)। এগুলো মূলত এক একটি ক্লু (clues) বা সূত্র হিসেবে কাজ করে।
আর এর শেষ কলামটি — ফলাফল (Result) — হলো এর লেবেল (label)। আর মডেল মূলত এই উত্তরগুলোকেই প্রেডিক্ট বা অনুমান করতে শেখে।
কোডিং করার সময়, ফিচারগুলোকে সাধারণত X দিয়ে বোঝানো হয় (এটি বড় হাতের লেখা হয়, কারণ এটি অনেকগুলো কলাম মিলে তৈরি হওয়া একটি ম্যাট্রিক্স), এবং লেবেলগুলোকে y দিয়ে বোঝানো হয় (এটি ছোট হাতের লেখা হয়, কারণ এটি শুধুমাত্র একক একটি কলাম হয়)।
ফিচার এবং লেবেলগুলোকে আলাদা করা (Extracting Features & Labels)
ভালো ফিচার বনাম খারাপ ফিচার
সবগুলো ফিচার কখনোই একইভাবে কাজ করে না বা সমান হয় না। একটি ভালো ফিচার মূলত মডেলের অনুমানের বা প্রেডিকশনের সবচেয়ে দরকারি জিনিস হিসেবে কাজ করে। অন্যদিকে একটি খারাপ ফিচার মডেলটিকে শুধু বিভ্রান্ত করে বা ভুল পথে নিয়ে যায় (যাকে noise বলা হয়)।
যেমন আপনি যদি বাড়ির দাম অনুমান বা প্রেডিক্ট করতে চান, তবে:
- ভালো ফিচারগুলো হতে পারে: বর্গফুট, বেডরুমের সংখ্যা, আশেপাশের এলাকা ও পরিবেশ এবং বাড়িটির বয়স
- খারাপ বা দরকার নেই এমন ফিচারগুলো হতে পারে: মেইলবক্সের রঙ, মালিকের প্রিয় সিনেমা বা আপনি কোন দিন বাড়িটির খোঁজ পেয়েছিলেন ইত্যাদি
এভাবে প্রয়োজনীয় ফিচার বেছে নেওয়া, নতুন ফিচার তৈরি করা বা সেগুলোকে পরিবর্তন করার এই পুরো প্রক্রিয়াটিকে ফিচার ইঞ্জিনিয়ারিং (feature engineering) বলা হয় — এবং অভিজ্ঞ মেশিন লার্নিং প্র্যাকটিশনাররা বা ডেভেলপাররা সব সময় বলে থাকেন যে এটি অনেক সময় অ্যালগরিদম বেছে নেওয়ার চেয়েও বেশি গুরুত্বপূর্ণ হয়ে দাঁড়ায়।
ফিচারের বিভিন্ন ধরন (Types of features)
- নিউমেরিক্যাল (Numerical): এর মধ্যে বয়স, বেতন বা তাপমাত্রার মতো বিভিন্ন সংখ্যা থাকে (এগুলো সরাসরি ডেটাসেটে ব্যবহার করা যায়)
- ক্যাটেগরিক্যাল (Categorical): এর মধ্যে বিভিন্ন ক্যাটাগরি বা ধরন থাকে, যেমন: রঙ, দেশ, "হ্যাঁ/না" (এগুলোকে ব্যবহার করার আগে সংখ্যায় বদলে নিতে হয়)
- টেক্সট (Text): এর মধ্যে রিভিউ (reviews) বা টুইটগুলোর (tweets) মতো যেকোনো কাঁচা টেক্সট থাকে (এগুলো সরাসরি ব্যবহার করা যায় না, বরং এগুলোতে ভারী প্রসেসিং প্রয়োজন হয়)
- ডিরাইভড (Derived): এগুলো হলো আপনার নিজের তৈরি করা নতুন কোনো ফিচার — যেমন "বর্তমান বছর" থেকে "তৈরির বছর" বাদ দিয়ে "বাড়ির বয়স" বের করা
ফিচার ইঞ্জিনিয়ারিং: আরও ভালো ফিচার তৈরি করা (Feature Engineering: Creating Better Features)
ছোট কুইজ
পড়া চালিয়ে যান