নিখুঁত ফেয়ারনেসের অসম্ভাব্যতা
এই পাঠে যা শিখবেন
- ক্যালিব্রেশন ও ইকুয়ালাইজড অডসের মধ্যে গাণিতিক টেনশনের সঠিক বিবৃতি ও কারণ
- Python দিয়ে দুটি দৃশ্যকল্পের প্রকৃত হিসাব — একটিতে ক্যালিব্রেশন সমান, অন্যটিতে FPR/FNR সমান, একই base rate-এ
- কেন এটি একটি নৈতিক ব্যর্থতা নয়, বরং একটি কাঠামোগত গাণিতিক সীমাবদ্ধতা
- এই সীমাবদ্ধতার ব্যবহারিক তাৎপর্য — কোন মেট্রিক্স অগ্রাধিকার পাবে তা একটি নীতিগত সিদ্ধান্ত
১ · টেনশনটির বিবৃতি
L16-এ চারটি ফেয়ারনেস মেট্রিক্স দেখা হয়েছে। L17-এ দেখা গেছে COMPAS-এর মতো একটি বাস্তব-জগতের সুপরিচিত প্যাটার্নে ক্যালিব্রেশন সমান থাকা সত্ত্বেও FPR/FNR ভিন্ন হতে পারে। L18-এ দেখা গেছে একটি মেট্রিক্স ঠিক করতে গেলে আরেকটি নষ্ট হতে পারে। এই পাঠে সেই পর্যবেক্ষণগুলোর পেছনের কারণ প্রমাণ করা হবে: যখন দুটি গোষ্ঠীর base rateBase Rateএকটি গোষ্ঠীর মধ্যে যারা প্রকৃতপক্ষেই পজিটিভ ক্লাসের অন্তর্গত তাদের অনুপাত — মডেলের সিদ্ধান্তের উপর নির্ভর করে না, এটি জনগোষ্ঠীর একটি বৈশিষ্ট্য। ভিন্ন, তখন ক্যালিব্রেশন ও ইকুয়ালাইজড অডস একসাথে হুবহু সন্তুষ্ট করা সাধারণত গাণিতিকভাবে অসম্ভব।
২ · দৃশ্যকল্প ১ ও ২: প্রকৃত সংখ্যা দিয়ে প্রমাণ
নিচের কোড সেলে দুটি গোষ্ঠীর জন্য একই দুটি base rate ধরে নেওয়া হয়েছে — Group A-এর ৬০%, Group B-এর ৩০% (একটি সিন্থেটিক, ইলাস্ট্রেটিভ ধরে নেওয়া বাস্তবতা — বাস্তব-জগতের রিসিডিভিজম বা অন্য কোনো ডেটাসেটের প্রকৃত সংখ্যা নয়, শুধু "দুই গোষ্ঠীর base rate ভিন্ন" এই সাধারণ পরিস্থিতিটি ধরার জন্য)। প্রথমে ক্যালিব্রেশন সমান রাখা হবে এবং FPR/FNR-এ কী হয় দেখা হবে। এরপর একই base rate-এ FPR/FNR সমান রাখা হবে এবং ক্যালিব্রেশনে কী হয় দেখা হবে।
# সিন্থেটিক, ইলাস্ট্রেটিভ উদাহরণ -- L16-L18-এর ফেয়ারনেস-মেট্রিক্স যুক্তি পুনরায় ব্যবহার করে।
# দুটি দৃশ্যকল্পেই Group A-এর প্রকৃত base rate = 60%, Group B-এর = 30% -- অপরিবর্তিত।
def group_metrics(tp, fp, fn, tn):
n = tp + fp + fn + tn
base_rate = (tp + fn) / n
fpr = fp / (fp + tn) if (fp + tn) else 0.0
fnr = fn / (fn + tp) if (fn + tp) else 0.0
calib_pos = tp / (tp + fp) if (tp + fp) else 0.0
calib_neg = fn / (fn + tn) if (fn + tn) else 0.0
return {"n": n, "base_rate": base_rate, "fpr": fpr, "fnr": fnr,
"calib_pos": calib_pos, "calib_neg": calib_neg}
def show(label, m):
print(f"{label} (n={m['n']}, প্রকৃত base rate={m['base_rate']*100:.0f}%)")
print(f" FPR={m['fpr']*100:.1f}% FNR={m['fnr']*100:.1f}% "
f"ক্যালিব্রেশন(pred+)={m['calib_pos']*100:.1f}% ক্যালিব্রেশন(pred-)={m['calib_neg']*100:.1f}%")
print("=== দৃশ্যকল্প ১: ক্যালিব্রেশন উভয় গ্রুপে সমান রাখা হলে ===")
s1_a = group_metrics(tp=48, fp=12, fn=6, tn=24)
s1_b = group_metrics(tp=12, fp=3, fn=15, tn=60)
show("Group A", s1_a)
show("Group B", s1_b)
print("\n=== দৃশ্যকল্প ২: FPR ও FNR উভয় গ্রুপে সমান রাখা হলে (Equalized Odds) ===")
s2_a = group_metrics(tp=48, fp=8, fn=12, tn=32)
s2_b = group_metrics(tp=24, fp=14, fn=6, tn=56)
show("Group A", s2_a)
show("Group B", s2_b)
print("\n=== সারসংক্ষেপ: কোন গ্যাপ কোথায় থেকে যায় ===")
fpr_gap_s1 = abs(s1_a["fpr"] - s1_b["fpr"]) * 100
fnr_gap_s1 = abs(s1_a["fnr"] - s1_b["fnr"]) * 100
calib_pos_gap_s2 = abs(s2_a["calib_pos"] - s2_b["calib_pos"]) * 100
calib_neg_gap_s2 = abs(s2_a["calib_neg"] - s2_b["calib_neg"]) * 100
print(f"দৃশ্যকল্প ১ (ক্যালিব্রেশন সমান): FPR গ্যাপ={fpr_gap_s1:.1f} পয়েন্ট, FNR গ্যাপ={fnr_gap_s1:.1f} পয়েন্ট")
print(f"দৃশ্যকল্প ২ (FPR/FNR সমান): ক্যালিব্রেশন(pred+) গ্যাপ={calib_pos_gap_s2:.1f} পয়েন্ট, ক্যালিব্রেশন(pred-) গ্যাপ={calib_neg_gap_s2:.1f} পয়েন্ট
৩ · এটি কেন ঘটে
স্বজ্ঞাগতভাবে: base rate, predicted-positive-এর অনুপাত, এবং ক্যালিব্রেশন — এই তিনটি রাশি একে অপরের সাথে গাণিতিকভাবে আবদ্ধ ($\text{base rate} = P(\hat{y}{=}1)\cdot\text{calib}_+ + P(\hat{y}{=}0)\cdot\text{calib}_-$)। যদি দুই গোষ্ঠীর base rate ভিন্ন থাকে এবং আপনি ক্যালিব্রেশন সমান রাখতে চান, তাহলে predicted-positive-এর অনুপাত (এবং তার সাথে FPR/FNR) ভিন্ন হতে বাধ্য। আবার যদি আপনি FPR ও FNR সমান রাখতে চান (গোষ্ঠীনির্বিশেষে একই হারে ভুল করতে চান), তাহলে ভিন্ন base rate-এর কারণে ক্যালিব্রেশন ভিন্ন হয়ে যেতে বাধ্য। এটি কোনো নির্দিষ্ট অ্যালগরিদম বা কোম্পানির ব্যর্থতা নয় — এটি সংখ্যার একটি অনিবার্য ফলাফল, ফেয়ারনেস-গবেষণা সাহিত্যে সুপ্রতিষ্ঠিত।
যেহেতু ক্যালিব্রেশন ও ইকুয়ালাইজড অডস একসাথে অর্জন করা সাধারণত অসম্ভব, তাই "আমাদের সিস্টেম ফেয়ার কিনা" প্রশ্নের উত্তর একটি খাঁটি প্রযুক্তিগত সমাধান দিয়ে দেওয়া যায় না। বরং এটি প্রশ্ন করে: এই নির্দিষ্ট প্রেক্ষাপটে (ঋণ, নিয়োগ, ফৌজদারি বিচার) কোন ফেয়ারনেস-লক্ষ্য সবচেয়ে গুরুত্বপূর্ণ — এবং কার স্বার্থ কোন মেট্রিক্সের সাথে সবচেয়ে ঘনিষ্ঠভাবে জড়িত? এটি একটি প্রকৌশলগত সিদ্ধান্তের চেয়ে বেশি একটি নীতিগত সিদ্ধান্ত — এবং কোর্সের CLAUDE.md-এর নির্দেশনা অনুযায়ী, এই কোর্স এখানে কোনো একটি ফেয়ারনেস-সংজ্ঞাকে "সঠিক" বলে রায় দেয় না, বরং পাঠককে এই ট্রেড-অফ নিয়ে যুক্তিসঙ্গতভাবে চিন্তা করার একটি ভিত্তি দেয়।
ভাবনার প্রশ্ন
প্রতিটি প্রশ্ন নিজে কিছুক্ষণ ভাবুন — তারপর "→ উত্তর" চাপুন।
প্র ০১ যদি দুই গোষ্ঠীর base rate সমান হতো, তাহলে কি এই টেনশনটি থাকত?
না — যদি দুই গোষ্ঠীর base rate হুবহু সমান হয়, তাহলে গাণিতিকভাবে ক্যালিব্রেশন ও ইকুয়ালাইজড অডস একসাথে সন্তুষ্ট করা সম্ভব (একই classifier উভয় গোষ্ঠীতে অভিন্নভাবে প্রয়োগ করলে সবকিছুই স্বাভাবিকভাবে মিলে যায়)। টেনশনটি শুধুমাত্র তখনই দেখা দেয় যখন base rate ভিন্ন — এটিই দেখায় সমস্যাটি অ্যালগরিদমে নয়, দুই গোষ্ঠীর অন্তর্নিহিত পরিসংখ্যানগত পার্থক্যে নিহিত।
প্র ০২ এই ফলাফলটি কি এই সিদ্ধান্তে নিয়ে যায় যে ফেয়ারনেস মেট্রিক্স নিয়ে চিন্তা করাই অর্থহীন?
না — বরং উল্টো। এই ফলাফল দেখায় ফেয়ারনেস নিয়ে চিন্তাভাবনা আরও সতর্ক ও সুনির্দিষ্ট হওয়া দরকার। "আমরা ফেয়ার" বলা যথেষ্ট নয় — কোন মেট্রিক্সে ফেয়ার, কোন মেট্রিক্সে নয়, এবং কেন সেই মেট্রিক্সটিকে অগ্রাধিকার দেওয়া হয়েছে তা স্পষ্টভাবে জানানো দরকার। অসম্ভাব্যতা মানে "চেষ্টা না করা", বরং এটি মানে "সৎভাবে ট্রেড-অফ স্বীকার করা"।
প্র ০৩ উপরের কোড সেলে দৃশ্যকল্প ২-তে যদি Group B-এর base rate ৩০%-এর বদলে ৬০% (Group A-এর সমান) করা হতো, ক্যালিব্রেশনের গ্যাপ সম্পর্কে কী অনুমান করা যায়?
যদি উভয় গোষ্ঠীর base rate সমান হয়ে যায় (এবং FPR/FNR-ও ইতিমধ্যে সমান রাখা হয়), তাহলে ক্যালিব্রেশনও স্বয়ংক্রিয়ভাবে সমান হয়ে যাওয়ার কথা — গ্যাপ প্রায় শূন্যে নেমে আসবে। এটিই আগের প্রশ্নের উত্তরকে সমর্থন করে: টেনশনটি base rate-এর পার্থক্য থেকেই জন্ম নেয়, অন্য কিছু থেকে নয়।
অনুশীলন
-
চিন্তা করুন: একটি হাসপাতালের রোগ-নির্ণয়ের AI টুলের জন্য, ক্যালিব্রেশন ও ইকুয়ালাইজড
অডসের মধ্যে কোনটিকে আপনি অগ্রাধিকার দিতেন, এবং কেন? একটি ঋণ-অনুমোদন টুলের জন্য কি উত্তর ভিন্ন হতে পারে?
একটি রোগ-নির্ণয় টুলে, উচ্চ FNR (প্রকৃত রোগীকে মিস করা) সরাসরি জীবনের ঝুঁকি তৈরি করে, তাই অনেকে ইকুয়ালাইজড অডসকে (বিশেষত সমান FNR) অগ্রাধিকার দিতে চাইবেন। একটি ঋণ-অনুমোদন টুলে, ক্যালিব্রেশন (স্কোরের বিশ্বাসযোগ্যতা) আর্থিক ঝুঁকি-ব্যবস্থাপনার জন্য বেশি গুরুত্বপূর্ণ মনে হতে পারে। কোনো একক উত্তর "সঠিক" নয় — এটি প্রেক্ষাপট ও কার ক্ষতি সবচেয়ে গুরুতর তার উপর নির্ভর করে।
-
পরীক্ষা করুন: উপরের কোড সেলে দৃশ্যকল্প ১-এ
s1_b-এরfp=3-কেfp=15করে (এবংtnকমিয়ে48করে, যাতে base rate ৩০%-ই থাকে) Run চেপে দেখুন FPR গ্যাপ ও ক্যালিব্রেশন গ্যাপ কীভাবে বদলায়।fpবাড়ালে Group B-এর FPR বাড়বে (15/63 ≈ ২৩.৮%, আগের ৪.৮%-এর চেয়ে অনেক বেশি — FPR গ্যাপ কমে যাবে) কিন্তু predicted-positive ক্যালিব্রেশন কমে যাবে (12/27 ≈ ৪৪.৪%, আর Group A-এর ৮০.০%-এর সাথে আর মিলবে না — ক্যালিব্রেশনের সমতা ভেঙে যাবে)। এটি আবারও নিশ্চিত করে: একটি সংখ্যা বদলালে একটি মেট্রিক্সের গ্যাপ কমে, কিন্তু অন্য মেট্রিক্সের গ্যাপ তৈরি বা বৃদ্ধি পায়।
আরও পড়ুন · ABCL TECH-এ আপনার পরবর্তী পদক্ষেপ
- পরবর্তী পাঠ: প্রফেশনাল কোড — ACM ও IEEE L20 মডিউল ৫ শুরু — ফেয়ারনেসের মতো প্রযুক্তিগত সিদ্ধান্তকে পেশাগত নীতিমালার সাথে যুক্ত করা।
- ফিরে দেখুন: ফেয়ারনেস মেট্রিক্স L16 এই পাঠে ব্যবহৃত চারটি মূল মেট্রিক্সের সংজ্ঞা ও সূত্র।
- কোর্সের সম্পূর্ণ সিলেবাস দেখুন ৫৭টি পাঠ M4 (অ্যালগরিদমিক বায়াস ও ফেয়ারনেস) সম্পূর্ণ — এখন M5 প্রফেশনাল এথিক্সে এগিয়ে যান।