Foundationsপড়তে ৬ মিনিট লাগবে

ফ্রিচার এবং লেবেল (Features & Labels)

রান্নার আইটেমগুলো হলো ফিচার আর খাবারের নামটি হলো লেবেল — আপনার মডেলকে শেখান যে তার কোন কোন উপাদানের দিকে নজর দিতে হবে এবং এর ওপর ভিত্তি করে কী অনুমান করতে হবে
features:ইনপুট কলাম (Input columns) · মডেল মূলত যে ডেটাগুলো দেখতে পায়labels:আউটপুট কলাম (Output column) · মডেল যা প্রেডিক্ট (predict) বা অনুমান করেfeature engineering:অত্যন্ত গুরুত্বপূর্ণ (Critical) · বেশির ভাগ সময়ে এটি কোনো অ্যালগরিদম বেছে নেওয়ার চেয়েও বেশি গুরুত্বপূর্ণ হয়ে দাঁড়ায়

ধরা যাক, আপনি একটি রেসিপি কার্ডের (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)

import pandas as pd
from sklearn.tree import DecisionTreeClassifier
# একটি DataFrame হিসেবে র ডেটা (Raw data)
data = pd.DataFrame({
'hours_studied': [6, 2, 7, 1, 5, 8, 3, 4],
'hours_slept': [8, 4, 7, 5, 6, 9, 3, 7],
'attended_review': [1, 0, 1, 0, 1, 1, 0, 0],
'result': [1, 0, 1, 0, 1, 1, 0, 0], # 1=pass, 0=fail
})
# ফিচার (X) এবং লেবেল (y)-এ আলাদা বা ভাগ করা
X = data[['hours_studied', 'hours_slept', 'attended_review']]
y = data['result']
print("ফিচার (Features) (X):")
print(X.head(3))
print("\nলেবেল (Labels) (y):")
print(y.head(3))
# মডেল ট্রেন বা প্রশিক্ষণ দেওয়া
model = DecisionTreeClassifier()
model.fit(X, y)
# প্রেডিক্ট বা অনুমান করা: যে শিক্ষার্থী ৫ ঘণ্টা লেখাপড়া করেছে, ৭ ঘণ্টা ঘুমিয়েছে এবং রিভিউ ক্লাস করেছে
print("\nপ্রেডিকশন বা অনুমান (Prediction):", model.predict([[5, 7, 1]]))
Output
ফিচার (Features) (X):
   hours_studied  hours_slept  attended_review
0              6            8                1
1              2            4                0
2              7            7                1

লেবেল (Labels) (y):
0    1
1    0
2    1

প্রেডিকশন বা অনুমান (Prediction): [1]

ভালো ফিচার বনাম খারাপ ফিচার

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

যেমন আপনি যদি বাড়ির দাম অনুমান বা প্রেডিক্ট করতে চান, তবে:

  • ভালো ফিচারগুলো হতে পারে: বর্গফুট, বেডরুমের সংখ্যা, আশেপাশের এলাকা ও পরিবেশ এবং বাড়িটির বয়স
  • খারাপ বা দরকার নেই এমন ফিচারগুলো হতে পারে: মেইলবক্সের রঙ, মালিকের প্রিয় সিনেমা বা আপনি কোন দিন বাড়িটির খোঁজ পেয়েছিলেন ইত্যাদি

এভাবে প্রয়োজনীয় ফিচার বেছে নেওয়া, নতুন ফিচার তৈরি করা বা সেগুলোকে পরিবর্তন করার এই পুরো প্রক্রিয়াটিকে ফিচার ইঞ্জিনিয়ারিং (feature engineering) বলা হয় — এবং অভিজ্ঞ মেশিন লার্নিং প্র্যাকটিশনাররা বা ডেভেলপাররা সব সময় বলে থাকেন যে এটি অনেক সময় অ্যালগরিদম বেছে নেওয়ার চেয়েও বেশি গুরুত্বপূর্ণ হয়ে দাঁড়ায়

