জুডিয়া পিয়ারের কারণগত মডেলগুলো কীভাবে টিমগুলোকে এআই আচরণ ব্যাখ্যা করতে, ব্যর্থতা ডিবাগ করতে, এবং কোরিলেশন ছাড়িয়ে পরিষ্কার প্রোডাক্ট সিদ্ধান্ত নিতে সাহায্য করে তা শিখুন।

একটি টিম তাদের ড্যাশবোর্ডে “স্পষ্ট” কিছু লক্ষ করে: যাদের বেশি নোটিফিকেশন আসে, তারা আরও বেশি ফিরে আসে। তাই তারা নোটিফিকেশন বাড়িয়ে দেয়। এক সপ্তাহ পরে রিটেনশন কমে যায় এবং চর্ন সম্পর্কে অভিযোগ বাড়ে। কী ঘটল?
মূল প্যাটার্নটি বাস্তব ছিল—কিন্তু বিভ্রান্তিকর। সবচেয়ে এনগেজ হওয়া ব্যবহারকারীরাই স্বভাবতই বেশি নোটিফিকেশন ট্রিগার/প্রাপ্ত করে (কারণ তারা বেশি প্রোডাক্ট ব্যবহার করে), এবং তারা স্বভাবতই বেশি ফিরে আসে। নোটিফিকেশনগুলো রিটেনশন সৃষ্টি করেনি; এনগেজমেন্ট দুটি ঘটনার কারণ। টিম কোরিলেশনের ওপর ভিত্তি করে কাজ করেছিল এবং অসাবধানতাবশত খারাপ অভিজ্ঞতা তৈরি করল।
কারণগত চিন্তা习惯 হলো এই প্রশ্ন করা: কি কি কি কারণ এবং আমরা কীভাবে জানি? কেবল “এই দুই জিনিস একসাথে চলে” এটাই বলা বন্ধ করে, আপনি আলাদা করার চেষ্টা করেন:
এটা ডেটার বিরুদ্ধে সন্দেহপ্রবণ হওয়ার ব্যাপার না—এটা প্রশ্নটাকে স্পেসিফিক করার ব্যাপার। “নোটিফিকেশন কী রিটেনশনের সাথে কোরিলেট করে?” আলাদা প্রশ্ন “আরও নোটিফিকেশন পাঠালে রিটেনশন বাড়বে কি?”—দ্বিতীয় প্রশ্নটি কারণগত।
এই পোস্টটি তিনটি ব্যবহারিক এলাকায় ফোকাস করে যেখানে প্যাটার্ন-খোঁজা প্রায়ই ব্যর্থ হয়:
এটি গণিত-ভারী কারণগত ইনফারেন্সের পথ নয়। আপনি do-calculus নোটেশন শেখার প্রয়োজন নেই। লক্ষ্য হলো এমন কিছু মেন্টাল মডেল এবং একটি ওয়ার্কফ্লো যা আপনার টিম ব্যবহার করতে পারে:
আপনি যদি কখনও এমন কোনো পরিবর্তন শিপ করে থাকেন যা “ডেটায় ভালো দেখাচ্ছিল” কিন্তু বাস্তবে কাজ করেনি, তাহলে কারণগত চিন্তাভাবই অনুপস্থিত সংযোগ।
জুডিয়া পিয়ার একজন কম্পিউটার বিজ্ঞানী ও বিজ্ঞানের দার্শনিক, যার কাজ অনেক টিমের ডেটা, এআই এবং সিদ্ধান্ত গ্রহণের চিন্তাভাবনাকে পুনর্গঠন করেছে। তাঁর কারণগত বিপ্লবের আগে, কম্পিউটিং-এ "ডেটা থেকে শেখা" বেশিরভাগই স্ট্যাটিস্টিক্যাল অ্যাসোসিয়েশনের উপর জোর দিত: প্যাটার্ন খুঁজে বের করা, মডেল ফিট করা, পরবর্তী যা হবে তা প্রেডিক্ট করা। এই পদ্ধতি শক্তিশালী—কিন্তু যখন আপনি এমন কোনো প্রোডাক্ট বা ইঞ্জিনিয়ারিং প্রশ্ন করেন যার মধ্যে "কারণ" শব্দটি আসে, তখন তা প্রায়ই ভেঙে পড়ে।
পিয়ারের মূল পরিবর্তন ছিল কারণকে প্রথম শ্রেণির কনসেপ্ট হিসেবে দেখা, কেবল কোরিলেশনের উপর ভিত্তি করে ভেজা ধারণা নয়। কেবল জিজ্ঞেস না করা “যখন X উচ্চ, Y কি উচ্চ?”—কারণগত চিন্তা জিজ্ঞেস করে, “যদি আমরা X পরিবর্তন করি, Y কি পরিবর্তিত হবে?” এই পার্থক্য ছোট মনে হলেও এটি প্রেডিকশনকে সিদ্ধান্ত গ্রহণ থেকে আলাদা করে।
অ্যাসোসিয়েশন জানায় "কি একসাথে ঘটে"। কারণগততা লক্ষ্য করে “যদি আমরা হস্তক্ষেপ করি, কি হবে।” এটি গুরুত্বপূর্ণ কারণ অনেক বাস্তব সিদ্ধান্তই হস্তক্ষেপ-আকৃতির: একটি ফিচার শিপ করা, র্যাঙ্কিং পরিবর্তন করা, গার্ডরেইল যোগ করা, ট্রেনিং সেট বদলানো, বা নীতি টুইক করা।
পিয়ার কারণকে আরও ব্যবহারিক করেছেন কারণ এটিকে একটি মডেলিং পছন্দ ও স্পষ্ট অনুমান হিসেবে উপস্থাপন করেছেন। সাধারণত ডেটা থেকে স্বয়ংক্রিয়ভাবে কারণ আবিষ্কার করা যায় না; আপনি একটি কারণগত গল্প প্রস্তাব করেন (সাধারণত ডোমেইন জ্ঞানের ভিত্তিতে) এবং তারপর ডেটা ব্যবহার করে তা টেস্ট, এস্টিমেট, ও পরিমার্জন করেন।
এই টুলগুলো টিমগুলোকে একটি সাধারণ ভাষা দেয় যাতে তারা প্যাটার্ন-খোঁজা থেকে কারণগত প্রশ্নের উত্তর দেয়ার দিকে স্পষ্ট ও শৃঙ্খলাবদ্ধভাবে অগ্রসর হতে পারে।
কোরিলেশন মানে দুইটি জিনিস একসাথে চলে: একটি বাড়লে অন্যটাও সাধারণত বাড়ে (বা কমে)। এটি অত্যন্ত উপকারী—বিশেষ করে ডেটাভিত্তিক টিমগুলোর জন্য—কারণ এটি প্রেডিকশন ও ডিটেকশন-কে সাহায্য করে।
যদি তাপমাত্রা বাড়লে আইসক্রিম বিক্রি বাড়ে, একটি কোরিলেটেড সিগন্যাল (তাপমাত্রা) ফোরকাস্টিং উন্নত করতে পারে। প্রোডাক্ট ও এআই কাজগুলোতে কোরিলেশনগুলো র্যাঙ্কিং মডেল, অ্যানোমালি স্পটিং, ও দ্রুত ডায়াগনস্টিক চালাতে ব্যবহৃত হয়।
সমস্যা শুরু হয় যখন আমরা কোরিলেশনকে অন্য একটি প্রশ্নের উত্তর মনে করি: যদি আমরা ইচ্ছাকৃতভাবে কিছু পরিবর্তন করি তাহলে কি হবে? সেটাই কারণগততা।
কোরিলেটেড সম্পর্ক একটি তৃতীয় ফ্যাক্টরের ফলে হতে পারে যা উভয় ভেরিয়েবলকেই প্রভাবিত করে। X পরিবর্তন করলে Y পরিবর্তিত হবে এমন নিশ্চয়তা নেই—কারণ X হয়ত Y-কে সরাসরি প্রভাবিত করছিল না; Y অন্য কোনো কারণে সরেছে।
মনে করুন সাপ্তাহিক মার্কেটিং ব্যয় বনাম সাপ্তাহিক বিক্রয় গ্রাফ করলে একটি শক্ত কোরিলেশন দেখা যায়। সহজেই বলা যায় “বেশি ব্যয় = বেশি বিক্রয়।”
কিন্তু ধরে নিন উভয়ই ছুটির সময় বেড়ে যায়। ঋতু (একটি কনফাউন্ডার) উচ্চ ডিমান্ড তৈরি করে এবং বড় বাজেট প্ররোচিত করে। যদি আপনি নন-হলিডে সপ্তাহে ব্যয় বাড়ান, বিক্রয় অনেক বাড়বে না—কারণ মুল ডিমান্ড নেই।
আপনি কারণগত এলাকা প্রবেশ করছেন যখন নিজেকে নিম্নলিখিত জিজ্ঞাসাগুলো শুনেন:
যখন ক্রিয়া-শব্দগুলো হচ্ছে change, launch, remove, অথবা reduce, কোরিলেশন শুরু করার ক্লুও—তথ্যকল্পিত সিদ্ধান্তের নিয়ম নয়।
একটি কারণগত ডায়াগ্রাম—প্রায়ই একটি DAG (Directed Acyclic Graph)—একটি সহজ উপায় টিমের অনুমানগুলো দৃশ্যমান করার। অস্পষ্ট কথাবার্তায় ঝগড়া করার বদলে (“হয়ত মডেল সমস্যা” বা “সম্ভবত UI”), আপনি কাহিনী কাগজে তুলে ধরেন।
লক্ষ্য নিখুঁত সত্য নয়; লক্ষ্য হলো একটি শেয়ার করা খসড়া “সিস্টেম কিভাবে কাজ করে” যা সবাই সমালোচনা করতে পারে।
ধরা যাক আপনি যাচাই করছেন কি নতুন অনবোর্ডিং টিউটোরিয়াল (T) অ্যাক্টিভেশন (A) বাড়ায় কিনা।
একটি সাধারণ অ্যানালিটিক্স প্রবৃত্তি হলো “সব উপলব্ধ ভেরিয়েবল কন্ট্রোল করা।” DAG-তে তা মানে আপনি দুর্ঘটনবশত:
DAG-এর সঙ্গে আপনি উদ্দেশ্যভিত্তিকভাবে ভেরিয়েবলগুলো অ্যাডজাস্ট করেন—সাধারণত কনফাউন্ডিং পথ ব্লক করার জন্য—অর্থাৎ কারণ না ভেবে কেবল বিদ্যমান হওয়ার কারণে নয়।
হোয়াইটবোর্ড দিয়ে তিন ধাপ শুরু করুন:
এমনকি একটি খসড়া DAG প্রোডাক্ট, ডেটা, ও ইঞ্জিনিয়ারিংকে একই কারণগত প্রশ্নে একসাথে এনে দেয় যতক্ষণ না আপনি সংখ্যা চালান।
জুডিয়া পিয়ারের কারণগত চিন্তাভাবনার একটি বড় শিফট হলো দেখার (observing) এবং পরিবর্তন করার (changing) মধ্যে পার্থক্য করা।
আপনি যদি দেখেন যে নোটিফিকেশন অন করা ব্যবহারকারীরা ভালো রিটেনশন দেখায়, আপনি একটি প্যাটার্ন শিখেছেন। কিন্তু আপনি এখনও জানেন না নোটিফিকেশনগুলো রিটেনশন কারণ নাকি এনগেজ করা ব্যবহারকারীরাই সচরাচর অন করে।
একটি ইন্টারভেনশন ভিন্ন: আপনি সক্রিয়ভাবে একটি ভেরিয়েবলকে সেট করেন এবং পরের ফল মাপেন। প্রোডাক্টের ভাষায়, এটা kেবল “ব্যবহারকারী নির্বাচন করেছে X” নয়—এটা “আমরা X শিপ করেছি।”
পিয়ার প্রায়ই এ পার্থক্যকে লেবেল দেন:
“do” ধারণাটি মূলত একটি মানসিক টীকা যে আপনি সাধারণ কারণগুলো ভেঙে দিচ্ছেন—ইন্টারভেনশন করলে নোটিফিকেশন অন থাকার কারণ এনগেজড ব্যবহারকারী নাও হতে পারে; সেটা আপনার বাহ্যিক পদক্ষেপ। এটাই মূল: ইন্টারভেনশন কারণ-এবং-প্রভাব আলাদা করতে সাহায্য করে।
অধিকাংশ বাস্তব প্রোডাক্ট কাজই হস্তক্ষেপ-আকৃতির:
এই কাজগুলো আউটকাম পরিবর্তন করার উদ্দেশ্যে—কেবল বর্ণনা করার জন্য নয়। কারণগত চিন্তা প্রশ্নটাকে সৎ রাখে: “যদি আমরা এটি করি, কি বদলাবে?”
একটি হস্তক্ষেপ ব্যাখ্যা করার জন্য (বা একটি ভাল পরীক্ষা ডিজাইন করার জন্য) আপনাকে কি কি প্রভাব করে—এই সম্পর্কে অনুমান লাগবে—আপনার কারণগত ডায়াগ্রাম, যদিও অনানুষ্ঠানিক।
উদাহরণস্বরূপ, যদি মরশুম একসাথে মার্কেটিং ব্যয় ও সাইন-আপ উভয়কে প্রভাবিত করে, তখন ব্যয় পরিবর্তন করে “do” করলেও মরশুম না দেখে আপনাকে ভুল সিদ্ধান্তে নিয়ে যেতে পারে। ইন্টারভেনশন শক্তিশালী—কিন্তু কেবল তখনই কারণগত প্রশ্নের উত্তর দেয় যখন মৌলিক কারণগত গল্প প্রায় সঠিক।
কাউন্টারফ্যাকচুয়াল হলো একটি নির্দিষ্ট ধরণের “কি হলে?” প্রশ্ন: এই নির্দিষ্ট কেসের জন্য, যদি আমরা আলাদা কিছু করতাম (বা একটি ইনপুট আলাদা হত) তাহলে কি হতো? এটা “গড়ে কি হয়?”-এর প্রশ্ন নয়—এটা “এই ব্যক্তির জন্য কি ফল বদলত?”
কাউন্টারফ্যাকচুয়াল যেখানে আসে যখন কেউ বিকল্প পথ চায়:
এই প্রশ্নগুলো ব্যবহারকারি-স্তরের এবং পণ্য পরিবর্তন, নীতি, ও ব্যাখ্যার নির্দেশ দেয়।
ধরা যাক একটি লোন মডেল একটি আবেদন প্রত্যাখ্যান করেছে। একটি কোরিলেশন-ভিত্তিক ব্যাখ্যা হতে পারে, “নিম্ন সঞ্চয় প্রত্যাখ্যানের সাথে কোরিলেট করে।” একটি কাউন্টারফ্যাকচুয়াল জিজ্ঞাসা করে:
যদি আবেদনকারীর সঞ্চয় $3,000 বেশি হতো (অন্য সবকিছু অপরিবর্তিত), মডেল কি তাদের অনুমোদন করত?
যদি উত্তর “হ্যাঁ”, আপনি কর্মপরামর্শ পান: একটি সম্ভাব্য পরিবর্তন যা সিদ্ধান্ত উলটাতে পারে। যদি উত্তর “না”, আপনি বিভ্রান্তিমূলক পরামর্শ (যেমন “সঞ্চয় বাড়ান”) এড়াতে পারেন যখন প্রকৃত বাধা হতে পারে দেনার অনুপাত বা অনিয়মিত চাকরির ইতিহাস।
কাউন্টারফ্যাকচুয়ালস একটি কারণগত মডেল-এর ওপর নির্ভর করে—কেবল একটি ডেটাসেটে নয়। আপনাকে নির্ধারণ করতে হবে কি বাস্তবসম্মতভাবে পরিবর্তন করা যাবে, ফলে আর কি পরিবর্তিত হবে, এবং কি অপরিবর্তিত থাকবে। সেই কারণগত কাঠামো ছাড়া কাউন্টারফ্যাকচুয়াল অসম্ভব পরিস্থিতি তৈরি করতে পারে ("আয় না বাড়িয়ে সঞ্চয় বৃদ্ধি করুন") এবং অনুপযোগী বা অন্যায় পরামর্শ দিতে পারে।
যখন একটি ML মডেল প্রোডাকশনে ফেল করে, রুট-কজ প্রায়ই “অ্যালগরিদম খারাপ হয়েছে” নয়। বরং সিস্টেমে কিছু বদলেছে: ডেটা সংগ্রহ, লেবেলিং কিভাবে হচ্ছে, বা ব্যবহারকারীদের আচরণ বদলেছে। কারণগত চিন্তা আপনাকে অনুমান ছেড়ে কারণ আলাদা করতে সাহায্য করে।
কয়েকটি পুনরাবৃত্ত অপরাধী:
এসব দেখে ড্যাশবোর্ডে সব ঠিকঠাক দেখতেও পারে কারণ কোরিলেশন উচ্চ থাকতে পারে যদিও মডেল সঠিক হওয়ার কারণ বদলেছে।
একটি সহজ কারণগত ডায়াগ্রাম (DAG) ডিবাগিংকে একটি মানচিত্রে পরিণত করে। এটা আপনাকে জিজ্ঞাসা করতে বাধ্য করে: এই ফিচারটি লেবেলের কারণ, পরিণত, না লেবেলিং কিভাবে করা হচ্ছে তার ফলাফল?
উদাহরণস্বরূপ, যদি লেবেলিং পলিসি → ফিচার ইঞ্জিনিয়ারিং → মডেল ইনপুট হয়, আপনি এমন একটি পাইপলাইন তৈরি করে ফেলতে পারেন যেখানে মডেলটি মূল ঘটনাটি নয় বরং পলিসি ভবিষ্যদ্বাণী করছে। একটি DAG সেই পথটিকে দৃশ্যমান করে যাতে আপনি এটি ব্লক করতে পারেন (ফিচার সরান, ইন্সট্রুমেন্টেশন বদলান, বা লেবেল পুনর্নির্ধারণ করুন)।
শুধু ভবিষ্যদ্বাণী পর্যালোচনা না করে নিয়ন্ত্রণকৃত ইন্টারভেনশন চেষ্টা করুন:
অনেক “এক্সপ্লেইনেবিলিটি” টুল একটি সংকীর্ণ প্রশ্নের উত্তর দেয়: এই পেডিকশনের স্কোরটি কেন এসেছে? তারা প্রভাবশালী ইনপুটগুলো হাইলাইট করে (ফিচার ইम्पরট্যান্স, সালিয়েন্সি, SHAP মান)। সেটা দরকারী—কিন্তু মডেল যে সিস্টেমের ভেতরে আছে যে সিস্টেমের ব্যাখ্যা তা নয়।
একটি প্রেডিকশন ব্যাখ্যা লোকাল ও বর্ণনামূলক: “এই লোনটি মূলত নিম্ন আয় এবং উচ্চ ব্যবহার শতাংশের কারণে প্রত্যাখ্যাত।”
একটি সিস্টেম ব্যাখ্যা কারণগত ও অপারেশনাল: “যদি আমরা যাচাই করা আয় বাড়াই (অথবা ব্যবহার শতাংশ কমাই) এমনভাবে যা বাস্তবে হস্তক্ষেপ হিসাবে মানে রাখে, কি সিদ্ধান্ত বদলাবে—আর downstream আউটকাম কি উন্নত হবে?”
প্রথমটি মডেলের আচরণ ব্যাখ্যা করে; দ্বিতীয়টি সিদ্ধান্ত নেয়ার জন্য কার্যকর করে।
কারণগত চিন্তা ব্যাখ্যাকে হস্তক্ষেপের সঙ্গে জোড়ে দেয়। কেবল জিজ্ঞাসা না করে কোন ভেরিয়েবল স্কোরকে কোরিলেট করে, আপনি জিজ্ঞাসা করেন কোন ভেরিয়েবলগুলো আইনগত লিভার এবং সেগুলো বদলালে কি ফল হবে।
একটি কারণগত মডেল আপনাকে স্পষ্ট করতে বাধ্য করে:
এটি গুরুত্বপূর্ণ কারণ একটি “ইম্পরট্যান্ট ফিচার” প্রেডিকশনের জন্য প্রোক্সি হতে পারে—প্রেডিকশনের জন্য দরকারী, কার্যকরী হস্তক্ষেপ হিসেবে বিপজ্জনক।
পোস্ট‑হক ব্যাখ্যাগুলো প্রলুব্ধিকর হতে পারে কিন্তু বিশুদ্ধভাবে কোরিলেশন ট্র্যাক করে থাকতে পারে। যদি “সাপোর্ট টিকেটের সংখ্যা” শক্তভাবে চর্ন প্রেডিক্ট করে, ফিচার‑ইম্পরট্যান্স প্লট টিমকে প্রলুব্ধ করতে পারে “টিকেট কমাও”—কিন্তু টিকেট আসলে underlying প্রোডাক্ট ইস্যুর লক্ষণ; টিকেট কমানোর চেষ্টা করলেই চর্ন বাড়তে পারে।
কোরিলেশন-ভিত্তিক ব্যাখ্যা ডিস্ট্রিবিউশন শিফটে ভঙ্গুর হয়ে পড়ে: ব্যবহারকারীর আচরণ বদলে গেলে একই হাইলাইট করা ফিচারগুলোর অর্থ বদলে যেতে পারে।
কারণগত ব্যাখ্যা বিশেষভাবে মূল্যবান যখন সিদ্ধান্তের পরিণতি ও জবাবদিহিতা থাকে:
যখন আপনাকে কাজ করতে হবে, কেবল ব্যাখ্যা নয়—ব্যাখ্যাকে কারণগত কঙ্কাল লাগবে।
A/B টেস্টিং হলো তার সরলতম, সবচেয়ে ব্যবহারিক কারণগত ইনফারেন্স। আপনি যখন ব্যবহারকারীদের র্যান্ডমভাবে ভেরিয়েন্ট এ বা বি-তে দেন, আপনি একটি হস্তক্ষেপ করছেন: আপনি কেবল পর্যবেক্ষণ করছেন না, আপনি "do(variant = B)" বাস্তব করে তুলছেন—তাই আউটকামের পার্থক্য বিশ্বাসযোগ্যভাবে পরিবর্তনের ফল হিসেবে দেখা যায়।
র্যান্ডম অ্যাসাইনমেন্ট অনেক লুকানো লিঙ্ক ভেঙে দেয় ব্যবহারকারীর বৈশিষ্ট্য ও এক্সপোজারের মধ্যকার। পাওয়ার ইউজার, নতুন ইউজার, সময়, ডিভাইস টাইপ—এসব মাঝেই আছে, কিন্তু গড়ে গ্রুপগুলোর মধ্যে ব্যালান্সড থাকে। সেই ব্যালান্সই মেট্রিক গ্যাপকে কারণগত দাবিতে পরিণত করে।
খুব ভালো টিমও সবসময় পরিষ্কার র্যান্ডমাইজ করা পরীক্ষা চালাতে পারে না:
এসব ক্ষেত্রে, আপনি এখনও কারণগতভাবে ভাবতে পারেন—কিন্তু অনুমান ও অনিশ্চয়তা স্পষ্ট করতে হবে।
সাধারণ অপশনগুলো হল difference-in-differences (সময় ধরে গ্রুপগুলোর পরিবর্তন তুলনা), regression discontinuity (কাট-অফ নিয়ম ব্যবহার করে, যেমন “কেবল স্কোর X ছাড়িয়ে”), instrumental variables (একটি প্রাকৃতিক নাজ যা exposure বদলে দেয় outcome সরাসরি নয়), এবং matching/weighting গ্রুপগুলোকে তুলনীয় করার জন্য। প্রতিটি পদ্ধতি র্যাটানমাইজেশনের পরিবর্তে অনুমান নেয়; একটি কারণগত ডায়াগ্রাম আপনাকে সেই অনুমানগুলো স্পষ্ট করতে সাহায্য করবে।
টেস্ট (বা অবজারভেশনাল স্টাডি) চালানোর আগে লিখে রাখুন: প্রাথমিক মেট্রিক, গার্ডরেইল, লক্ষ্য জনসংখ্যা, সময়কাল, এবং সিদ্ধান্তের নিয়ম। প্রি-রেজিস্ট্রেশন bias দূর করবে না, কিন্তু মেট্রিক-শপিং কমায় এবং কারণগত দাবিকে দলগতভাবে বিশ্বাসযোগ্য ও বিতর্কযোগ্য করে তোলে।
অধিকাংশ প্রোডাক্ট বিতর্ক শুনতে কেমন লাগে: “মেট্রিক X শিপ করার পরে সরল উঠেছে—তাই Y কাজ করেছে।” কারণগত চিন্তা এটিকে কঠোরভাবে প্রশ্নে পরিণত করে: “পরিবর্তন Y কি মেট্রিক X-কে সরাসরি সরানোর জন্য দায়ী, এবং কতটা?” এই পরিবর্তন ড্যাশবোর্ডগুলোকে প্রমাণ থেকে শুরুতে পরিণত করে।
মূল্য নির্ধারণ পরিবর্তন: “মূল্য ১০% বাড়ালে পেইড কনভার্সন, চর্ন, এবং সাপোর্ট টিকেট কি হবে, সিজনালিটি ধরা রেখে?”
অনবোর্ডিং টুইক: “নতুন ব্যবহারকারীদের জন্য অনবোর্ডিং ৬ থেকে ৪ ধাপে কমালে অ্যাক্টিভেশন ও সপ্তাহ-৪ রিটেনশন কি হবে?”
রিকমেন্ডেশন র্যাঙ্কিং পরিবর্তন: “ফ্রেশনেসকে প্রোমোট করলে ক্লিক-থ্রু বাড়ে, কিন্তু দীর্ঘমেয়াদে সন্তুষ্টি (রিটার্নস, হাইড, আনসাবস্ক্রাইব) কি হবে?”
ড্যাশবোর্ড প্রায়ই “কে পরিবর্তন পেয়েছে” এবং “কে স্বভাবতই ভালো করত” মিশিয়ে দেয়। ক্লাসিক উদাহরণ: আপনি নতুন অনবোর্ডিং ফ্লো শিপ করেন, কিন্তু এটি প্রথমবার যে ইউজাররা নতুন অ্যাপ ভার্সনে দেখেন তারা বেশি এনগেজড ব্যবহারকারী—আপনার চার্টে দেখানো লিফট অংশত (বা সম্পূর্ণভাবে) ভার্সন অ্যাডপশন-এর কারণে হতে পারে, অনবোর্ডিং-এর নয়।
অন্যান্য সাধারণ কনফাউন্ডার:
একটি কার্যকর PRD সেকশন শিরোনাম হতে পারে “কারণগত প্রশ্ন”, যাতে থাকে:
বিশেষ করে দ্রুত বিল্ড লুপে (LLM-সহায়ক ডেভেলপমেন্টে) এই অংশটি গুরুত্বপূর্ণ: এটি “দ্রুত শিপ করা হবে” কে “এটা আমরা জানি কী পরিবর্তন করছে”-তে পরিণত করে। Koder.ai-র মতো প্ল্যাটফর্ম ব্যবহারকারী টিমগুলো প্রায়ই এই কারণগত প্রশ্নগুলো প্ল্যানিং-এ বসায়, তারপর দ্রুত ফিচার-ফ্ল্যাগড ভ্যারিয়েন্ট ইমপ্লিমেন্ট করে—স্টেজড রোলআউট ও রোলব্যাক রেখে যাতে এক্সপেরিমেন্ট নিরাপদ থাকে যখন ফলাফল বা পার্শ্বপ্রভাব আশ্চর্য করে।
PM সিদ্ধান্ত ও সাফল্যের ক্রাইটেরিয়া নির্ধারণ করেন। ডাটা পার্টনাররা তা মাপের কারণগত এস্টিমেট ও স্যানিটি চেক-এ অনুবাদ করেন। ইঞ্জিনিয়ারিং নিশ্চিত করে পরিবর্তন নিয়ন্ত্রণযোগ্য (ফিচার ফ্ল্যাগ, পরিষ্কার এক্সপোজার লগিং)। সাপোর্ট মানসম্মত সংকেত শেয়ার করে—মূল্য পরিবর্তন কাজ করলে গোপনে ক্যান্সেল বা টিকেট বাড়তে পারে। যখন সবাই কারণগত প্রশ্নে একমত, শিপিং শেখার হয়ে ওঠে—কেবল শিপিং নয়।
কারণগত চিন্তা পিএইচডি-স্তরের রোলআউট প্রয়োজন করে না। এটিকে একটি টিম অভ্যাসে পরিণত করুন: আপনার কারণগত গল্প লিখুন, চাপ দিন ও টেস্ট করুন, তারপর ডেটা (এবং সম্ভব হলে পরীক্ষা) দিয়ে নিশ্চিত বা সংশোধন করুন।
অগ্রগতি করতে চারটি ইনপুট আগেই সংগ্রহ করুন:
বাস্তবে, গতি এখানে গুরুত্বপূর্ণ: যত দ্রুত আপনি কারণগত প্রশ্ন থেকে একটি নিয়ন্ত্রিত পরিবর্তনে যেতে পারবেন, তত কম সময় কাটে বিভ্রান্ত আলোচনায়। এজন্য অনেক টিম Koder.ai-এর মত প্ল্যাটফর্ম গ্রহণ করে—"হাইপোথিসিস + প্ল্যান" থেকে কাজ করা ইমপ্লিমেন্টেশনে (ওয়েব/ব্যাকএন্ড/মোবাইল) কয়েক দিনের মধ্যে যেতে, স্টেজড রোলআউট ও রোলব্যাক রেখে এবং এখনও কঠোরতা বজায় রেখে।
যদি আপনি পরীক্ষা সম্পর্কে রিফ্রেশ চান, দেখুন /blog/ab-testing-basics। প্রোডাক্ট মেট্রিক্সে সাধারণ ফাঁদগুলোর জন্য যা “ইফেক্ট”-এর অনুকরণ করে দেখুন /blog/metrics-that-mislead।
কারণগত চিন্তা হলো “কি একসাথে চলে?” থেকে “যদি আমরা কাজ করি তাহলে কি পরিবর্তন হবে?”—এই শিফটটি, জুডিয়া পিয়ারের কাজ দ্বারা প্রচারিত, টিমগুলোকে আত্মবিশ্বাসী কাহিনী থেকে রক্ষা করে যা বাস্তব হস্তক্ষেপে টিকে থাকে না।
কোরিলেশন একটি ক্লু, উত্তর নয়।
কারণগত ডায়াগ্রাম (DAG) অনুমানগুলো দৃশ্যমান করে এবং আলোচনা যোগ্য করে তোলে।
ইন্টারভেনশন ("do") পর্যবেক্ষণ ("see") থেকে আলাদা।
কাউন্টারফ্যাকচুয়ালস একক কেস ব্যাখ্যা করে: “এই একটাই হলে কি হত?”
ভাল কারণগত কাজ অনিশ্চয়তা ও বিকল্প ব্যাখ্যা নথিভুক্ত করে।
কারণগততা যত্ন দরকার: লুকানো কনফাউন্ডার, মেজারমেন্ট ত্রুটি, ও সিলেকশন ইফেক্ট সিদ্ধান্ত উল্টো করে দিতে পারে। প্রতিকার হলো স্বচ্ছতা—অনুমান লিখে রাখুন, আপনি কোন ডেটা ব্যবহার করেছেন তা দেখান, এবং কি চাইলে আপনার দাবি ভাঙবে তা উল্লেখ করুন।
আরও জানতে চাইলে /blog-এ সম্পর্কিত আর্টিকেলগুলো ব্রাউজ করুন এবং কারণগত পদ্ধতিগুলো অন্যান্য অ্যানালিটিক্স ও “explainability” পদ্ধতির সাথে তুলনা করে দেখুন—কোথায় প্রত্যেকটি সাহায্য করে এবং কোথায় বিভ্রান্ত করতে পারে।
কোরিলেশন আপনাকে ভবিষ্যদ্বাণী বা অসামঞ্জস্য খোঁজার কাজে সহায়তা করে (যেমন, “X বাড়লে Y প্রায় বাড়ে”)। কারণগততা সিদ্ধান্ত-জরুরি প্রশ্নের উত্তর দেয়: “যদি আমরা ইচ্ছাকৃতভাবে X পরিবর্তন করি, কি Y পরিবর্তন হবে?”
ফোরকাস্টিং ও মনিটরিং-এর জন্য কোরিলেশন ব্যবহার করুন; যখন আপনি কিছু শিপ করতে যাচ্ছেন, নীতি নির্ধারণ করছেন, বা বাজেট বরাদ্দ করছেন তখন কারণগত চিন্তা কাজে লাগান।
কারণ কোরিলেশন কনফাউন্ডিং-এর কারণে বিভ্রান্তিকর হতে পারে। নোটিফিকেশন উদাহরণে, অত্যন্ত ব্যস্ত/নিয়োগী ব্যবহারকারীরাই বেশি নোটিফিকেশন ট্রিগার করে/পায় এবং তারা স্বয়ংক্রিয়ভাবে বেশি ফিরে আসে।
যদি আপনি সবার জন্য নোটিফিকেশন বাড়ান, আপনি কেবল অভিজ্ঞতাকে একটি হস্তক্ষেপ হিসেবে বদলে দিলেন—মৌলিক এনগেজমেন্ট বদলায়নি—ফলাফল হিসেবে রিটেনশন না বাড়তে পারে বা খারাপও হতে পারে।
DAG (Directed Acyclic Graph) হলো একটি সহজ চিত্র যেখানে:
এটি দরকার কারণ এটি অনুমানগুলো প্রকাশ্যে এনে দেয়—টিমকে সাহায্য করে ঠিক কোন ভেরিয়েবলগুলোকে অ্যাডজাস্ট করতে হবে, কোনগুলোকে না করতে হবে, এবং কোন পরীক্ষা প্রশ্নের উত্তর দেবে।
সাধারণ এক ভুল হলো “সবকিছু কন্ট্রোল করুন”—এতে আপনি দুর্ঘটনবশত মিডিয়েটর বা কলাইডারের ওপর কন্ডিশন করে ফলাফল বিকৃত করে ফেলতে পারেন।
“See” হলো স্বাভাবিকভাবে যা ঘটছে তা পর্যবেক্ষণ করা (ব্যবহারকারীরা নিজে অপশন চালু করেছে)। “Do” হলো সক্রিয়ভাবে একটি ভেরিয়েবল সেট করা (ফিচার শিপ করা, ডিফল্ট অন করা)।
মুখ্য ধারণা: একটি হস্তক্ষেপ (intervention) সাধারণ কারণগুলো ভাঙে—এই জন্যই হস্তক্ষেপ দেখায় কি ঘটবে যখন আপনি সত্যিই কিছু পরিবর্তন করবেন, কেবল দেখতে না।
একটি কাউন্টারফ্যাকচুয়াল প্রশ্ন করে: এই নির্দিষ্ট কেসের জন্য, যদি আমরা অন্য কিছু করতাম তাহলে কি হতো?
প্রয়োজনীয় যখন:
এটা কাজ করার জন্য একটি কারণগত মডেল দরকার—নাহলে অসম্ভব বা অনায়াসশীল পরিবর্তনের কথা বলা হতে পারে।
প্রোডাকশনে মডেল ফেল করলে লক্ষ্য রাখুন উপরে কী বদলেছে:
কারণগত মানচিত্র আপনাকে টার্গেটেড হস্তক্ষেপ চালাতে প্রেরণা দেয়—অ্যাবলেশন, পের্টারবেশন—কেবল ঘটনা তালিকাই না দেখিয়ে কারণ আলাদা করতে।
বহু “এক্সপ্লেইনেবিলিটি” টুল ছোট প্রশ্নের উত্তর দেয়: “এই স্কোরটি কেন এসেছে?” ফিচার-ইম্পরট্যান্স বা সালিয়েন্সি দিয়ে। সেটা সহায়ক, কিন্তু পুরো সিস্টেমের ব্যাখ্যা না।
একজন “ইন্টারভেনশনের” দৃষ্টিকোণ থেকে, আপনাকে জানতে হবে কোন ভেরিয়েবলগুলো আসলে লিভার—আর সেগুলো পরিবর্তন করলে কী ফল হবে। কিভাবে ফিচারগুলো অ্যাকশনেবল লিভার নাকি কেবল প্রেডিকটিভ প্রোক্সি তা স্পষ্ট করা causal মডেলেই সম্ভব।
র্যান্ডমাইজড A/B টেস্টিং হল সবচেয়ে সরল ও ব্যবহারিক কারণগত ইনফারেন্স: র্যান্ডম অ্যাসাইনমেন্ট exposure এবং ব্যবহারকারীর গুণাবলী—ওয়েগা—সমতোলিত করে, তাই পার্থক্যকে হস্তক্ষেপের ফল হিসেবে দেখা যায়।
যখন র্যানডমাইজ করা কঠিন:
এসব ক্ষেত্রে quasi-experimental পদ্ধতি (difference-in-differences, regression discontinuity, instrumental variables, matching) বিবেচনা করুন—কিন্তু প্রতিটি পদ্ধতির সঙ্গে পরিষ্কার অনুমান জড়িত।
PRD বা সিদ্ধান্ত ডক-এ একটি ছোট বিভাগ যোগ করুন যাতে দলটি বিশ্লেষণের আগে স্পষ্ট হয়:
এভাবে দল কেবল ড্যাশবোর্ড গল্প না করে একটি কারণগত প্রশ্নে একমত হবে।