Home »
Blog »
AI/ML Engineer সিরিজ » Series 05 » Episode 03
Regression Evaluation: MAE, MSE, RMSE, R² — model 'ভালো' মানে কী?
regression মেট্রিক বোঝা (Series 05, Episode 03)
🟢 BEGINNER
Series 05 — Classical Machine Learning
Episode 03 / 11
📑 এই পর্বে যা যা আছে
- ১. গল্প: "model কি ভালো?" — Boss-এর সহজ প্রশ্ন, কঠিন উত্তর
- ২. সমস্যা: "ভালো" মানে কী, সংখ্যায়?
- ৩. Error মাপার মূল ধারণা
- ৪. MAE — গড় ভুল, সহজ ব্যাখ্যা
- ৫. MSE — বড় ভুলকে শাস্তি
- ৬. RMSE — একই একক, সবচেয়ে ব্যবহৃত
- ৭. R² — model কতটা "ব্যাখ্যা" করল
- ৮. কোড: সব metric একসাথে (P2-তে)
- ৯. Visual: metric-রা কী দেখায়
- ১০. কোন metric কখন? (decision guide)
- ১১. Boss Question
- ১২. Job Requirement Decoder
- ১৩. সাধারণ ভুল
- ১৪. Interview Prep
- ১৫. হাতে-কলমে
- ১৬. Project Connection ও সারসংক্ষেপ
🧩 ১. গল্প: "model কি ভালো?" — Boss-এর সহজ প্রশ্ন, কঠিন উত্তর
গত episode-এ Rahim House Price model বানাল। খুশি হয়ে Boss-কে দেখাতে গেল। Boss একটাই প্রশ্ন করল:
"ঠিক আছে, তোমার model কি ভালো?" Rahim থমকে গেল — সে জানে model prediction দেয়,
কিন্তু "ভালো" মানে কী, সংখ্যায় বলবে কীভাবে?
Arif বলল: "একটা model বানানো সহজ; সেটা কতটা ভুল করছে সংখ্যায় বলতে পারাটাই আসল
engineering। Boss-কে '৮৫% ভালো' বললে হবে না — বলতে হবে 'গড়ে model ৭ লাখ টাকা ভুল করে',
সেটা business-এ গ্রহণযোগ্য কিনা তুমি ঠিক করবে। এখানেই evaluation metric।"
❓ ২. সমস্যা: "ভালো" মানে কী, সংখ্যায়?
Regression-এ prediction একটা সংখ্যা, আসল উত্তরও একটা সংখ্যা। তাই "ভালো" মানে —
prediction গুলো আসল মানের কতটা কাছাকাছি। এই দূরত্ব (error) মাপার কয়েকটা standard উপায় আছে,
প্রতিটা একটু ভিন্ন গল্প বলে। এদের নাম: MAE, MSE, RMSE, R²।
মূল কথা: একটা সংখ্যা দিয়ে model-এর ভালোত্ব মাপা যায় না — কোন metric দেখছেন আর কেন, সেটা
সমস্যার উপর নির্ভর করে। একজন engineer জানে কখন কোনটা।
📐 ৩. Error মাপার মূল ধারণা
প্রতিটা bাড়ির জন্য: error = actual − predicted (residual)। ৫টা বাড়ির উদাহরণ (লাখ টাকায়):
বাড়ি actual predicted error (actual-pred)
1 55 58 -3
2 82 76 +6
3 110 112 -2
4 60 50 +10
5 140 145 -5
এখন প্রশ্ন — এই আলাদা আলাদা error-গুলোকে একটা সংখ্যায় সারাংশ করব কীভাবে? সরাসরি যোগ করলে
+আর− কাটাকাটি হয়ে ভুল ছবি দেবে। তাই বিভিন্ন metric বিভিন্ন কৌশল নেয়।
📊 ৪. MAE — Mean Absolute Error
সবচেয়ে সহজ: প্রতিটা error-এর absolute value (চিহ্ন ফেলে) নিয়ে গড় করুন।
MAE = mean(|error|)
= (3 + 6 + 2 + 10 + 5) / 5
= 26 / 5 = 5.2 লাখ টাকা
ব্যাখ্যা: "model গড়ে ৫.২ লাখ টাকা ভুল করে।" — এটাই MAE-র বড় সুবিধা:
target-এর একই একক, Boss-কে সহজে বোঝানো যায়। MAE outlier-এর প্রতি অপেক্ষাকৃত সহনশীল
(robust), কারণ বড় ভুলকে বাড়তি শাস্তি দেয় না।
📈 ৫. MSE — Mean Squared Error
প্রতিটা error বর্গ (square) করে গড়:
MSE = mean(error^2)
= (9 + 36 + 4 + 100 + 25) / 5
= 174 / 5 = 34.8 (একক: লাখ^2 — ব্যাখ্যা করা কঠিন)
বর্গ করার ফলে বড় ভুল অনেক বেশি শাস্তি পায় (১০-এর বর্গ ১০০, ২-এর বর্গ ৪)।
তাই যদি বড় ভুল খুব ক্ষতিকর হয় (যেমন দাম ৫০ লাখ ভুল), MSE সেটা তীব্রভাবে ধরিয়ে দেয়।
অসুবিধা: একক বর্গ হয়ে যায় (লাখ²), মানুষকে বোঝানো কঠিন — এজন্যই RMSE।
📉 ৬. RMSE — Root Mean Squared Error
MSE-এর বর্গমূল (square root):
RMSE = sqrt(MSE) = sqrt(34.8) = 5.9 লাখ টাকা
RMSE = MSE-এর "বড় ভুলকে শাস্তি" গুণ + MAE-এর "একই একক" সুবিধা — দুটোরই সেরা দিক।
তাই বাস্তবে RMSE সবচেয়ে বেশি reported। খেয়াল করুন RMSE (৫.৯) > MAE (৫.২) —
এই ব্যবধান বলছে কিছু বড় ভুল (বাড়ি ৪-এর মতো) আছে। RMSE ≈ MAE হলে বুঝবেন error গুলো মোটামুটি সমান।
🎯 ৭. R² — Coefficient of Determination
উপরের তিনটা error-এর একক থাকে, কিন্তু "৫.৯ লাখ ভুল কি ভালো?" — সেটা দামের স্কেলের উপর নির্ভর করে।
R² একটা unit-free স্কোর (সাধারণত ০ থেকে ১): model target-এর কতটা তারতম্য (variance)
ব্যাখ্যা করতে পারল।
- R² = 1.0 → নিখুঁত prediction।
- R² = 0.0 → model শুধু গড় (mean) বলার সমান, কোনো কাজের না।
- R² < 0 → model গড়ের চেয়েও খারাপ (সম্ভব!)।
উদাহরণ: R² = 0.85 মানে "model দামের তারতম্যের ৮৫% ব্যাখ্যা করতে পেরেছে"। তুলনার জন্য দারুণ,
কিন্তু একা যথেষ্ট নয় — সবসময় একটা error metric (RMSE/MAE)-এর সাথে দেখুন।
💻 ৮. কোড: সব metric একসাথে (Project P2-তে)
কেন scikit-learn.metrics? সব standard metric একই জায়গায়, পরীক্ষিত ও দ্রুত —
নিজে হাতে বর্গমূল হিসাব করার দরকার নেই:
import numpy as np
from sklearn.metrics import (
mean_absolute_error,
mean_squared_error,
r2_score,
)
y_true = np.array([55, 82, 110, 60, 140])
y_pred = np.array([58, 76, 112, 50, 145])
mae = mean_absolute_error(y_true, y_pred)
mse = mean_squared_error(y_true, y_pred)
rmse = np.sqrt(mse) # RMSE = sqrt(MSE)
r2 = r2_score(y_true, y_pred)
print(f"MAE : {mae:.2f} লাখ")
print(f"MSE : {mse:.2f} (লাখ^2)")
print(f"RMSE: {rmse:.2f} লাখ")
print(f"R2 : {r2:.3f}")
# আউটপুট (আনুমানিক):
# MAE : 5.20 লাখ
# MSE : 34.80
# RMSE: 5.90 লাখ
# R2 : 0.968
নতুন sklearn-এ RMSE সরাসরি চাইলে mean_squared_error(y_true, y_pred, squared=False)
দিতে পারেন, অথবা উপরের মতো নিজে np.sqrt করুন — দুটোই ঠিক।
🖼️ ৯. Visual: metric-রা কী দেখায়
actual - prediction = residual (কতটা দূরে)
MAE : সব দূরত্বের সরল গড় → "গড়ে কত ভুল?"
MSE : দূরত্ব^2-এর গড় → "বড় ভুল কি আছে?" (শাস্তি দেয়)
RMSE : sqrt(MSE) → MSE-র শাস্তি + আসল একক
R^2 : model বনাম "শুধু গড়" → "কতটা ভালো, ০–১ স্কেলে?"
🧭 ১০. কোন metric কখন? (decision guide)
| পরিস্থিতি | ব্যবহার করুন | কেন |
| Boss/stakeholder-কে বোঝানো | MAE বা RMSE | target-এর একই একক, সহজবোধ্য |
| বড় ভুল খুব ক্ষতিকর | RMSE / MSE | বড় error-কে বেশি শাস্তি দেয় |
| outlier অনেক, robust চাই | MAE | বড় ভুলে কম প্রভাবিত হয় |
| দুই model তুলনা (স্কেল-নিরপেক্ষ) | R² | unit-free, ০–১ স্কেল |
Engineer perspective: সাধারণত আমি RMSE + R² একসাথে দেখাই, আর Boss-কে MAE-তে বলি
("গড়ে X টাকা ভুল")। কখনো শুধু একটা সংখ্যায় সিদ্ধান্ত নেবেন না।
💼 ১১. Boss Question
Boss: "এই MAE, RMSE, R² দিয়ে আমার ব্যবসার কী?"
উত্তর: ধরুন আপনি model দিয়ে property price দিচ্ছেন। MAE ৫ লাখ মানে গড়ে ৫ লাখ ভুল —
৮০ লাখের flat-এ সেটা হয়তো সহনীয়, কিন্তু ১০ লাখের জমিতে বিপর্যয়। এই metric-ই ঠিক করে দেয়
model production-এ ছাড়া যাবে কিনা। খারাপ metric নিয়ে deploy করলে ভুল দামে deal হবে,
সরাসরি টাকা লস। তাই evaluation = risk management।
🔎 ১২. Job Requirement Decoder
JD: "Ability to evaluate ML models using appropriate metrics."
১. কী বোঝায়? সমস্যা অনুযায়ী সঠিক metric বেছে model-এর মান মাপতে পারা।
২. কেন চায়? ভুল metric = ভুল সিদ্ধান্ত = production disaster।
৩. কোন সমস্যা সমাধান করে? "model কি deploy-যোগ্য?" — objective উত্তর দেয়।
৪. junior-এর কী জানা লাগে? MAE/MSE/RMSE/R² কী মাপে, একক কী, কখন কোনটা, sklearn-এ বের করা।
৫. এখনই master লাগবে না: MAPE, adjusted R², advanced statistical test।
৬. GitHub-এ কীভাবে দেখাবে? notebook-এ metric report + actual-vs-predicted plot + short interpretation।
৭. Interview: "RMSE vs MAE কখন?", "R² negative হয় কীভাবে?", "কেন শুধু একটা metric যথেষ্ট নয়?"
⚠️ ১৩. সাধারণ ভুল
ভুল ১: শুধু R² দেখে সিদ্ধান্ত → error metric ছাড়া R² অসম্পূর্ণ ছবি দেয়।
ভুল ২: Training set-এ metric মেপে খুশি হওয়া → সবসময় test set-এ মাপুন; training metric optimistic।
ভুল ৩: MSE-র সংখ্যা সরাসরি Boss-কে বলা → একক বর্গ (লাখ²), মানুষ বোঝে না; RMSE বলুন।
ভুল ৪: classification-এ RMSE ব্যবহার → classification-এর জন্য accuracy/F1 (E05), regression metric নয়।
ভুল ৫: "RMSE ৫" ভালো না খারাপ বলা target scale না জেনে → context ছাড়া কোনো error সংখ্যা অর্থহীন।
🎤 ১৪. Interview Prep
প্র: MAE আর RMSE-র মূল পার্থক্য?
উ: RMSE বড় ভুলকে বেশি শাস্তি দেয় (বর্গ করে); MAE সব ভুলকে সমান ওজন দেয়, outlier-এ robust।
প্র: RMSE > MAE হলে কী বোঝায়?
উ: কিছু বড় error আছে (error-এর variance বেশি)। সমান হলে error গুলো মোটামুটি একরকম।
প্র: R² = 0 মানে?
উ: model শুধু গড় বলার সমান — কোনো predictive value নেই।
প্র: R² negative হতে পারে?
উ: হ্যাঁ, model গড়ের চেয়েও খারাপ হলে (বিশেষত test set-এ)।
প্র: কেন একটার বেশি metric দেখেন?
উ: প্রতিটা এক দিক দেখায় (গড় ভুল, বড় ভুল, স্কেল-নিরপেক্ষ মান) — একসাথে পূর্ণ ছবি।
✍️ ১৫. হাতে-কলমে
১. E02-এর House Price model-এর test set-এ MAE, RMSE, R² তিনটাই বের করুন।
২. ইচ্ছে করে একটা prediction-এ বড় error ঢোকান (একটা মান ১০০ বাড়িয়ে দিন)। খেয়াল করুন RMSE
MAE-র চেয়ে কত বেশি লাফ দেয় — এই থেকেই RMSE-র "বড় ভুলে সংবেদনশীলতা" বুঝবেন।
৩. একটা actual-vs-predicted scatter plot আঁকুন (Series 03-এর Matplotlib দিয়ে); নিখুঁত হলে বিন্দুগুলো ৪৫° রেখায় থাকবে।
🚀 ১৬. Project Connection ও সারসংক্ষেপ
এখন Project P2 (House Price)-কে আমরা সংখ্যায় বিচার করতে পারি — শুধু "বানালাম" নয়, "কতটা ভালো"
বলতে পারি। এই evaluation অভ্যাসটাই E11-এর end-to-end project এবং flagship Career Assistant-এ
প্রতিটা model deploy করার আগে "gate" হিসেবে কাজ করবে: metric গ্রহণযোগ্য না হলে production-এ যাবে না।
এই Episode-এ শিখলাম:
✓ MAE = গড় absolute ভুল (একই একক, robust, সহজবোধ্য)
✓ MSE = বর্গ করা ভুলের গড় (বড় ভুলকে শাস্তি, একক বর্গ)
✓ RMSE = sqrt(MSE) — শাস্তি + আসল একক, সবচেয়ে বেশি reported
✓ R² = model কতটা variance ব্যাখ্যা করল (০–১, negative-ও হতে পারে)
✓ কোন metric কখন — সমস্যা ও audience অনুযায়ী
✓ সবসময় test set-এ মাপুন, একাধিক metric একসাথে দেখুন
পরবর্তী Episode: Regression তো হলো — এবার Classification। Logistic Regression দিয়ে
"হ্যাঁ/না" prediction, Customer Churn সমস্যা দিয়ে (Project P3 শুরু)।