Home »
Blog »
AI/ML Engineer সিরিজ » Series 04 » Episode 06
Probability ও Bayes: 'কতটা নিশ্চিত' — AI-এর হৃদয়
conditional probability ও Bayes theorem (Series 04, Episode 06)
🟡 INTERMEDIATE
Series 04 — Math, Statistics ও Probability
Episode 06 / 07
📑 এই পর্বে যা যা আছে
- ১. গল্প: ডাক্তারের রিপোর্ট আর একটা ভয়
- ২. আসল সমস্যা: AI নিশ্চিত নয়, সম্ভাবনা বলে
- ৩. Probability basics — ০ থেকে ১
- ৪. Level 1 — conditional probability ("যদি জানি...")
- ৫. Level 2 — Bayes theorem (belief update)
- ৬. রোগ-পরীক্ষার ধাঁধা (Bayes হাতে-কলমে)
- ৭. Level 3 — Naive Bayes ও spam filter
- ৮. Random variable ও expected value
- ৯. Visual: Bayes-এর box
- ১০. Code: spam probability
- ১১. বাংলাদেশের context
- ১২. Boss Question
- ১৩. Job Requirement Decoder
- ১৪. সাধারণ ভুল ধারণা
- ১৫. Interview Prep
- ১৬. হাতে-কলমে (Mini Exercise)
- ১৭. Project Connection
- ১৮. সারসংক্ষেপ ও পরবর্তী পর্ব
🩺 ১. গল্প: ডাক্তারের রিপোর্ট আর একটা ভয়
Rahim-এর এক আত্মীয় একটা বিরল রোগের পরীক্ষা করালেন, রিপোর্ট "positive" এল। পরীক্ষাটা নাকি ৯৯%
নির্ভুল। সবাই ভয় পেয়ে গেল। Rahim Nila-কে জিজ্ঞেস করল — "৯৯% নির্ভুল মানে তো উনি প্রায় নিশ্চিত অসুস্থ, তাই না?"
Nila বলল: "এখানেই বেশিরভাগ মানুষ — এমনকি অনেক ডাক্তারও — ভুল করে। রোগটা যদি খুব বিরল হয় (ধরো
১০,০০০ জনে ১ জন), তাহলে '৯৯% নির্ভুল test'-এও positive রিপোর্ট আসলে সত্যিকারের অসুস্থ হওয়ার
সম্ভাবনা হয়তো মাত্র ১%! এই উল্টো-স্বজ্ঞাত (counter-intuitive) ফলটাই Bayes theorem
হিসাব করে দেয়।"
Rahim অবাক: "৯৯% test, কিন্তু মাত্র ১% আসলে অসুস্থ? কীভাবে?"
Nila: "কারণ prior probability (আগে থেকেই কত বিরল) সবকিছু বদলে দেয়। এই একটা ধারণা — 'নতুন তথ্য
দিয়ে belief update করা' — আধুনিক AI-এর হৃদয়। চলো দেখি।"
এই পর্বে Series 04-এর শেষ স্তম্ভ Probability — যেটা classifier, spam filter, এমনকি LLM-এর
next-token prediction-এর গভীরে বসে আছে।
🎯 ২. আসল সমস্যা: AI নিশ্চিত নয়, সম্ভাবনা বলে
একটা গুরুত্বপূর্ণ সত্য: বেশিরভাগ ML model "হ্যাঁ/না" বলে না — বলে "৮৭% সম্ভাবনা হ্যাঁ"। একটা spam
filter বলে "এই email ৯৩% সম্ভাবনায় spam"। একটা LLM বলে "পরের শব্দ 'ভাত' হওয়ার সম্ভাবনা সবচেয়ে
বেশি"। এই "কতটা সম্ভাবনা / কতটা নিশ্চিত" — পুরোটাই Probability। তাই একজন junior-কে এটা বুঝতেই হবে।
🎲 ৩. Probability basics — ০ থেকে ১
Probability হলো কোনো ঘটনার সম্ভাবনা, ০ (কখনো হবে না) থেকে ১ (নিশ্চিত হবে)-এর মধ্যে। একটা মুদ্রায়
head আসার probability ০.৫; একটা ছক্কায় ৬ আসার probability ১/৬ ≈ ০.১৭। ML-এ probability প্রায়ই
০-১০০% হিসেবে দেখানো হয় (০.৯৩ = ৯৩%)।
মূল নিয়ম: সব সম্ভাব্য ফলাফলের probability যোগ করলে ১ হয়। যেমন একটা binary
classifier যদি বলে "spam = ০.৯৩", তাহলে "not spam = ০.০৭" — যোগফল ১।
🔑 ৪. Level 1 — conditional probability ("যদি জানি...")
Conditional probability = "একটা তথ্য জানা থাকলে, আরেকটার সম্ভাবনা কত"। লেখা হয় P(A | B)
— "B ঘটেছে জানা থাকলে A-এর সম্ভাবনা"।
উদাহরণ: রাস্তায় এলোমেলো একজনের লম্বা হওয়ার সম্ভাবনা একরকম। কিন্তু "যদি জানি সে
একজন basketball খেলোয়াড়" — তাহলে লম্বা হওয়ার সম্ভাবনা অনেক বেড়ে যায়। নতুন তথ্য (basketball
খেলোয়াড়) সম্ভাবনা বদলে দিল। এটাই conditional probability।
ML-এ প্রায় সব prediction আসলে conditional: "এই feature-গুলো দেখা গেলে, target=হ্যাঁ হওয়ার
সম্ভাবনা কত" — অর্থাৎ P(target | features)।
⚙️ ৫. Level 2 — Bayes theorem (belief update)
Bayes theorem একটা সূত্র যা conditional probability উল্টে দেয়। intuition-টা এমন: আগের
বিশ্বাস (prior) + নতুন প্রমাণ (evidence) = হালনাগাদ বিশ্বাস (posterior)।
P(A | B) = P(B | A) × P(A)
─────────────────
P(B)
A = অনুমান (যেমন: রোগ আছে)
B = প্রমাণ (যেমন: test positive)
P(A) = prior → আগে থেকে কতটা সম্ভাব্য (রোগ কত বিরল)
P(B | A) = likelihood → রোগ থাকলে test positive হওয়ার হার
P(A | B) = posterior → test positive দেখে রোগ থাকার হালনাগাদ সম্ভাবনা
junior-দের সূত্র মুখস্থ করার দরকার নেই — বোঝা দরকার এই intuition: বিরল জিনিসের ক্ষেত্রে
একটা "positive" প্রমাণও তাকে হঠাৎ খুব সম্ভাব্য বানায় না, কারণ prior ছোট।
🧮 ৬. রোগ-পরীক্ষার ধাঁধা (Bayes হাতে-কলমে)
ধরা যাক ১০,০০০ জনের একটা দল, যেখানে:
- রোগটা বিরল: ১০,০০০ জনে মাত্র ১ জনের আছে (prior = 0.0001)।
- test ৯৯% নির্ভুল: রোগ থাকলে ৯৯% positive; রোগ না থাকলেও ১% ভুল positive (false positive)।
১০,০০০ জন
│
├─ ১ জন আসলে অসুস্থ → test positive ≈ 1 জন (99%)
│
└─ ৯,৯৯৯ জন সুস্থ → ভুল positive ≈ 100 জন (1% of 9999)
মোট positive ≈ 1 + 100 = 101 জন
এদের মধ্যে সত্যিই অসুস্থ = 1 জন
P(অসুস্থ | positive) ≈ 1 / 101 ≈ 1% (!)
দেখুন — "৯৯% নির্ভুল test"-এ positive এলেও, রোগটা এত বিরল যে সত্যিই অসুস্থ হওয়ার সম্ভাবনা মাত্র
~১%। এজন্যই বিরল রোগে দ্বিতীয়বার test করা হয়। এই intuition জানা থাকলে আপনি data ও model-এর
ফলাফল অনেক বেশি সঠিকভাবে ব্যাখ্যা করবেন।
👷 ৭. Level 3 — Naive Bayes ও spam filter
Bayes theorem-এর সরাসরি প্রয়োগ হলো Naive Bayes classifier — যা বহু বছর ধরে
spam filter-এ ব্যবহৃত। ধারণা: একটা email-এ কিছু শব্দ (যেমন "লটারি", "free", "জিতেছেন") দেখা গেলে,
সেটা spam হওয়ার posterior probability হিসাব করা।
- Prior: সাধারণভাবে কত শতাংশ email spam।
- Likelihood: spam email-এ "free" শব্দটা কতবার আসে বনাম normal email-এ।
- Posterior: এই শব্দগুলো দেখে email-টা spam হওয়ার হালনাগাদ সম্ভাবনা।
"Naive" বলা হয় কারণ এটা ধরে নেয় শব্দগুলো একে অপরের থেকে স্বাধীন (যা পুরোপুরি সত্য নয়), তবু বাস্তবে
চমৎকার কাজ করে ও দ্রুত। এটাই concept বোঝার সুন্দর উদাহরণ — সরল ধারণা, বাস্তব প্রয়োগ।
🎯 ৮. Random variable ও expected value
Random variable হলো এমন একটা পরিমাণ যার মান সম্ভাবনার উপর নির্ভর করে — যেমন একটা
ছক্কার ফল, বা কাল বৃষ্টি হবে কিনা। Expected value হলো এর "গড় প্রত্যাশিত ফল" —
প্রতিটা সম্ভাব্য মানকে তার probability দিয়ে গুণ করে যোগ।
ব্যবহারিক উদাহরণ: একটা lottery-তে ১% সম্ভাবনায় ১০০০ টাকা জেতা, ৯৯% সম্ভাবনায় ০।
expected value = 0.01×1000 + 0.99×0 = ১০ টাকা। টিকিটের দাম ৫০ টাকা হলে গড়ে লোকসান — এই হিসাবই
expected value। ML-এ risk/reward, এবং reinforcement learning-এ এটা কেন্দ্রীয়।
📦 ৯. Visual: Bayes-এর box
test POSITIVE test NEGATIVE
┌────────────────┬──────────────────┐
অসুস্থ (1) │ ✅ 1 (true +) │ ❌ ~0 (মিস) │
├────────────────┼──────────────────┤
সুস্থ(9999)│ ⚠️ ~100 (false+)│ ✅ ~9899 (true -) │
└────────────────┴──────────────────┘
positive box-এ মোট 101, তার মধ্যে সত্যি অসুস্থ মাত্র 1
→ P(অসুস্থ | positive) ছোট, কারণ prior ছোট
💻 ১০. Code: spam probability
scikit-learn-এর Naive Bayes দিয়ে খুব অল্প কোডে একটা spam-ধাঁচের classifier। আমরা এটা ব্যবহার
করছি কারণ probability-based classifier-এর সবচেয়ে পরিষ্কার বাস্তব উদাহরণ এটাই।
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.naive_bayes import MultinomialNB
texts = ["free lottery jiten টাকা", "meeting kal office e",
"free free offer এখনি", "project deadline kal"]
labels = [1, 0, 1, 0] # 1 = spam, 0 = normal
vec = CountVectorizer()
X = vec.fit_transform(texts)
model = MultinomialNB()
model.fit(X, labels)
test = vec.transform(["free টাকা offer"])
print("spam probability:", model.predict_proba(test)[0][1].round(3))
কী observe করবেন: predict_proba "হ্যাঁ/না" নয়, একটা probability
(যেমন ০.৯) দেয় — ঠিক যেভাবে বাস্তব spam filter কাজ করে। ভেতরে পুরোটাই Bayes theorem।
🇧🇩 ১১. বাংলাদেশের context
bKash/Nagad-এর fraud detection ঠিক এই "কতটা সম্ভাবনা fraud" হিসাব করে — একটা transaction ১০০%
fraud বলে না, বলে "এই আচরণে fraud-এর probability উঁচু"। আবার রোগ-পরীক্ষার Bayes-intuition
স্বাস্থ্য-tech startup-এ সরাসরি লাগে — একটা AI screening tool positive দিলেও prior বিবেচনা না করলে
অকারণ আতঙ্ক তৈরি হয়। junior হিসেবে এই probability-thinking আপনাকে দায়িত্বশীল সিদ্ধান্ত নিতে সাহায্য করবে।
💼 ১২. Boss Question
💼 Boss Question
Boss: "আমাদের fraud model বলছে এই transaction 'fraud'। ব্লক করে দিই?"
উত্তর: একটু দাঁড়ান — model আসলে "fraud" বলে না, বলে "fraud-এর probability = ৮২%"।
এখন সিদ্ধান্তটা business-এর: fraud আটকানোর লাভ বনাম একজন সৎ customer-কে ভুল করে ব্লক করার ক্ষতি।
যেহেতু সত্যিকারের fraud বিরল (prior ছোট), আমরা হয়তো ৮২%-এ সরাসরি ব্লক না করে extra যাচাই (OTP/manual
review) চাইব। এই probability + prior + খরচ/লাভ মিলিয়ে সিদ্ধান্ত নেওয়াই সঠিক engineering — এটাই
Bayes-thinking-এর business value।
🔎 ১৩. Job Requirement Decoder
"Understanding of probability, conditional probability, and Bayesian thinking."
| প্রশ্ন | উত্তর |
| এর মানে কী? | model-এর probability output ও "কতটা নিশ্চিত" ব্যাখ্যা করতে ও ব্যবহার করতে পারেন। |
| কোম্পানি কেন চায়? | classifier threshold, fraud/spam সিদ্ধান্ত, uncertainty handling — সবই probability। |
| কোন সমস্যা সমাধান করে? | positive test/prediction-কে ভুলভাবে "নিশ্চিত" ধরার ভুল এড়ানো। |
| junior-এর কী জানা লাগে? | probability 0-1, conditional probability, Bayes-এর intuition (prior-এর প্রভাব), expected value। |
| এখনই কী master লাগে না? | Bayesian inference-এর গভীর গণিত, MCMC, প্রতিটা distribution-এর সূত্র। |
| GitHub-এ কীভাবে দেখাবেন? | একটা Naive Bayes spam/sentiment classifier, predict_proba ব্যাখ্যা করে। |
| Interview-তে কী জিজ্ঞেস করতে পারে? | "Bayes theorem বোঝান", "conditional probability কী?", "৯৯% test positive মানেই কি রোগ আছে?" |
⚠️ ১৪. সাধারণ ভুল ধারণা
ভুল ১: "test ৯৯% নির্ভুল হলে positive = প্রায় নিশ্চিত অসুস্থ।" →
ঠিক: বিরল রোগে prior ছোট, তাই posterior অনেক কম হতে পারে (base rate fallacy)।
ভুল ২: "P(A|B) আর P(B|A) একই।" →
ঠিক: এরা ভিন্ন; Bayes theorem একটাকে আরেকটায় রূপান্তর করে।
ভুল ৩: "model 'fraud' বলছে মানে এটা নিশ্চিত fraud।" →
ঠিক: model probability দেয়; threshold ও খরচ/লাভ দেখে সিদ্ধান্ত নিতে হয়।
ভুল ৪: "Bayes theorem master করতে হবে।" →
ঠিক: junior-দের intuition (prior-এর প্রভাব) যথেষ্ট; হাতে proof লাগে না।
🎤 ১৫. Interview Prep
প্রশ্ন ১: conditional probability কী?
উত্তর: একটা তথ্য জানা থাকলে অন্য ঘটনার সম্ভাবনা — P(A|B)।
প্রশ্ন ২: Bayes theorem কী কাজে লাগে?
উত্তর: prior belief-কে নতুন প্রমাণ দিয়ে update করে posterior বের করতে; spam/fraud/diagnosis-এ।
প্রশ্ন ৩: ৯৯% নির্ভুল test-এ positive এলে কি রোগ নিশ্চিত?
উত্তর: না; রোগ বিরল হলে (prior ছোট) posterior কম হতে পারে — base rate গুরুত্বপূর্ণ।
প্রশ্ন ৪: Naive Bayes-এ "naive" কেন?
উত্তর: ধরে নেয় feature-রা পরস্পর স্বাধীন — সরল অনুমান, তবু বাস্তবে কার্যকর।
✍️ ১৬. হাতে-কলমে (Mini Exercise)
১. রোগ-পরীক্ষার হিসাবে prior বদলে ১০০ জনে ১ জন করুন — এবার P(অসুস্থ | positive) মোটামুটি কত হবে?
২. উপরের Naive Bayes কোডে আরও কয়েকটা spam/normal উদাহরণ যোগ করে predict_proba কেমন বদলায় দেখুন।
৩. এক লাইনে লিখুন: কেন একটা model-এর output "৭০% হ্যাঁ" "নিশ্চিত হ্যাঁ"-এর চেয়ে বেশি সৎ?
🚀 ১৭. Project Connection
আমাদের flagship "Bangladesh Tech Career Assistant"-এ যখন (Series 05-এ) আমরা একটা
classifier বানাব — যেমন "এই JD junior নাকি senior role" — model একটা probability দেবে। আজকের
probability-thinking আমাদের শেখাবে কীভাবে সেই confidence ব্যাখ্যা করতে হয় ও threshold ঠিক করতে হয়।
আর Series 07/08-এ LLM যখন "পরের শব্দের probability" হিসাব করবে, তখনও এই ভিত্তিই কাজে লাগবে।
📌 ১৮. সারসংক্ষেপ ও পরবর্তী পর্ব
এই পর্বে আমরা শিখলাম:
✓ probability ০-১; সব ফলাফলের যোগফল ১
✓ conditional probability P(A|B) — তথ্য জানা থাকলে সম্ভাবনা বদলায়
✓ Bayes theorem = prior + evidence → posterior; বিরল ঘটনায় prior সব বদলে দেয়
✓ base rate fallacy — "৯৯% test positive" মানেই নিশ্চিত নয়
✓ Naive Bayes দিয়ে spam/text classification; model probability দেয়, হ্যাঁ/না নয়
✓ random variable ও expected value — গড় প্রত্যাশিত ফল, risk/reward সিদ্ধান্তে
পরবর্তী Episode (S04E07): "Machine Learning কীভাবে ভুল থেকে শেখে? Gradient
Descent-এর সহজ গল্প"। Series 04-এর সমাপ্তি — চারটা স্তম্ভ (vector, gradient, statistics,
probability) একসাথে জুড়ে দেখব loss function, gradient descent ও bias-variance trade-off, যা
Series 05-এর Classical ML-এর সরাসরি প্রবেশদ্বার।