ফিচারের বিভিন্ন ধরন (Types of features)

  • নিউমেরিক্যাল (Numerical): এর মধ্যে বয়স, বেতন বা তাপমাত্রার মতো বিভিন্ন সংখ্যা থাকে (এগুলো সরাসরি ডেটাসেটে ব্যবহার করা যায়)
  • ক্যাটেগরিক্যাল (Categorical): এর মধ্যে বিভিন্ন ক্যাটাগরি বা ধরন থাকে, যেমন: রঙ, দেশ, "হ্যাঁ/না" (এগুলোকে ব্যবহার করার আগে সংখ্যায় বদলে নিতে হয়)
  • টেক্সট (Text): এর মধ্যে রিভিউ (reviews) বা টুইটগুলোর (tweets) মতো যেকোনো কাঁচা টেক্সট থাকে (এগুলো সরাসরি ব্যবহার করা যায় না, বরং এগুলোতে ভারী প্রসেসিং প্রয়োজন হয়)
  • ডিরাইভড (Derived): এগুলো হলো আপনার নিজের তৈরি করা নতুন কোনো ফিচার — যেমন "বর্তমান বছর" থেকে "তৈরির বছর" বাদ দিয়ে "বাড়ির বয়স" বের করা

ফিচার ইঞ্জিনিয়ারিং: আরও ভালো ফিচার তৈরি করা (Feature Engineering: Creating Better Features)

import pandas as pd
data = pd.DataFrame({
'year_built': [1990, 2005, 2018, 1975],
'sqft': [1400, 2200, 1800, 1100],
'bedrooms': [3, 4, 3, 2],
'bathrooms': [2, 3, 2, 1],
})
# ডিরাইভড ফিচার (Derived feature): বাড়ির বয়স
data['age'] = 2026 - data['year_built']
# ডিরাইভড ফিচার (Derived feature): প্রতি বেডরুমের বর্গফুট
data['sqft_per_bed'] = data['sqft'] / data['bedrooms']
# ডিরাইভড ফিচার (Derived feature): বাথরুম বনাম বেডরুমের অনুপাত বা রেশিও
data['bath_ratio'] = data['bathrooms'] / data['bedrooms']
print(data[['age', 'sqft_per_bed', 'bath_ratio']])
Output
   age  sqft_per_bed  bath_ratio
0   36    466.666667    0.666667
1   21    550.000000    0.750000
2    8    600.000000    0.666667
3   51    550.000000    0.500000
Note: নতুনদের করা একটি কমন ভুল হলো: তারা ভুলবশত মডেলের কাজ সহজ করতে ফিচারের মধ্যে লেবেল (অথবা লেবেল থেকে বের করা কোনো তথ্য) দিয়ে রাখে। যেমন আপনি যদি অনুমান করতে চান যে কেউ কোনো পণ্য কিনবে কি না এবং আপনি যদি ভুল করে এর ফিচারের ভেতরে তাদের আগের "ক্রয়কৃত পরিমাণ বা বিলের হিসাব (receipt amount)" দিয়ে রাখেন — তবে সেটি হবে সরাসরি চিটিং (cheating) বা চুরি করা! কারণ ট্রেইনিংয়ের সময় মডেলটি এর জন্য একেবারেই পারফেক্ট বা নিখুঁত নম্বর পাবে, কিন্তু এর থেকে সে কাজের মতো কিছুই শিখতে পারবে না। এই ধরনের ঘটনাকে মূলত ডেটা লিকেজ (data leakage) বলা হয়।

ছোট কুইজ

আপনি একটি মডেল তৈরি করছেন যেটি অনুমান করবে যে আগামীকাল বৃষ্টি হবে কি না। এখানে নিচের কোনটি একটি ফিচার (FEATURE) হতে পারে?
Challenge

পড়া চালিয়ে যান

মেশিন লার্নিং (Machine Learning) কী?
কম্পিউটারকে গতানুগতিক বা নির্দিষ্ট কোনো নিয়ম শেখানোর বদলে বিভিন্ন উদাহরণের সাহায্যে শেখানো
মেশিন লার্নিং (Machine Learning)-এর ধরনগুলো
তিনটি ক্লাসরুম ও তিনটি শেখার ধরন — সুপারভাইজড (supervised), আনসুপারভাইজড (unsupervised) এবং রিইনফোর্সমেন্ট (reinforcement)
ট্রেইন-টেস্ট স্প্লিট (Train-Test Split)
বাসার কাজ বা হোমওয়ার্ক দিয়ে প্র্যাকটিস করানো এবং নতুন প্রশ্ন দিয়ে পরীক্ষা নেওয়া — এ কারণেই আপনার ডেটাকে আলাদা করা বা স্প্লিট (split) করা খুবই জরুরি
ওভারফিটিং এবং আন্ডারফিটিং (Overfitting & Underfitting)
গোল্ডিলকস এবং তিনটি মডেল — একটি খুব সাধারণ, একটি অনেক জটিল, আর অন্যটি একদম পারফেক্ট