Chapter 2 of 7
How new information reshapes what you thought you knew
Basic Probability চ্যাপ্টারে তুমি ভোকাবুলারি শিখেছো — স্যাম্পল স্পেস, ইভেন্ট, আর একা একটা -এর নিয়মগুলো। কিন্তু বাস্তব জগতে প্রায় কিছুই একা একা ঘটে না। নতুন তথ্য সবসময়ই আসতে থাকে, আর প্রতিবার যখন আসে, তোমার প্রোবাবিলিটিও বদলানো উচিত। এই চ্যাপ্টার হলো সেই বদলটা সঠিকভাবে করার নিয়ম — আন্দাজে না, একটা ফর্মুলা দিয়ে।
কন্ডিশনাল প্রোবাবিলিটি হলো কোনো ইভেন্ট ঘটার সম্ভাবনা, যখন তুমি আগে থেকেই জানো আরেকটা ইভেন্ট ঘটেছে বা সত্যি। এটা এমন প্রশ্নের উত্তর দেয়: "এখন যেহেতু আমি X জানি, Y ঘটার সম্ভাবনা কতটুকু?"
প্রতিটা প্রশ্নই একটা প্লেইন, আনকন্ডিশনাল প্রোবাবিলিটি থেকে শুরু করে, তারপর নতুন তথ্য দিয়ে সেটাকে সংকুচিত করে। এই সংকোচনটাই আসল আইডিয়া।
কন্ডিশনাল প্রোবাবিলিটি মাপে — অন্য কিছু সত্যি জেনে নেওয়ার পর, তোমার আগ্রহের ইভেন্টটা কতটা সম্ভব, সেই ছোট হয়ে যাওয়া জগতের মধ্যে।
আনকন্ডিশনাল প্রোবাবিলিটি, , প্রতিটা পরিস্থিতিকে যেন একদম খালি স্লেট ধরে নেয় — মনে করো তুমি জগত সম্পর্কে আর কিছুই জানো না। বাস্তবে এটা প্রায় কখনোই সত্যি না। প্রতিটা সিদ্ধান্তের সাথেই সাধারণত কিছু না কিছু কনটেক্সট আগে থেকেই জানা থাকে — একটা টেস্ট রেজাল্ট, একজন কাস্টমারের আগের ব্রাউজিং হিস্ট্রি, একটা সেন্সর রিডিং, একটা বাক্যের প্রথম কয়েকটা শব্দ। কন্ডিশনাল প্রোবাবিলিটি হলো সেই টুল, যেটা এই কনটেক্সটকে হিসাবে ঢুকিয়ে নেয়, ফেলে না দিয়ে।
যেই তথ্য হাতে আছে সেটা উপেক্ষা করে প্লেইন, আনকন্ডিশনাল প্রোবাবিলিটি ব্যবহার করাটা শুধু অপচয় না — এটা ভয়াবহভাবে ভুলও হতে পারে। একজন ডাক্তার যদি পজিটিভ টেস্ট রেজাল্ট উপেক্ষা করে শুধু জেনারেল পপুলেশনে রোগটার বেস রেট বলে দেয়, তাহলে সে রোগীকে সম্পূর্ণ ভুল সংখ্যা দিচ্ছে।
মেডিসিন
P(রোগ | পজিটিভ টেস্ট) সম্পূর্ণ আলাদা, অনেক বেশি কাজের একটা সংখ্যা, শুধু P(রোগ)-এর চেয়ে।
আবহাওয়া
P(বৃষ্টি | সকালে মেঘলা) সিজনাল বৃষ্টির সম্ভাবনাকে আপডেট করে, এখন যা দেখা যাচ্ছে তা দিয়ে।
কার্ড গেম
P(পরের কার্ড টেক্কা | এখনো কোনো টেক্কা টানা হয়নি) প্রতিটা কার্ড বের হওয়ার সাথে সাথে বদলায়।
ইন্স্যুরেন্স
P(ক্লেইম | কম বয়সী ড্রাইভার, স্পোর্টস কার) সব ড্রাইভারের গড় P(ক্লেইম)-এর চেয়ে অনেক বেশি নিখুঁত দাম নির্ধারণ করে।
সার্চ ইঞ্জিন
P(প্রাসঙ্গিক | এই কুয়েরি শব্দগুলো) শুধু জনপ্রিয়তা না, নির্দিষ্ট কুয়েরি অনুযায়ী ডকুমেন্ট র্যাঙ্ক করে।
কোয়ালিটি কন্ট্রোল
P(নষ্ট | মেশিন B-তে তৈরি) পুরো ফ্যাক্টরির গড় ডিফেক্ট রেট থেকে অনেক আলাদা হতে পারে।
মেশিন লার্নিং মডেল আসলে মূলত কন্ডিশনাল প্রোবাবিলিটির মেশিন। একটা ক্লাসিফায়ার "বিড়াল হওয়ার প্রোবাবিলিটি" বিমূর্তভাবে হিসাব করে না — সে হিসাব করে — নির্দিষ্ট ইনপুট দেখার পর ক্লাসের প্রোবাবিলিটি। একটা ল্যাঙ্গুয়েজ মডেল "bank" শব্দের প্রোবাবিলিটি জেনারেলি হিসাব করে না — সে হিসাব করে । মডেলের প্রতিটা প্রেডিকশনই একটা কন্ডিশনাল প্রোবাবিলিটি, যেই ইনপুট ফিচারগুলো দেওয়া হয়েছে তার উপর কন্ডিশন করা। এই চ্যাপ্টারে ঠিক এই মেকানিজমটাই তৈরি করব।
একই স্যাম্পল স্পেসের দুইটা ইভেন্ট আর -এর জন্য, যখন , -এর প্রোবাবিলিটি দেওয়া থাকলে, এভাবে সংজ্ঞায়িত করা হয়:
যেখানে:
ইনটুইশন: একবার তুমি জানলে সত্যি, তাহলে পুরো স্যাম্পল স্পেসটাই কার্যত সংকুচিত হয়ে শুধু -এর ভেতরের ফলাফলগুলোতে নেমে আসে — -এর বাইরের কিছুই আর সম্ভব থাকে না। এরপর জিজ্ঞেস করে: এই সংকুচিত জগতের মধ্যে, কতটুকু অংশ -এরও অন্তর্ভুক্ত?
সংজ্ঞায়িত না, যখন — যেটা কখনোই ঘটে না, তার উপর তুমি কন্ডিশন করতে পারো না। শূন্য দিয়ে ভাগ করাটা এখানে শুধু একটা টেকনিক্যাল সমস্যা না — এর পেছনে একটা আসল কনসেপচুয়াল প্রবলেম আছে: "যেটা অসম্ভব সেটা যদি ঘটে থাকে" — এটা একটা যৌক্তিক পরিস্থিতিই না।
একটা অভ্যাস গড়ে তোলা দরকার: হলো একটা সম্পূর্ণ আলাদা সংখ্যা, একটা আলাদা, ছোট জগতে বাস করা — -এর চেয়ে। এটা -এর একটা ছোট correction না — এটা -এর চেয়ে অনেক বেশি, অনেক কম, অথবা (ইনডিপেন্ডেন্সের বিশেষ ক্ষেত্রে, সেকশন ৪-এ দেখবে) ঠিক -এর সমান — যেকোনোটাই হতে পারে।
ছোট উদাহরণ। একটা fair ডাইস রোল করা হলো। = "ফলাফল জোড়" = আর = "ফলাফল ৩-এর চেয়ে বড়" = । আনকন্ডিশনাল । কিন্তু একবার সত্যি জানলে (রোলটা ৪, ৫, বা ৬), জগত সংকুচিত হয়ে -এ নেমে আসে, আর এই তিনটার মধ্যে দুইটা জোড়:
জানার পর -এর প্রোবাবিলিটি বেড়ে থেকে -এ চলে গেলো — কারণ "৩-এর চেয়ে বড়" এই ছোট জগতে, জোড় সংখ্যা পুরো ডাইসের তুলনায় বেশি প্রতিনিধিত্ব পাচ্ছে।
একটা ভেন ডায়াগ্রাম "জগত সংকুচিত হওয়া" আইডিয়াটা চোখে দেখিয়ে দেয়। স্যাম্পল স্পেস -কে একটা আয়তক্ষেত্র হিসেবে আঁকো, আর , -কে দুইটা ওভারল্যাপিং সার্কেল হিসেবে ভেতরে। হলো ওভারল্যাপিং অংশ () সার্কেল -এর পুরোটার একটা ভগ্নাংশ হিসেবে — পুরো আয়তক্ষেত্র -এর ভগ্নাংশ হিসেবে না, যেটা প্লেইন -এর সাথে তুলনা করত।
এই কারণেই আর এতটা আলাদা হতে পারে — এই দুইটা আসলে দুই আলাদা "পুরোটা"-র ভগ্নাংশ হিসেবে হিসাব করা হচ্ছে।
টেবিল (যাকে কনটিনজেন্সি টেবিল বা টু-ওয়ে টেবিলও বলা হয়) প্রায়ই হাতে-কলমে কন্ডিশনাল প্রোবাবিলিটি বের করার সবচেয়ে দ্রুত, কম ভুলপ্রবণ উপায়, বিশেষ করে যখন প্রবলেমটা অ্যাবস্ট্র্যাক্ট সেট নোটেশনের বদলে কাউন্ট দিয়ে দেওয়া থাকে।
উদাহরণ। ১০০ জনের একটা সার্ভেতে রেকর্ড করা হলো, কার গাড়ি আছে আর কার বাড়ি আছে:
| বাড়ি আছে (B) | বাড়ি নেই (Bᶜ) | রো টোটাল | |
|---|---|---|---|
| গাড়ি আছে (A) | ৩০ | ২০ | ৫০ |
| গাড়ি নেই (Aᶜ) | ১০ | ৪০ | ৫০ |
| কলাম টোটাল | ৪০ | ৬০ | ১০০ |
বের করতে, শুধু "বাড়ি আছে" কলামে মনোযোগ দাও (মোট ৪০ জন), আর জিজ্ঞেস করো এদের মধ্যে কতজনের গাড়িও আছে (৩০ জন):
খেয়াল করো, এটা ঠিক ফর্মুলার সাথে মিলে যাচ্ছে: আর , তাই — টেবিল মেথড আর ফর্মুলা সবসময় একই উত্তর দেয়, কারণ টেবিলটা আসলে জয়েন্ট ডিস্ট্রিবিউশনই, শুধু রঁ কাউন্ট আকারে লেখা।
-এর উপর কন্ডিশন করা মানে: -এর কলাম (বা রো) বেছে নাও, আর সেই কলামের টোটাল দিয়ে ভাগ করো, গ্র্যান্ড টোটাল দিয়ে না। এখানেই সবচেয়ে বেশি ভুল হয় — অজান্তে -এর বদলে হিসাব হয়ে যায় — সবসময় চেক করো তুমি প্রথমে কোন ভ্যারিয়েবলের উপর সংকুচিত করেছো।
প্রবলেম ১। একটা fair ডাইস রোল করা হলো। যদি ফলাফল বেজোড় হয়, তাহলে সেটা ৩-এর চেয়ে বড় হওয়ার সম্ভাবনা কতটুকু? = "৩-এর চেয়ে বড়" = , = "বেজোড়" = । ।
প্রবলেম ২। একটা ক্লাসে, ৬০% স্টুডেন্ট ম্যাথ পড়ে, ৫০% ফিজিক্স পড়ে, আর ৩০% দুটোই পড়ে। র্যান্ডমলি বাছাই করা একজন স্টুডেন্ট ম্যাথ পড়ে জানা থাকলে, সে ফিজিক্সও পড়ার সম্ভাবনা কতটুকু?
নিচের প্লেগ্রাউন্ডে হাতে-কলমে চেষ্টা করে দেখো — এই একই ইনটুইশনটা ইন্টারঅ্যাক্টিভলি বুঝতে পারবে, তারপর দেখব এই ফর্মুলাটা আসলে কোথা থেকে এসেছে।
একটা 2×2 টেবিলের চারটা সেল কাউন্ট বদলাও, আর দেখো P(A|B), P(B|A), আর ইনডিপেন্ডেন্স চেক লাইভ কীভাবে বদলায়।
Both A and B happen
A happens, B doesn't
B happens, A doesn't
Neither happens
100 total outcomes, split into a 2×2 table
| B | Bᶜ | |
|---|---|---|
| A | 25 | 25 |
| Aᶜ | 25 | 25 |
P(A)
0.500
P(B)
0.500
P(A ∩ B)
0.250
P(A | B)
0.500
P(B | A)
0.500
P(A) × P(B)
0.250
প্রথমে "Smoking & lung disease" প্রিসেটটা চেষ্টা করো, তারপর "Two fair coin tosses" প্রিসেট — খেয়াল করো, কয়েনের ক্ষেত্রে P(A|B) কার্ড প্রায় P(A)-এর কাছাকাছিই থাকে, কিন্তু স্মোকিং-এর ক্ষেত্রে অনেকটা সরে যায়। P(A|B) আর P(A)-এর মধ্যে এই ফারাকটাই, একটা সংখ্যায়, এই পুরো চ্যাপ্টারের মূল বিষয়।
কন্ডিশনাল প্রোবাবিলিটির সংজ্ঞা, , দুইপাশে গুণ করে রিঅ্যারেঞ্জ করা যায়। এই একটা algebra স্টেপ নিজে থেকেই মুখস্থ রাখার মতো — এটা বারবার কাজে লাগবে, এই চ্যাপ্টারে আর পরের চ্যাপ্টারেও:
একইভাবে, থেকে শুরু করে রিঅ্যারেঞ্জ করলে একটা সিমেট্রিক দ্বিতীয় ভার্সন পাওয়া যায়:
দুইটা ভার্সনই একই জিনিস, , হিসাব করে — শুধু কন্ডিশনিং শুরু করে ভিন্ন ইভেন্ট থেকে, আর কোনটা কোন সময় কাজে লাগবে সেটা নির্ভর করে তুমি কোন কন্ডিশনাল প্রোবাবিলিটিটা আসলে জানো তার উপর।
ইনটুইশন: দুইটা জিনিস দুটোই ঘটার প্রোবাবিলিটি বের করতে, প্রথমে প্রথমটা ঘটার প্রোবাবিলিটি বের করো, তারপর গুণ করো দ্বিতীয়টা ঘটার প্রোবাবিলিটি দিয়ে, প্রথমটা ইতিমধ্যে ঘটেছে ধরে নিয়ে। তুমি প্রোবাবিলিটিগুলোকে একটা ধাপে ধাপে চেইনের মতো জোড়া লাগাচ্ছো, আলাদা আলাদা, অসম্পর্কিত ইভেন্ট হিসেবে ধরে না নিয়ে।
— আর দুটোই ঘটার প্রোবাবিলিটি — কে বলা হয় তাদের জয়েন্ট প্রোবাবিলিটি। এটা একটা সংখ্যা, যেটা একটা কম্বাইন্ড ফলাফল বর্ণনা করে, কোনো একটা ইভেন্ট একা না। সেকশন ২-এর টু-ওয়ে টেবিলে, প্রতিটা আলাদা সেল (রো বা কলাম টোটাল না) একটা জয়েন্ট প্রোবাবিলিটি — "গাড়িও আছে আর বাড়িও আছে" হলো ।
উদাহরণ। ৫২ কার্ডের ডেক থেকে দুইটা কার্ড টানা হলো, ফেরত না দিয়ে। দুইটাই টেক্কা হওয়ার জয়েন্ট প্রোবাবিলিটি কতটুকু?
দ্বিতীয় ভগ্নাংশটা থেকে -এ নেমে গেলো ঠিক এই কারণে যে প্রথম টানাটা একটা কার্ড সরিয়ে দিয়েছে — একটা কম টেক্কা, একটা কম কার্ড মোট — আর মাল্টিপ্লিকেশন রুলই ঠিক সেই বদলে যাওয়া প্রোবাবিলিটিটাকে সঠিকভাবে চেইন করার সুযোগ দেয়।
মাল্টিপ্লিকেশন রুল আর কন্ডিশনাল প্রোবাবিলিটির সংজ্ঞা আসলে একই সম্পর্ক, শুধু দুই দিক থেকে দেখা:
| শুরুর পয়েন্ট | ফর্মুলা | কী বের করবে |
|---|---|---|
| জয়েন্ট প্রোবাবিলিটি জানা আছে | P(A|B) = P(A∩B) / P(B) | কন্ডিশনাল প্রোবাবিলিটি, ভাগ করে |
| কন্ডিশনাল প্রোবাবিলিটি জানা আছে | P(A∩B) = P(B) · P(A|B) | জয়েন্ট প্রোবাবিলিটি, গুণ করে |
এই চেইনিং প্যাটার্ন — একটা প্রোবাবিলিটিকে একটা কন্ডিশনাল প্রোবাবিলিটি দিয়ে গুণ করে জয়েন্ট প্রোবাবিলিটি বের করা — এই কোর্সের বাকি পুরোটা জুড়ে একাধিক নির্ভরশীল ধাপ বা টানার মধ্য দিয়ে প্রোবাবিলিটি হিসাব করার ঠিক এই পদ্ধতিটাই ব্যবহার হবে, আর এটাই বেইজ থিওরেমের ভিত্তির সেই একই identity।
ইনডিপেন্ডেন্স হলো সেই বিশেষ ক্ষেত্র, যেখানে কন্ডিশনিং কিছুই বদলায় না। যদি ঘটেছে জানাটা ঘটবে কিনা তার ব্যাপারে তোমাকে একদম নতুন কোনো তথ্য না দেয়, তাহলে আর ইনডিপেন্ডেন্ট। ফরমালি, এর মানে — সেকশন ২-এর "সংকুচিত জগত"-এ আসলে পুরো স্যাম্পল স্পেসের মতোই একই অনুপাতে আছে।
কে সেকশন ৩-এর মাল্টিপ্লিকেশন রুলে বসালে ইনডিপেন্ডেন্সের স্ট্যান্ডার্ড, চেক-যোগ্য সংজ্ঞা পাওয়া যায়:
যেখানে এই একটামাত্র সমীকরণই সংজ্ঞা আর টেস্ট দুটোই: দুইটা ইভেন্ট আর ইনডিপেন্ডেন্ট, ঠিক তখনই যখন তাদের জয়েন্ট প্রোবাবিলিটি তাদের প্লেইন প্রোবাবিলিটির গুণফলের সমান — কন্ডিশনিং বা ভাগ করার দরকারই নেই, এটা চেক করতে।
এটা সমতুল্য বলার সাথে (যখন ) আর সিমেট্রিকভাবে -এর সাথে (যখন ) — তিনটা স্টেটমেন্টই আর -এর সম্পর্ক নিয়ে একই কথা বলছে।
দুইটা নির্দিষ্ট ইভেন্টের ইনডিপেন্ডেন্স চেক করতে, আলাদাভাবে , , আর হিসাব করো, তারপর -কে -এর সাথে তুলনা করো।
উদাহরণ। একটা fair কয়েন দুইবার টস করা হলো। = "১ম টস হেড" আর = "২য় টস হেড"। , , আর (৪-ফলাফলের স্যাম্পল স্পেস থেকে)।
কাউন্টার-উদাহরণ। ৫২ কার্ডের ডেক থেকে একটা কার্ড টানা হলো। = "টেক্কা" () আর = "হার্ট" ()। = "হার্টের টেক্কা", তাই ।
সুট আর র্যাংক আলাদা, অসম্পর্কিত বৈশিষ্ট্য মনে হলেও, এটা মিলে গেলো শুধু এই কারণে যে একটা স্ট্যান্ডার্ড ডেকে প্রতিটা সুটে ঠিক একই সংখ্যক প্রতিটা র্যাংক আছে। ডেকটা একটু বদলে দাও (একটা টেক্কা সরিয়ে ফেলো) — এই সমতা ভেঙে যাবে। ইনডিপেন্ডেন্স একটা নির্দিষ্ট সেটআপের precise numerical fact, চোখে দেখে আন্দাজ করার মতো vague ইনটুইশন না। সেকশন ২-এর প্লেগ্রাউন্ডে ফিরে গিয়ে কাউন্টগুলো হাতে বদলে দেখো — দেখবে একটা মাত্র সেল সামান্য বদলালেই টেবিলটা "ইনডিপেন্ডেন্ট" থেকে "ডিপেন্ডেন্ট"-এ চলে যায় কত সহজে।
দুইটা আলাদা কয়েন টস
১ম টসের ফলাফল ২য়টাকে প্রভাবিত করার কোনো ফিজিক্যাল উপায় নেই।
দুইটা আলাদা ডাইস রোল
প্রতিটা রোল একটা নতুন, অসম্পর্কিত র্যান্ডম এক্সপেরিমেন্ট।
ফেরত দিয়ে স্যাম্পলিং
একটা কার্ড ফেরত দিয়ে আবার শাফল করলে প্রতিবার ডেকটা রিসেট হয়ে যায়।
অসম্পর্কিত সেন্সর রিডিং
একটা শহরের থার্মোমিটার আর জলবায়ুগতভাবে অসম্পর্কিত দূরের শহরের থার্মোমিটার।
ইনডিপেন্ডেন্ট কোয়ালিটি চেক
দুইটা অসম্পর্কিত মেশিন, প্রতিটা আলাদাভাবে নিজের ইন্সপেকশনে পাস/ফেল হওয়া।
ডিপেন্ডেন্স হলো ইনডিপেন্ডেন্সের ঠিক উল্টো: আর ডিপেন্ডেন্ট, যখনই — জানা আসলে -এর ব্যাপারে তোমার বিশ্বাস বদলে দেয়, হয় বাড়িয়ে নয়তো কমিয়ে। ডিপেন্ডেন্স কোনো বিশেষ বা অস্বাভাবিক ব্যাপার না — বাস্তবে সত্যিকারভাবে সম্পর্কিত ইভেন্টের ক্ষেত্রে ডিপেন্ডেন্সই নিয়ম, আর ইনডিপেন্ডেন্স হলো ব্যতিক্রম, যেটা আলাদাভাবে প্রমাণ করতে হয়।
| বৈশিষ্ট্য | ইনডিপেন্ডেন্ট ইভেন্ট | ডিপেন্ডেন্ট ইভেন্ট |
|---|---|---|
| মূল শর্ত | P(A|B) = P(A) | P(A|B) ≠ P(A) |
| জয়েন্ট প্রোবাবিলিটি ফর্মুলা | P(A∩B) = P(A)P(B) | P(A∩B) = P(A)P(B|A), শর্টকাট নেই |
| B জানলে A-এর বিশ্বাস বদলায় কি? | না — কোনো নতুন তথ্য নেই | হ্যাঁ — B, A-এর প্রোবাবিলিটি বাড়ায় বা কমায় |
| সাধারণ উৎস | ফিজিক্যালি বা কজালি অসম্পর্কিত প্রক্রিয়া | কোনো শেয়ার্ড কারণ, মেকানিজম, বা সংকুচিত ফলাফল পুল |
কাছাকাছি শহরের আবহাওয়া
একটা শহরে বৃষ্টি হলে পাশের শহরেও বৃষ্টি হওয়ার সম্ভাবনা বাড়ে — শেয়ার্ড আবহাওয়া সিস্টেম।
একই সেক্টরের শেয়ারের দাম
একই ইন্ডাস্ট্রির দুইটা কোম্পানি প্রায়ই একসাথে ওঠানামা করে, শেয়ার্ড মার্কেট কন্ডিশনের কারণে।
মেডিকেল লক্ষণ
জ্বর আর কাশি ডিপেন্ডেন্ট — একই অসুখের কারণে দুটোই একসাথে হওয়ার সম্ভাবনা বেশি।
বাক্যের শব্দ
"New"-এর পরে "York" আসার সম্ভাবনা, একটা র্যান্ডম ডিকশনারি শব্দের চেয়ে অনেক বেশি।
ফেরত না দিয়ে কার্ড টানা
একটা কার্ড সরিয়ে ফেললে পরের প্রতিটা টানার জন্য ডেকের গঠন বদলে যায়।
এটা ডিপেন্ডেন্স বনাম ইনডিপেন্ডেন্সের সবচেয়ে পরিষ্কার, concrete উদাহরণ, আর প্রোবাবিলিটি প্রবলেমে বারবার আসে।
উদাহরণ তুলনা। একটা ব্যাগে ৫টা লাল আর ৫টা নীল মার্বেল (মোট ১০টা)। প্রথম দুইটা টানাই লাল হওয়ার প্রোবাবিলিটি কতটুকু?
| মেথড | ১ম টানা | ২য় টানা | দুটোই লাল |
|---|---|---|---|
| ফেরত দিয়ে | 5/10 = 0.5 | 5/10 = 0.5 (পুল রিসেট) | 0.5 × 0.5 = 0.25 |
| ফেরত না দিয়ে | 5/10 = 0.5 | 4/9 ≈ 0.444 (একটা লাল সরানো হয়েছে) | 0.5 × 4/9 ≈ 0.222 |
যখন যে পপুলেশন থেকে স্যাম্পল নেওয়া হচ্ছে সেটা স্যাম্পল সাইজের তুলনায় অনেক বড় (যেমন, লাখ লাখ মানুষের একটা দেশ থেকে ৫০ জনকে সার্ভে করা), ফেরত না দিয়ে স্যাম্পলিং প্রায় ফেরত দিয়ে স্যাম্পলিং-এর মতোই আচরণ করে — একজনকে সরালে বাকি পুলের গঠন খুব একটা বদলায় না। ডিপেন্ডেন্সটা তখনই numerically গুরুত্বপূর্ণ হয়ে ওঠে, যখন স্যাম্পলটা পুরো পপুলেশনের একটা বড় অংশ, যেমন উপরের ছোট ব্যাগের উদাহরণে।
কন্ডিশনাল ইনডিপেন্ডেন্স একটু সূক্ষ্ম একটা আইডিয়া: দুইটা ইভেন্ট জেনারেলি ডিপেন্ডেন্ট হতে পারে, কিন্তু আগে থেকেই একটা তৃতীয় ইভেন্ট জানা থাকলে ইনডিপেন্ডেন্ট হয়ে যেতে পারে। ফরমালি, আর কন্ডিশনালি ইনডিপেন্ডেন্ট, দেওয়া থাকলে, যদি:
সমতুল্যভাবে: — একবার তুমি জানলে, তার উপরে আবার জানাটা সম্পর্কে আর কোনো নতুন তথ্য দেয় না। আর -এর মধ্যে যা কিছু "সম্পর্ক" ছিল, সেটা আসলে -এর মধ্য দিয়েই প্রবাহিত হচ্ছিল।
এগুলো আসলেই আলাদা দুইটা বৈশিষ্ট্য, আর একটা থাকলে অন্যটা থাকতেই হবে এমন না, কোনো দিকেই:
| বৈশিষ্ট্য | প্লেইন ইনডিপেন্ডেন্স | কন্ডিশনাল ইনডিপেন্ডেন্স |
|---|---|---|
| শর্ত | P(A∩B) = P(A)P(B) | P(A∩B|C) = P(A|C)P(B|C) |
| অতিরিক্ত তথ্য ছাড়াই ধরে? | হ্যাঁ | না — শুধু C জানা থাকলে |
| A, B জেনারেলি ডিপেন্ডেন্ট কিন্তু C দেওয়া থাকলে কন্ডিশনালি ইনডিপেন্ডেন্ট হতে পারে? | N/A | হ্যাঁ — বেশ কমন |
| A, B জেনারেলি ইনডিপেন্ডেন্ট কিন্তু C দেওয়া থাকলে কন্ডিশনালি ডিপেন্ডেন্ট হতে পারে? | N/A | হ্যাঁ — এটাও সম্ভব ("explaining away") |
উদাহরণ — শেয়ার্ড কারণ ডিপেন্ডেন্স তৈরি করে, কন্ডিশনিং সেটা সরিয়ে দেয়। ধরো = "আজ সকালে স্প্রিংকলার চালু ছিল," = "ঘাস ভেজা," আর = "গতরাতে বৃষ্টি হয়েছে।" বৃষ্টি হলে স্প্রিংকলার দরকার হওয়ার সম্ভাবনা কমে আর সরাসরি ঘাসও ভিজিয়ে দেয়, তাই আর জেনারেলি ডিপেন্ডেন্ট মনে হয় (ভেজা ঘাস দেখলে বৃষ্টি হয়েছে এমন মনে হওয়ার সম্ভাবনা বাড়ে, যেটা স্প্রিংকলার দরকার ছিল কিনা তার সম্ভাবনাও বদলায়)। কিন্তু একবার নিশ্চিতভাবে জানলে (তুমি জানো বৃষ্টি হয়েছে), ঘাস ভেজা কিনা জানাটা স্প্রিংকলার সম্পর্কে আর কোনো অতিরিক্ত তথ্য দেয় না — দুটো দেওয়া থাকলে কন্ডিশনালি ইনডিপেন্ডেন্ট হয়ে যায়।
উদাহরণ — ডিজিজ টেস্টিং-এ কন্ডিশনাল ইনডিপেন্ডেন্স। অনেক সরল করা মেডিকেল মডেলে, দুইটা আলাদা ডায়াগনস্টিক টেস্টের রেজাল্টকে আসল ডিজিজ স্ট্যাটাস দেওয়া থাকলে কন্ডিশনালি ইনডিপেন্ডেন্ট ধরা হয়: । একবার তুমি নিশ্চিতভাবে জানলে রোগীর রোগ আছে কিনা, একটা টেস্টের রেজাল্ট অন্যটার সম্পর্কে আর অতিরিক্ত তথ্য দেয় না — যদিও রোগ স্ট্যাটাস না জানলে দুইটা টেস্ট রেজাল্ট correlated (দুটোই একসাথে পজিটিভ আসার প্রবণতা থাকে, কারণ দুটোই একই আন্ডারলাইং কন্ডিশন ধরছে)।
কন্ডিশনাল ইনডিপেন্ডেন্স শুধু একটা mathematical কৌতূহল না — এটাই সেই অ্যাসাম্পশন, যেটা অনেক প্রোবাবিলিস্টিক মডেলকে computationally সম্ভব করে তোলে। ফিচারের সংখ্যা বাড়ার সাথে সাথে প্রতিটা জোড়া (বা বড় গ্রুপ) ফিচারের মধ্যে সব ইন্টারঅ্যাকশন মডেল করতে exponentially বেশি ডেটা আর কম্পিউটেশন লাগে। ক্লাস লেবেল (বা অন্য কোনো ভ্যারিয়েবল) দেওয়া থাকলে কন্ডিশনাল ইনডিপেন্ডেন্স ধরে নেওয়া, সেই এক্সপ্লোশনটাকে এমন কিছুতে সংকুচিত করে দেয় যা আসলে হিসাব করা যায় — এটাই ঠিক সেই অ্যাসাম্পশন, যা Naive Bayes ক্লাসিফায়ারের পেছনে আছে, নিচে সেকশন ৯-এ প্রিভিউ করা হবে আর বেইজ থিওরেম চ্যাপ্টারে পুরোপুরি কভার করা হবে।
স্যাম্পল স্পেস -এর একটা পার্টিশন হলো ইভেন্টের একটা কালেকশন , যেটা দুইটা শর্ত মানে: এগুলো মিউচুয়ালি এক্সক্লুসিভ (কোনো দুইটা ওভারল্যাপ করে না, , -এর জন্য) আর এক্সহস্টিভ (সবগুলো একসাথে পুরো স্যাম্পল স্পেস কভার করে, )। -এর প্রতিটা ফলাফল ঠিক একটা পার্টিশন অংশের মধ্যেই থাকে — কোনো ফলাফল বাদ যায় না, কোনো ফলাফল দুইবার গোনা হয় না।
একটা সহজ, রোজকার পার্টিশন: যেকোনো ইভেন্ট -এর জন্য, জোড়া সবসময়ই -এর একটা valid পার্টিশন — প্রতিটা ফলাফল হয় -তে আছে, নয়তো নেই, কোনো ওভারল্যাপ নেই, কিছুই বাদ যায় না।
ল অফ টোটাল প্রোবাবিলিটি তোমাকে যেকোনো ইভেন্ট -এর প্লেইন, আনকন্ডিশনাল প্রোবাবিলিটি বের করতে দেয়, সেটাকে টুকরো টুকরো করে, একটা পার্টিশনের প্রতিটা অংশের উপর কন্ডিশন করে, তারপর টুকরোগুলো আবার যোগ করে। সরাসরি হিসাব করার বদলে (যেটা কঠিন হতে পারে), তুমি কয়েকটা সহজ কন্ডিশনাল প্রোবাবিলিটি হিসাব করো, আর সেগুলো একসাথে যোগ করো।
যেখানে:
সবচেয়ে কমন দুই-অংশের ক্ষেত্রে (শুধু আর -এর পার্টিশন):
কেন এটা কাজ করে: এটা আসলে সেকশন ৩-এর মাল্টিপ্লিকেশন রুলই, প্রতিটা পার্টিশন অংশের জন্য একবার করে প্রয়োগ করে তারপর যোগ করা — এই ফ্যাক্ট ব্যবহার করে যে অংশগুলো ওভারল্যাপ করে না (তাই ডাবল-কাউন্টিং নেই) আর সবকিছু কভার করে (তাই কিছুই বাদ যায় না)।
উদাহরণ। একটা ফ্যাক্টরিতে দুইটা মেশিন। মেশিন A সব পার্টসের ৬০% বানায় আর ডিফেক্ট রেট ২%। মেশিন B বাকি ৪০% বানায় আর ডিফেক্ট রেট ৫%। র্যান্ডমলি বাছাই করা একটা পার্টস নষ্ট হওয়ার সামগ্রিক প্রোবাবিলিটি কতটুকু?
ধরো = "নষ্ট," = "মেশিন A-তে তৈরি" (), = "মেশিন B-তে তৈরি" ()।
ফলাফল। সামগ্রিকভাবে সব পার্টসের ৩.২% নষ্ট — একটা সংখ্যা, দুই মেশিনের ভিন্ন রেট থেকে মিশিয়ে বের করা, প্রতিটা মেশিন আসলে কতটুকু আউটপুট দেয় সেই অনুপাতে ওয়েটেড।
একটা কমন ভুল হলো কন্ডিশনাল প্রোবাবিলিটিগুলো সরাসরি গড় করে ফেলা (), দিয়ে ওয়েট না করে। এটা তখনই ঠিক, যখন পার্টিশন অংশগুলো সমান সম্ভাব্য। এখানে, মেশিন A বেশি আউটপুট দেয় মেশিন B-এর চেয়ে, তাই তার কম ডিফেক্ট রেটটা সামগ্রিক গড়ে বেশি গুরুত্ব পাওয়া উচিত — ঠিক এটাই ওয়েটেড ফর্মুলা করে।
ল অফ টোটাল প্রোবাবিলিটি সাধারণত বেইজ থিওরেম প্রয়োগ করার সবচেয়ে কঠিন একটা ধাপ, কারণ বেইজ থিওরেমের ডিনোমিনেটর, ("evidence"), প্রায় সবসময়ই এই lawটা দিয়েই হিসাব করা হয়:
বেইজ থিওরেম চ্যাপ্টারের প্রতিটা worked example — ডিজিজ টেস্ট, ফ্যাক্টরি ডিফেক্ট প্রবলেম, স্প্যাম ফিল্টার — ঠিক এই expansionটাই ব্যবহার করে ভাগ করার আগে ডিনোমিনেটর বের করতে। এখানে ল অফ টোটাল প্রোবাবিলিটিতে স্বচ্ছন্দ হয়ে গেলে, পরের চ্যাপ্টারের হিসাবগুলো নতুন, অসম্পর্কিত ট্রিকের বদলে একটা স্বাভাবিক ধারাবাহিকতা মনে হবে।
এই দুইটা আলাদা ইভেন্টের উপর কন্ডিশন করে, আর সাধারণত আলাদা সংখ্যা দেয় — এই দুইটা গুলিয়ে ফেলাকে base rate fallacy বলে, আর এটা সব প্রয়োগিক প্রোবাবিলিটির মধ্যে সবচেয়ে গুরুতর ভুলগুলোর একটা। "একটা স্প্যাম ইমেইলে 'free' শব্দ থাকার সম্ভাবনা" () আর "একটা ইমেইল স্প্যাম হওয়ার সম্ভাবনা, যদি তাতে 'free' থাকে" () — এই দুইটা একদম আলাদা প্রশ্ন। বেইজ থিওরেম চ্যাপ্টারটা পুরোপুরিই এই দুইটার মধ্যে সঠিকভাবে উল্টানো নিয়ে।
এই দুইটা শুনতে একরকম মনে হলেও একদম উল্টো সম্পর্ক বর্ণনা করে। মিউচুয়ালি এক্সক্লুসিভ ইভেন্ট () আসলে ডিপেন্ডেন্সের সবচেয়ে শক্তিশালী রূপ — একটা ঘটেছে জানলে অন্যটা যে ঘটেনি তা একদম নিশ্চিতভাবে জানা যায়। ইনডিপেন্ডেন্ট ইভেন্ট, উল্টো দিকে, একসাথে ঘটতেই পারে; একটা ঘটেছে জানাটা শুধু অন্যটার প্রোবাবিলিটি বদলায় না। ননজিরো প্রোবাবিলিটির দুইটা মিউচুয়ালি এক্সক্লুসিভ ইভেন্ট কখনোই ইনডিপেন্ডেন্ট হতে পারে না (সেকশন ৪ দেখো), আর দুইটা ইনডিপেন্ডেন্ট ইভেন্ট প্রায় কখনোই মিউচুয়ালি এক্সক্লুসিভ না।
প্রবলেমে আসলে চাওয়া হলেও হিসাব করে ফেলা — কন্ডিশনিং তথ্যটা চুপচাপ বাদ দিয়ে দেওয়া — এটা টেকনিক্যালি ঠিক দেখতে কিন্তু আসলে ভুল উত্তর পাওয়ার সবচেয়ে কমন উপায়গুলোর একটা। সবসময় প্রবলেমে "given that," "if," বা "knowing that"-এর মতো ফ্রেজ খোঁজো, আর নিশ্চিত করো কন্ডিশনটা আসলে হিসাবে ঢুকেছে, শুধু পড়ে ভুলে যাওয়া হয়নি।
একবার তুমি -এর উপর কন্ডিশন করলে, রেলেভ্যান্ট স্যাম্পল স্পেস সংকুচিত হয়ে -তে নেমে আসে — কিন্তু অজান্তে আগের, পুরো স্যাম্পল স্পেসের সাইজ দিয়েই ভাগ করা চালিয়ে যাওয়া সহজ একটা ভুল। সেকশন ২-এর টু-ওয়ে টেবিল মেথডে, এটা দেখা যায় গ্র্যান্ড টোটাল (১০০) দিয়ে ভাগ করা হচ্ছে, সঠিক কলাম বা রো টোটালের (যেমন, ৪০) বদলে — সবসময় ডাবল-চেক করো তুমি কোন টোটাল দিয়ে ভাগ করছো।
প্রতিটা ক্লাসিফায়ারই, মূলত, একটা কন্ডিশনাল প্রোবাবিলিটি estimate করার মেশিন: । একটা স্প্যাম ফিল্টার estimate করে । একটা ইমেজ ক্লাসিফায়ার estimate করে । মডেলের পুরো কাজই হলো ট্রেইনিং ডেটা থেকে এই কন্ডিশনাল ডিস্ট্রিবিউশনের একটা ভালো অ্যাপ্রক্সিমেশন শিখে ফেলা, তারপর নতুন, না-দেখা ইনপুটের জন্য সেটা (বা সবচেয়ে সম্ভাব্য একটা ক্লাস) আউটপুট দেওয়া।
অনেক ক্লাসিক ক্লাসিফিকেশন অ্যাপ্রোচ — Naive Bayes সবচেয়ে বড় উদাহরণ — উল্টো দিক থেকে কাজ করে, যা তুমি হয়তো আশা করবে না: সরাসরি মডেল করার বদলে, তারা প্রতিটা ক্লাসের জন্য মডেল করে, তারপর বেইজ থিওরেম (সেকশন ৩-এর মাল্টিপ্লিকেশন রুলের উপর সরাসরি তৈরি) দিয়ে সেটাকে উল্টে ফেলে, প্রেডিকশনের জন্য আসল দরকারি রাশিতে নিয়ে যায়। বাস্তবে এটা সহজ, কারণ — "স্প্যাম ইমেইল সাধারণত কেমন দেখতে?" — প্রায়ই লেবেলড ট্রেইনিং ডেটা থেকে estimate করা উল্টোটার চেয়ে সহজ।
Naive Bayes-এর নামটাই এসেছে একটা ইচ্ছাকৃতভাবে সরল করা, "naive" অ্যাসাম্পশন থেকে: ক্লাস দেওয়া থাকলে, প্রতিটা ফিচারকে অন্য সব ফিচার থেকে কন্ডিশনালি ইনডিপেন্ডেন্ট ধরা হয় (সেকশন ৬-এর ঠিক সেই কনসেপ্ট):
এই অ্যাসাম্পশন ছাড়া, অনেকগুলো ফিচারের জয়েন্ট প্রোবাবিলিটি একসাথে মডেল করতে ফিচারের সংখ্যা বাড়ার সাথে exponentially বেশি ডেটা লাগবে — হাজার হাজার শব্দের একটা vocabulary-র জন্য এটা একদম অব্যবহারিক। ইনডিপেন্ডেন্স অ্যাসাম্পশন সেটাকে সংকুচিত করে দেয় একটা সহজ গুণফলে, প্রতিটা ফিচারের জন্য, প্রতিটা ক্লাসের জন্য, আলাদাভাবে estimate করা একটা করে প্রোবাবিলিটির। এটা প্রায় কখনোই একদম সত্যি না (একটা বাক্যের শব্দগুলো টপিক জানলেও একদম ইনডিপেন্ডেন্ট না), কিন্তু বাস্তবে অবাক করার মতো ভালো কাজ করে — এই কারণেই Naive Bayes টেক্সট ক্লাসিফিকেশনের জন্য একটা দ্রুত, শক্তিশালী বেসলাইন হিসেবে এতদিন পরেও টিকে আছে।
বেইজ থিওরেম derive করার জন্য দরকারি প্রতিটা জিনিসই ইতিমধ্যে এই চ্যাপ্টারে আছে: সেকশন ২-এর -এর সংজ্ঞা, সেকশন ৩-এর মাল্টিপ্লিকেশন রুল, আর সেকশন ৭-এর ল অফ টোটাল প্রোবাবিলিটি। -এর দুইটা মাল্টিপ্লিকেশন-রুল expansionকে একে অপরের সমান বসিয়ে ভাগ করলে সরাসরি বেইজ থিওরেম পাওয়া যায় — এই পুরো derivation, তার মেডিকেল, স্প্যাম-ফিল্টারিং, আর ফ্রড-ডিটেকশন উদাহরণসহ, পরের চ্যাপ্টারের পুরো বিষয়।
কন্ডিশনাল ইনডিপেন্ডেন্স অ্যাসাম্পশন শুধু Naive Bayes-এর জন্যই না — এটা একটা পুরো পরিবার মডেলের সংগঠনের মূল নীতি, যাদের বলা হয় প্রোবাবিলিস্টিক গ্রাফিক্যাল মডেল (বেইজিয়ান নেটওয়ার্ক, মার্কভ নেটওয়ার্ক, আর তাদের আত্মীয়)। এগুলো অনেক ভ্যারিয়েবলের একটা জটিল জয়েন্ট ডিস্ট্রিবিউশনকে ছোট ছোট কন্ডিশনাল ইনডিপেন্ডেন্স সম্পর্কের একটা সুসংগঠিত কালেকশন হিসেবে represent করে। একটা বিশাল, অসম্ভব জয়েন্ট প্রোবাবিলিটি টেবিলের বদলে, এই মডেলগুলো জগতকে represent করে এভাবে: "এই ভ্যারিয়েবল সরাসরি শুধু এই কয়েকটার উপরই নির্ভর করে" — ঠিক সেকশন ৬-এর স্প্রিংকলার/বৃষ্টি/ঘাসের উদাহরণের মতো স্ট্রাকচার, শুধু বড় স্কেলে, দশ-শতটা ভ্যারিয়েবল পর্যন্ত। কন্ডিশনাল ইনডিপেন্ডেন্স চিনতে পারা — আর কখন এটা যুক্তিসঙ্গত মডেলিং অ্যাসাম্পশন আর কখন না, সেটা বুঝতে পারা — এমন একটা স্কিল, যা এই কোর্সের পরে প্রায় প্রতিটা প্রোবাবিলিস্টিক মডেলেই কাজে লাগবে।
পরের চ্যাপ্টারের প্রায় প্রতিটা ফর্মুলা — আর এর পরের প্রোবাবিলিস্টিক মেশিন লার্নিং-এর অনেকটাই — সরাসরি এই চ্যাপ্টারের চারটা আইডিয়ার উপর তৈরি: P(A|B)-এর সংজ্ঞা, মাল্টিপ্লিকেশন রুল, ইনডিপেন্ডেন্স, আর ল অফ টোটাল প্রোবাবিলিটি। এই চারটাতে এখানেই স্বচ্ছন্দ হয়ে গেলে, বেইজ থিওরেম রহস্যময় না লেগে স্বাভাবিক মনে হবে।
কন্ডিশনাল প্রোবাবিলিটি
B-এর সংকুচিত জগতে A-এর প্রোবাবিলিটি হিসেবে P(A|B) সংজ্ঞায়িত করা।
ভেন ডায়াগ্রাম ও টেবিল
কন্ডিশনিং কীভাবে স্যাম্পল স্পেস সংকুচিত করে, তার visual আর ট্যাবুলার ইনটুইশন গড়া।
মাল্টিপ্লিকেশন রুল
কন্ডিশনাল প্রোবাবিলিটি আর জয়েন্ট প্রোবাবিলিটির মধ্যে দুই দিকেই কনভার্ট করা।
ইনডিপেন্ডেন্ট ইভেন্ট
সেই বিশেষ ক্ষেত্র চেনা, যেখানে কন্ডিশনিং কিছুই বদলায় না।
ডিপেন্ডেন্ট ইভেন্ট
জেনারেল ক্ষেত্র হ্যান্ডল করা, ফেরত দিয়ে বনাম ফেরত না দিয়ে স্যাম্পলিংসহ।
কন্ডিশনাল ইনডিপেন্ডেন্স
একটা তৃতীয় ইভেন্ট কীভাবে দুইটার মধ্যে ডিপেন্ডেন্স তৈরি বা সরিয়ে দিতে পারে, সেটা দেখা।
ল অফ টোটাল প্রোবাবিলিটি
স্যাম্পল স্পেসের একটা পার্টিশনের উপর যোগ করে একটা প্লেইন প্রোবাবিলিটি হিসাব করা।
কমন ভুল
এই এরিয়ার বেশিরভাগ ভুল উত্তরের পেছনে থাকা কয়েকটা ভুল এড়ানো।
ML অ্যাপ্লিকেশন
এই চ্যাপ্টারের প্রতিটা নিয়ম ক্লাসিফিকেশন আর Naive Bayes-এ কীভাবে কাজ করে, সেটা দেখা।