ডিসক্রিট বিতরণ — Bernoulli, Binomial, Poisson
এই পাঠে যা শিখবেন
- র্যান্ডম ভেরিয়েবল ও PMF (probability mass function)-এর সংজ্ঞা
- Bernoulli, Binomial ও Poisson বিতরণের সূত্র এবং সেগুলো কোথা থেকে আসে
- Binomial PMF-এর $\binom{n}{k}$ অংশ কেন প্রয়োজন তার যুক্তি
- NumPy দিয়ে PMF সূত্র সরাসরি বাস্তবায়ন এবং সিমুলেশনের সাথে মিলিয়ে দেখা
- বাইনারি ক্লাসিফিকেশন ও কাউন্ট-ডেটা মডেলের সাথে এই বিতরণগুলোর সরাসরি সংযোগ
১ · র্যান্ডম ভেরিয়েবল ও PMF
একটি র্যান্ডম ভেরিয়েবলRandom Variableএকটি ফাংশন যা এলোমেলো পরীক্ষার প্রতিটি ফলাফলকে একটি সংখ্যায় রূপান্তর করে। $X$ হলো এমন একটি ফাংশন যা প্রতিটি স্যাম্পল স্পেসের ফলাফলকে একটি সংখ্যায় রূপান্তর করে। যখন $X$ শুধুমাত্র গণনাযোগ্য (countable) কিছু মান নিতে পারে (যেমন $0,1,2,\dots$), তাকে ডিসক্রিট (discrete) র্যান্ডম ভেরিয়েবল বলা হয়, এবং এর বিতরণ বর্ণনা করা হয় একটি PMFProbability Mass Functionএকটি ডিসক্রিট র্যান্ডম ভেরিয়েবলের প্রতিটি সম্ভাব্য মানের সাথে একটি সম্ভাবনা যুক্ত করে এমন ফাংশন। দিয়ে — $P(X=k)$, যা প্রতিটি সম্ভাব্য $k$-এর জন্য একটি সম্ভাবনা দেয়, এবং সব $k$-এর উপর যোগফল অবশ্যই $1$ হতে হবে (পাঠ ২৪-এর axiom ২-এর সরাসরি ফল)।
২ · Bernoulli বিতরণ — একটি মাত্র ট্রায়াল
সবচেয়ে সরল ডিসক্রিট বিতরণ হলো Bernoulli$(p)$ — একটি একক ট্রায়াল যার ফলাফল হয় "সাফল্য" ($X=1$, সম্ভাবনা $p$) নাহয় "ব্যর্থতা" ($X=0$, সম্ভাবনা $1-p$)। এর PMF —
$$P(X=k)=p^k(1-p)^{1-k}, \quad k\in\{0,1\}$$অর্থাৎ $k=1$ বসালে $P(X=1)=p$, আর $k=0$ বসালে $P(X=0)=1-p$ — একটি সূত্রেই দুটি ক্ষেত্র ধরা পড়ে। একটি মুদ্রা টস, একটি ইমেইল স্প্যাম কি না, একটি বাইনারি ক্লাসিফায়ারের প্রকৃত লেবেল ($y\in\{0,1\}$) — সবই Bernoulli।
একটি নিউরাল নেটওয়ার্কের বাইনারি ক্লাসিফায়ার (sigmoid আউটপুট, পাঠ ১৮ দেখুন) মূলত প্রতিটি ইনপুটের জন্য একটি Bernoulli প্যারামিটার $\hat p$ অনুমান করে। মডেলের আউটপুট $\hat p=0.87$ মানে এটি দাবি করছে সংশ্লিষ্ট Bernoulli ভেরিয়েবলের $P(X=1)=0.87$। L34-এ আমরা দেখব cross-entropy loss সরাসরি এই Bernoulli PMF থেকে আসে।
৩ · Binomial বিতরণ — $n$টি স্বাধীন ট্রায়ালের সমষ্টি
যদি $n$টি স্বাধীন ও অভিন্ন (iid) Bernoulli$(p)$ ট্রায়াল চালানো হয় এবং $X$ হলো মোট কতটি "সাফল্য" হলো তার গণনা, তাহলে $X\sim\text{Binomial}(n,p)$। যেমন — একটি মুদ্রা $10$ বার টস করে মোট কতবার "হেড" পড়ল, অথবা $100$টি ইমেইলের মধ্যে কতগুলো স্প্যাম।
PMF ডেরাইভ করতে ভাবুন — ঠিক $k$টি সাফল্য এবং $n-k$টি ব্যর্থতার একটি নির্দিষ্ট ক্রম (যেমন প্রথম $k$টি সাফল্য, বাকিগুলো ব্যর্থতা) ঘটার সম্ভাবনা, স্বাধীনতার কারণে (পাঠ ২৪), হলো $p^k(1-p)^{n-k}$। কিন্তু ঠিক $k$টি সাফল্য পাওয়ার অনেক সম্ভাব্য ক্রম আছে — কোন $k$টি অবস্থানে সাফল্য হলো তা $\binom{n}{k}$ ভাবে বেছে নেওয়া যায়। যেহেতু প্রতিটি ক্রম পরস্পর বিচ্ছিন্ন ইভেন্ট এবং প্রতিটির সম্ভাবনা সমান, axiom ৩ (যোগযোগ্যতা) অনুযায়ী সেগুলো যোগ করে —
$$P(X=k)=\binom{n}{k}p^k(1-p)^{n-k}, \qquad \binom{n}{k}=\frac{n!}{k!(n-k)!}$$এখানে $\binom{n}{k}$ কে বলা হয় বাইনোমিয়াল কোয়েফিসিয়েন্ট — "$n$টি জিনিস থেকে $k$টি বেছে নেওয়ার কতভাবে সম্ভব" তার গণনা।
৪ · Poisson বিতরণ — বিরল ঘটনার গণনা
Binomial বিতরণে $n$ ট্রায়াল ও প্রতিটির সাফল্যের সম্ভাবনা $p$ জানতে হয়। কিন্তু অনেক বাস্তব পরিস্থিতিতে — যেমন "এক ঘণ্টায় একটি সার্ভারে কতগুলো রিকোয়েস্ট এলো" — "মোট ট্রায়াল সংখ্যা" বলে স্পষ্ট কিছু নেই, শুধু জানা আছে গড়ে কত ঘটনা ঘটে (হার, $\lambda$)। এই ধরনের বিরল/গণনা-ভিত্তিক ঘটনার জন্য Poisson$(\lambda)$ বিতরণ ব্যবহৃত হয় —
$$P(X=k)=\frac{e^{-\lambda}\lambda^k}{k!}, \qquad k=0,1,2,\dots$$যেখানে $\lambda>0$ হলো একক সময়ে/স্থানে গড় ঘটনার সংখ্যা (এবং এটাই $X$-এর প্রত্যাশিত মান — পাঠ ২৭-এ আমরা প্রমাণ করব $\mathbb{E}[X]=\lambda$)। কৌতূহলজনকভাবে, Poisson আসলে Binomial-এর একটি সীমা (limit) — $n\to\infty$, $p\to0$, কিন্তু $np=\lambda$ স্থির রেখে — অর্থাৎ অনেক অনেক "প্রায় অসম্ভব" ট্রায়ালের সমষ্টি একটি Poisson-এ রূপ নেয়।
নিচের কোডে আমরা $\text{Binomial}(n{=}10, p{=}0.3)$-এর জন্য $P(X=3)$ এবং $\text{Poisson}(\lambda{=}4)$-এর জন্য $P(X=2)$ — এই দুটি সূত্র হাতে বাস্তবায়ন করে, তারপর NumPy-র র্যান্ডম স্যাম্পলিং দিয়ে যাচাই করছি সূত্রের ফলাফল সিমুলেশনের সাথে মেলে কি না।
import numpy as np
import math
def binomial_pmf(k, n, p):
# n! / (k! (n-k)!) — কতভাবে n থেকে k বেছে নেওয়া যায়
coeff = math.factorial(n) // (math.factorial(k) * math.factorial(n - k))
return coeff * (p ** k) * ((1 - p) ** (n - k))
def poisson_pmf(k, lam):
return (np.exp(-lam) * (lam ** k)) / math.factorial(k)
# --- Binomial(n=10, p=0.3): P(X=3) ---
n, p, k1 = 10, 0.3, 3
p_binom_formula = binomial_pmf(k1, n, p)
samples_binom = np.random.binomial(n, p, size=1_000_000)
p_binom_empirical = np.mean(samples_binom == k1)
print("Binomial সূত্র থেকে P(X=3) =", round(p_binom_formula, 4))
print("Binomial সিমুলেশন থেকে P(X=3) =", round(p_binom_empirical, 4))
# --- Poisson(lambda=4): P(X=2) ---
lam, k2 = 4, 2
p_pois_formula = poisson_pmf(k2, lam)
samples_pois = np.random.poisson(lam, size=1_000_000)
p_pois_empirical = np.mean(samples_pois == k2)
print("Poisson সূত্র থেকে P(X=2) =", round(p_pois_formula, 4))
print("Poisson সিমুলেশন থেকে P(X=2) =", round(p_pois_empirical, 4))
Bernoulli একটি একক বাইনারি ফলাফল মডেল করে, Binomial সেই একই ফলাফলের $n$টি স্বাধীন পুনরাবৃত্তির যোগফল গণনা করে, আর Poisson সেই গণনাকে "হার"-এর ভাষায় অনুবাদ করে যখন পৃথক ট্রায়াল সংখ্যা অর্থবহ নয়। পরের পাঠে আমরা কন্টিনিউয়াস র্যান্ডম ভেরিয়েবলে যাব, যেখানে যোগফলের বদলে ইন্টিগ্রেশন ব্যবহৃত হয়।
ভাবনার প্রশ্ন
প্রতিটি প্রশ্ন নিজে কিছুক্ষণ ভাবুন — তারপর "→ উত্তর" চাপুন।
প্র ০১ Binomial$(n,p)$-এর PMF-এ $\binom{n}{k}$ অংশটি না থাকলে কী সমস্যা হতো?
তাহলে PMF শুধুমাত্র "সাফল্য-ব্যর্থতার একটি নির্দিষ্ট ক্রম" ঘটার সম্ভাবনা দিত ($p^k(1-p)^{n-k}$), কিন্তু আমরা চাই মোট $k$টি সাফল্য হওয়ার সম্ভাবনা — সেটি যেকোনো ক্রমে হতে পারে। $\binom{n}{k}$ ছাড়া সব $k$-এর উপর PMF যোগ করলে $1$-এর কম আসত (axiom ২ লঙ্ঘন হতো), কারণ অনেক বৈধ ফলাফল (ক্রম) বাদ পড়ে যেত।
প্র ০২ একটি ওয়েবসাইটে গড়ে প্রতি মিনিটে $\lambda=2$টি ভিজিটর আসে। কোন বিতরণ সবচেয়ে স্বাভাবিকভাবে এক মিনিটে ভিজিটর সংখ্যা মডেল করবে, এবং কেন Binomial নয়?
Poisson$(\lambda=2)$ — কারণ এখানে "মোট ট্রায়াল সংখ্যা $n$" এবং "প্রতি ট্রায়ালে সাফল্যের সম্ভাবনা $p$" বলে কিছু স্পষ্টভাবে সংজ্ঞায়িত নেই (ভিজিটর যেকোনো মুহূর্তে আসতে পারে, বিচ্ছিন্ন "ট্রায়াল" নেই)। শুধু গড় হার জানা আছে — যা ঠিক Poisson-এর প্যারামিটারাইজেশন। Binomial ব্যবহার করতে হলে সময়কে কৃত্রিমভাবে অনেকগুলো ক্ষুদ্র বিচ্ছিন্ন খণ্ডে ভাগ করতে হতো, এবং $n\to\infty$ সীমাতে সেটাই Poisson-এ রূপান্তরিত হয়।
প্র ০৩ একটি বাইনারি ক্লাসিফায়ার একটি ইমেইলের জন্য $\hat p=0.9$ আউটপুট দিল (অর্থাৎ ৯০% স্প্যাম)। এটি কীভাবে Bernoulli বিতরণের সাথে সম্পর্কিত?
মডেলটি বলছে প্রকৃত লেবেল $Y$ (স্প্যাম কি না) একটি $\text{Bernoulli}(0.9)$ র্যান্ডম ভেরিয়েবল অনুসরণ করে — অর্থাৎ $P(Y=1)=0.9$। প্রশিক্ষণের সময় মডেলটি এমনভাবে অপ্টিমাইজ করা হয় (cross-entropy loss দিয়ে, L34) যাতে এই অনুমিত $\hat p$ প্রকৃত ডেটার Bernoulli প্যারামিটারের যতটা সম্ভব কাছাকাছি আসে — এটাই মূলত L30-এর MLE ধারণা।
অনুশীলন
-
হিসাব করুন: একটি সুষম মুদ্রা $5$ বার টস করা হলো। ঠিক $0$টি হেড পড়ার সম্ভাবনা $P(X=0)$ বের করুন ($n=5$, $p=0.5$)।
$P(X=0)=\binom{5}{0}(0.5)^0(0.5)^5=1\times1\times\frac{1}{32}=\frac{1}{32}=0.03125$। স্বজ্ঞাগতভাবেও এটি ঠিক — প্রতিটি টসে "টেইল" পড়তে হবে, প্রতিটির সম্ভাবনা $0.5$, পাঁচটি স্বাধীন টসে $(0.5)^5$।
-
পরীক্ষা করুন: কোড সেলে
nওpবদলে (যেমন $n=20$, $p=0.5$) Binomial PMF-এরkসব মানের ($0$ থেকে $n$) যোগফল বের করুন। এটি কী মানের কাছাকাছি আসবে, এবং কেন?যোগফল $1.0$-এর (প্রায়) সমান হবে — কারণ পাঠ ২৪-এর axiom ২ (নরমালাইজেশন) অনুযায়ী যেকোনো বৈধ PMF-এর সব সম্ভাব্য মানের উপর সম্ভাবনার যোগফল অবশ্যই $1$ হতে হবে। এটি একটি ভালো "sanity check" — যদি PMF সঠিকভাবে বাস্তবায়ন করা হয়ে থাকে, তাহলে এই যোগফল সবসময় $1$ আসবে।
আরও পড়ুন · ABCL TECH-এ আপনার পরবর্তী পদক্ষেপ
- পাঠ ২৬ · কন্টিনিউয়াস বিতরণ ও গাউসিয়ান পরবর্তী পাঠ এখন আমরা এমন র্যান্ডম ভেরিয়েবলে যাব যা যেকোনো বাস্তব সংখ্যা নিতে পারে — যোগফলের বদলে ইন্টিগ্রেশন লাগবে।
- সব AI Courses দেখুন ABCL TECH AI Foundations, Python for AI, Machine Learning, Deep Learning, Math for AI ও আরও অনেক কিছু — সব এক জায়গায়।
- Machine Learning কোর্স প্রয়োগ দেখুন Bernoulli ও Binomial বিতরণ কীভাবে লজিস্টিক রিগ্রেশন ও ক্লাসিফিকেশন মেট্রিক্সে ব্যবহৃত হয় তা দেখতে।