Bayes থিওরেম ও বেসিয়ান চিন্তাভাবনা
এই পাঠে যা শিখবেন
- শর্তাধীন সম্ভাবনার সংজ্ঞা থেকে বেইজ থিওরেম ধাপে ধাপে ডেরাইভ করা
- prior, likelihood, posterior পরিভাষা এবং সূত্রে তাদের অবস্থান
- একটি সম্পূর্ণ সাংখ্যিক উদাহরণ — স্প্যাম-ফিল্টার — শুরু থেকে শেষ পর্যন্ত সমাধান
- বেসিয়ান বনাম ফ্রিকোয়েন্টিস্ট দৃষ্টিভঙ্গির পার্থক্য
- NumPy সিমুলেশন দিয়ে posterior-এর হাতে-হিসাব করা মান যাচাই
১ · শর্তাধীন সম্ভাবনা থেকে বেইজ থিওরেম
পাঠ ২৪-এ আমরা শর্তাধীন সম্ভাবনার সংজ্ঞা দেখেছি। একই দুটি ইভেন্ট $A$ ও $B$-এর জন্য এই সংজ্ঞাটি দুই দিক থেকেই লেখা যায় —
$$P(A\mid B)=\frac{P(A\cap B)}{P(B)} \qquad \text{এবং} \qquad P(B\mid A)=\frac{P(B\cap A)}{P(A)}$$যেহেতু $P(A\cap B)=P(B\cap A)$ (ইন্টারসেকশন প্রতিসম — ক্রম গুরুত্বপূর্ণ নয়), দ্বিতীয় সমীকরণ থেকে $P(A\cap B)=P(B\mid A)\,P(A)$ পাওয়া যায়। এখন এই রূপটি প্রথম সমীকরণে $P(A\cap B)$-এর জায়গায় বসিয়ে দিলে —
$$\boxed{P(A\mid B)=\frac{P(B\mid A)\,P(A)}{P(B)}}$$এটাই বেইজ থিওরেম (Bayes' Theorem) — শর্তাধীন সম্ভাবনার সংজ্ঞা থেকে মাত্র দুই লাইনে বের হওয়া একটি সূত্র, অথচ এর প্রয়োগ গভীর। এটি আমাদের একদিকের শর্তাধীন সম্ভাবনা ($P(B\mid A)$, যা প্রায়ই জানা বা হিসাব করা সহজ) থেকে উল্টো দিকের শর্তাধীন সম্ভাবনা ($P(A\mid B)$, যা আমরা আসলে জানতে চাই) বের করতে দেয়।
২ · Prior, Likelihood, Posterior
বেইজ থিওরেমের প্রতিটি অংশের একটি নির্দিষ্ট নাম আছে, যা "বিশ্বাস হালনাগাদ করার" ভাষায় বোঝা সহজ করে। ধরা যাক $A$ হলো আমাদের আগ্রহের একটি "হাইপোথিসিস" (যেমন "ইমেইলটি স্প্যাম"), এবং $B$ হলো আমরা যে "প্রমাণ" পর্যবেক্ষণ করেছি (যেমন "ইমেইলে 'free' শব্দ আছে") —
$$\underbrace{P(A\mid B)}_{\text{posterior}}=\frac{\overbrace{P(B\mid A)}^{\text{likelihood}}\;\;\overbrace{P(A)}^{\text{prior}}}{\underbrace{P(B)}_{\text{evidence}}}$$
priorPriorপ্রমাণ দেখার আগে হাইপোথিসিসের উপর আমাদের বিশ্বাস। $P(A)$ — কোনো নতুন প্রমাণ দেখার আগে হাইপোথিসিসের সম্ভাবনা সম্পর্কে আমাদের বিশ্বাস। likelihoodLikelihoodহাইপোথিসিসটি সত্য হলে এই নির্দিষ্ট প্রমাণ পাওয়ার সম্ভাবনা। $P(B\mid A)$ — হাইপোথিসিস সত্য হলে এই নির্দিষ্ট প্রমাণ পর্যবেক্ষণ করার সম্ভাবনা। posteriorPosteriorপ্রমাণ দেখার পরে হালনাগাদ করা বিশ্বাস। $P(A\mid B)$ — প্রমাণ দেখার পরে হাইপোথিসিসের হালনাগাদ সম্ভাবনা। আর $P(B)$ (evidence) হলো নরমালাইজিং ধ্রুবক, যা প্রায়ই পাঠ ২৪-এর মোট সম্ভাবনার সূত্র দিয়ে হিসাব করতে হয়।
৩ · সম্পূর্ণ সাংখ্যিক উদাহরণ — স্প্যাম ফিল্টার
পাঠ ২৪-এ আমরা একটি স্প্যাম-ফিল্টার পরিস্থিতি সেট আপ করেছিলাম। সংখ্যাগুলো আবার স্মরণ করি —
- Prior: $P(\text{স্প্যাম})=0.4$, $P(\text{স্প্যাম}^c)=0.6$
- Likelihood: $P(\text{free}\mid\text{স্প্যাম})=0.6$, $P(\text{free}\mid\text{স্প্যাম}^c)=0.05$
- Evidence (মোট সম্ভাবনার সূত্র দিয়ে হিসাব করা, পাঠ ২৪): $P(\text{free})=0.27$
এখন প্রশ্ন — একটি ইমেইলে "free" শব্দটি দেখা গেছে। এই প্রমাণের ভিত্তিতে ইমেইলটি স্প্যাম হওয়ার হালনাগাদ সম্ভাবনা (posterior) কত? বেইজ থিওরেম প্রয়োগ করি —
$$P(\text{স্প্যাম}\mid\text{free})=\frac{P(\text{free}\mid\text{স্প্যাম})\,P(\text{স্প্যাম})}{P(\text{free})}=\frac{(0.6)(0.4)}{0.27}=\frac{0.24}{0.27}$$এই ভগ্নাংশটি সরলীকরণ করলে — লব ও হর উভয়কে $0.03$ দিয়ে ভাগ করে — $\frac{0.24}{0.27}=\frac{24}{27}=\frac{8}{9}\approx0.8889$। অর্থাৎ —
৪ · বেসিয়ান বনাম ফ্রিকোয়েন্টিস্ট দৃষ্টিভঙ্গি
সম্ভাবনার অর্থ নিয়ে পরিসংখ্যানে দুটি প্রধান দার্শনিক দৃষ্টিভঙ্গি আছে। ফ্রিকোয়েন্টিস্ট দৃষ্টিভঙ্গিতে সম্ভাবনা মানে "বহুবার পুনরাবৃত্তি করলে একটি ঘটনা কত অনুপাতে ঘটবে" — যেমন "একটি মুদ্রার হেড পড়ার সম্ভাবনা $0.5$" মানে অসীমবার টস করলে অনুপাত $0.5$-এ স্থির হবে। এই দৃষ্টিভঙ্গিতে একটি নির্দিষ্ট এক-বারের ঘটনার (যেমন "কাল বৃষ্টি হওয়ার সম্ভাবনা") সম্ভাবনা বলাটাই কিছুটা অস্বস্তিকর, কারণ সেটা পুনরাবৃত্তিযোগ্য নয়।
বেসিয়ান দৃষ্টিভঙ্গিতে সম্ভাবনা মানে "বিশ্বাসের মাত্রা" (degree of belief), যা প্রমাণ পাওয়ার সাথে সাথে যুক্তিসঙ্গতভাবে (বেইজ থিওরেম মেনে) হালনাগাদ হয়। এই দৃষ্টিভঙ্গিতে prior নির্ধারণ করতে হয় (যা কিছুটা বিষয়ভিত্তিক হতে পারে), কিন্তু এটি এক-বারের ঘটনা নিয়েও স্বাভাবিকভাবে কথা বলতে দেয়। আধুনিক ML-এ উভয় দৃষ্টিভঙ্গিরই ব্যবহার আছে — MLE (পাঠ ৩০) মূলত ফ্রিকোয়েন্টিস্ট ধারায়, আর MAP এস্টিমেশন ও বেসিয়ান নিউরাল নেটওয়ার্ক সরাসরি বেসিয়ান ধারায় (পাঠ ৩২-এ আমরা দেখব কীভাবে এই দুই ধারণা এক জায়গায় মিলিত হয়)।
নিচের কোডে আমরা এই একই স্প্যাম-ফিল্টার পরিস্থিতি বড় আকারে সিমুলেট করছি — লক্ষ লক্ষ ইমেইল তৈরি করে, যেগুলোতে "free" শব্দ আছে শুধু সেগুলো ফিল্টার করে দেখছি তাদের মধ্যে প্রকৃতপক্ষে কত শতাংশ স্প্যাম — এবং এই empirical অনুপাতটি হাতে-হিসাব করা $\frac{8}{9}\approx0.8889$-এর কাছাকাছি আসে কি না।
import numpy as np
np.random.seed(0)
n = 2_000_000
# prior: P(স্প্যাম) = 0.4
is_spam = np.random.rand(n) < 0.4
# likelihood: P(free | স্প্যাম) = 0.6, P(free | স্প্যাম^c) = 0.05
p_free_given_type = np.where(is_spam, 0.6, 0.05)
has_free = np.random.rand(n) < p_free_given_type
# --- বেইজ থিওরেম হাতে-হিসাব ---
prior_spam = 0.4
likelihood_free_given_spam = 0.6
likelihood_free_given_not_spam = 0.05
prior_not_spam = 1 - prior_spam
evidence_p_free = (likelihood_free_given_spam * prior_spam
+ likelihood_free_given_not_spam * prior_not_spam)
posterior_spam_given_free = (likelihood_free_given_spam * prior_spam) / evidence_p_free
print("P(free) [evidence] =", round(evidence_p_free, 4))
print("P(স্প্যাম | free) হাতে-হিসাব =", round(posterior_spam_given_free, 4),
" (= 8/9 =", round(8/9, 4), ")")
# --- সিমুলেশন দিয়ে যাচাই: যাদের ইমেইলে "free" আছে তাদের মধ্যে কত শতাংশ প্রকৃতপক্ষে স্প্যাম ---
emails_with_free = has_free # boolean mask
empirical_posterior = is_spam[emails_with_free].mean()
print("P(স্প্যাম | free) সিমুলেশন থেকে =", round(empirical_posterior, 4))
বেইজ থিওরেম নতুন কোনো স্বতঃসিদ্ধ নয় — এটি পাঠ ২৪-এর শর্তাধীন সম্ভাবনার সংজ্ঞা থেকে সরাসরি বের হওয়া একটি পুনর্বিন্যাস (rearrangement), যা আমাদের জানা likelihood থেকে অজানা posterior বের করতে দেয়। এই ঠিক এই কাঠামো — prior + likelihood → posterior — পরে পাঠ ৩২-এ MAP এস্টিমেশন হিসেবে ফিরে আসবে, যেখানে আমরা দেখব রেগুলারাইজেশন (L2/L1 penalty) আসলে prior-এর একটি নির্দিষ্ট পছন্দের গাণিতিক পরিণতি মাত্র।
ভাবনার প্রশ্ন
প্রতিটি প্রশ্ন নিজে কিছুক্ষণ ভাবুন — তারপর "→ উত্তর" চাপুন।
প্র ০১ উপরের উদাহরণে prior $P(\text{স্প্যাম})$ যদি $0.4$-এর বদলে $0.01$ হতো (অর্থাৎ বেশিরভাগ ইমেইলই বৈধ), তাহলে posterior $P(\text{স্প্যাম}\mid\text{free})$ কি বাড়ত না কমত? দিক (direction) অনুমান করুন, সংখ্যা না করেও।
কমত। prior যত ছোট হবে (অর্থাৎ শুরুতেই স্প্যাম হওয়ার সম্ভাবনা কম ধরে নেওয়া হচ্ছে), posterior-ও তার সাথে সামঞ্জস্যপূর্ণভাবে ছোট হবে — বেইজ থিওরেমের লবে সরাসরি $P(\text{স্প্যাম})$ গুণ হচ্ছে। একটি শক্তিশালী likelihood ($0.6$ বনাম $0.05$) থাকলেও, একটি চরম দুর্বল prior সম্পূর্ণ পাল্টে দিতে পারে না — এটাই বেসিয়ান যুক্তির একটি গুরুত্বপূর্ণ বাস্তব শিক্ষা: "অস্বাভাবিক দাবির জন্য অস্বাভাবিক শক্তিশালী প্রমাণ দরকার।"
প্র ০২ একজন ডাক্তার একটি বিরল রোগের পরীক্ষা করালেন যার ফলাফল "পজিটিভ" এলো, এবং পরীক্ষাটি $99\%$ নির্ভুল বলে দাবি করা হয়। কেন শুধু এই তথ্য দিয়ে posterior (রোগ থাকার প্রকৃত সম্ভাবনা) নির্ণয় করা যায় না?
কারণ posterior বের করতে prior — অর্থাৎ সাধারণ জনসংখ্যায় রোগটি কতটা বিরল ($P(\text{রোগ})$) — জানা আবশ্যক। "৯৯% নির্ভুল" শুধু likelihood দেয় ($P(\text{পজিটিভ}\mid\text{রোগ})\approx0.99$), কিন্তু যদি রোগটি অত্যন্ত বিরল হয় (যেমন $P(\text{রোগ})=0.001$), তাহলে ভুল-পজিটিভ (false positive) থেকে আসা পজিটিভ ফলাফলের সংখ্যা প্রকৃত রোগীদের সংখ্যাকে সহজেই ছাড়িয়ে যেতে পারে, ফলে posterior $99\%$-এর অনেক নিচে (এমনকি $50\%$-এরও নিচে) হতে পারে। এটাই এই কোর্সের উদাহরণের ঠিক একই কাঠামো — শুধু prior ও likelihood-এর সংখ্যা ভিন্ন।
প্র ০৩ বেইজ থিওরেমের হর $P(B)$-কে "নরমালাইজিং ধ্রুবক" বলা হলো কেন?
কারণ এটি $A$-এর উপর নির্ভর করে না ($P(B)$ একটি নির্দিষ্ট সংখ্যা, একবার প্রমাণ $B$ পর্যবেক্ষণ করা হয়ে গেলে) — এর একমাত্র কাজ হলো লবে থাকা $P(B\mid A)P(A)$-কে এমনভাবে স্কেল করা যাতে সব সম্ভাব্য হাইপোথিসিসের (এখানে স্প্যাম ও নন-স্প্যাম) posterior-এর যোগফল ঠিক $1$ হয় (axiom ২, পাঠ ২৪)। এই কারণেই একে প্রায়ই মোট সম্ভাবনার সূত্র দিয়ে হিসাব করতে হয় — এটি সবগুলো সম্ভাব্য হাইপোথিসিসের উপর "গড়" নেয়।
অনুশীলন
-
হিসাব করুন: উপরের একই সেটআপে, একটি ইমেইলে "free" শব্দটি নেই এমন প্রমাণের ভিত্তিতে $P(\text{স্প্যাম}\mid\text{free}^c)$ বের করুন।
$P(\text{free}^c\mid\text{স্প্যাম})=1-0.6=0.4$, $P(\text{free}^c\mid\text{স্প্যাম}^c)=1-0.05=0.95$। মোট সম্ভাবনার সূত্রে $P(\text{free}^c)=(0.4)(0.4)+(0.95)(0.6)=0.16+0.57=0.73$ (এবং যাচাই: $0.27+0.73=1$, ঠিক আছে)। বেইজ থিওরেমে $P(\text{স্প্যাম}\mid\text{free}^c)=\frac{(0.4)(0.4)}{0.73}=\frac{0.16}{0.73}\approx0.219$। অর্থাৎ "free" শব্দ না থাকলে স্প্যাম হওয়ার সম্ভাবনা prior ($0.4$) থেকে কমে $\approx21.9\%$-এ নেমে আসে — যা প্রত্যাশিতই, কারণ এই শব্দের অনুপস্থিতি বৈধ ইমেইলের পক্ষে প্রমাণ।
-
যাচাই করুন: কোড সেলে prior
0.4-কে0.01-এ পরিবর্তন করে আবার Run করুন। নতুন posterior-এর মান আনুমানিক হিসাব করে কোডের আউটপুটের সাথে মিলিয়ে দেখুন।নতুন $P(\text{free})=(0.6)(0.01)+(0.05)(0.99)=0.006+0.0495=0.0555$। posterior $=\frac{0.006}{0.0555}\approx0.108$ — অর্থাৎ prior অনেক ছোট হওয়ায়, "free" শব্দ দেখেও posterior মাত্র $\approx10.8\%$-এ ওঠে, prior $0.4$ থাকলে যেমন $88.9\%$ পর্যন্ত উঠেছিল তার তুলনায় অনেক কম।
আরও পড়ুন · ABCL TECH-এ আপনার পরবর্তী পদক্ষেপ
- পাঠ ২৯ · স্যাম্পলিং ও কেন্দ্রীয় সীমা উপপাদ্য পরবর্তী পাঠ এবার আমরা দেখব কীভাবে স্যাম্পল থেকে সামগ্রিক জনসংখ্যা সম্পর্কে সিদ্ধান্ত নেওয়া যায় — এবং কেন্দ্রীয় সীমা উপপাদ্য কেন গাউসিয়ান বিতরণকে (L26) এত সর্বব্যাপী করে তোলে।
- সব AI Courses দেখুন ABCL TECH AI Foundations, Python for AI, Machine Learning, Deep Learning, Math for AI ও আরও অনেক কিছু — সব এক জায়গায়।
- Machine Learning কোর্স প্রয়োগ দেখুন বেইজ থিওরেম কীভাবে সরাসরি Naive Bayes ক্লাসিফায়ারের ভিত্তি গঠন করে তা দেখতে।