পাঠ ৪৩ · ৫৭-এর মধ্যে · মডিউল ৯
Home / AI Courses / Human-Centered AI / লংগিচুডিনাল ইভালুয়েশন

লংগিচুডিনাল ইভালুয়েশন — সময়ের সাথে ট্রাস্ট ও ব্যবহারের পরিবর্তন

Longitudinal evaluation — how trust & usage change over time
৭ মিনিট পড়া মধ্যম · Intermediate Python কোডসহ সম্পূর্ণ বাংলায়

এই পাঠে যা শিখবেন

  • কেন একবারের ইউজেবিলিটি টেস্ট বা A/B টেস্ট যথেষ্ট নয়
  • লংগিচুডিনাল ইভালুয়েশনে সাধারণত কী কী মাপা হয়
  • Python দিয়ে সাপ্তাহিক ট্রাস্ট ও ব্যবহারের গড়, এবং একটি সরল লিনিয়ার ট্রেন্ড সত্যিকারভাবে গণনা করা
  • এই ধরনের দীর্ঘ-মেয়াদি স্টাডির পদ্ধতিগত (methodological) চ্যালেঞ্জ

১ · কেন একবারের টেস্ট যথেষ্ট নয়

লংগিচুডিনাল ইভালুয়েশনLongitudinal Evaluationএকই ব্যবহারকারী বা ব্যবহারকারী-গোষ্ঠীর একই মেট্রিক বারবার, একাধিক সময়বিন্দুতে মাপা, যাতে সময়ের সাথে প্রকৃত পরিবর্তনের প্রবণতা বোঝা যায় — একবারের স্ন্যাপশটের বদলে। L39-এর ইউজেবিলিটি টেস্ট, L40-এর A/B টেস্ট, ও L42-এর SUS স্কোর — এগুলোর প্রতিটি একটি নির্দিষ্ট মুহূর্তের ছবি তোলে। কিন্তু বাস্তবে ব্যবহারকারীর সাথে AI সিস্টেমের সম্পর্ক স্থির নয়:

  • প্রথমবার ব্যবহারের সময় ব্যবহারকারী সতর্ক থাকতে পারেন (আন্ডার-ট্রাস্ট), কিন্তু কয়েক সপ্তাহ ভালো অভিজ্ঞতার পর ট্রাস্ট বাড়তে পারে।
  • উল্টোভাবে, একটি "চকচকে" নতুন AI ফিচার প্রথম সপ্তাহে প্রবল আগ্রহ পেতে পারে ("নভেলটি এফেক্ট"), তারপর সেই আগ্রহ কমে যেতে পারে যদি প্রকৃত মূল্য কম হয়।
  • একটি একক বড় ভুল (যেমন একটি গুরুত্বপূর্ণ কাজে AI-এর স্পষ্ট ব্যর্থতা) হঠাৎ ট্রাস্ট কমিয়ে দিতে পারে, যা একবারের টেস্টে ধরাই পড়বে না যদি সেই মুহূর্তে টেস্ট না চলে।

এই কারণেই লংগিচুডিনাল ইভালুয়েশন দরকার — একই মেট্রিক বারবার মাপা, যাতে দিক (direction) ও গতি (rate) দুটোই বোঝা যায়।

২ · কী মাপা হয় সময়ের সাথে

সাপ্তাহিক/মাসিক ট্রাস্ট রেটিং
নিয়মিত বিরতিতে ছোট একটি ট্রাস্ট-স্কেল প্রশ্ন পাঠিয়ে গড় রেটিং ট্র্যাক করা।
ব্যবহারের হার (usage frequency)
সপ্তাহপ্রতি সেশন সংখ্যা বা সক্রিয় ব্যবহারকারীর সংখ্যা — বাড়ছে, কমছে, নাকি স্থির?
রিটেনশন
কতজন ব্যবহারকারী কয়েক সপ্তাহ পরেও ফিচারটি ব্যবহার করছেন — একটি ফিচার প্রথমবার পছন্দ হলেও তা টেকসই কিনা তা বোঝায়।

৩ · সত্যিকারের ডেমো — সাপ্তাহিক ট্রেন্ড গণনা

ধরা যাক একটি AI অ্যাসিস্ট্যান্ট ফিচারের জন্য ৮ সপ্তাহ ধরে ব্যবহারকারীদের গড় ট্রাস্ট রেটিং (৭-পয়েন্ট স্কেলে) এবং সপ্তাহপ্রতি গড় সেশন সংখ্যা রেকর্ড করা হয়েছে। নিচের কোডে প্রথমার্ধ বনাম দ্বিতীয়ার্ধের তুলনা এবং একটি সরল সপ্তাহ-থেকে-সপ্তাহ ট্রেন্ড সত্যিকারভাবে গণনা করা হয়েছে।

Python
weekly_trust = [3.2, 3.5, 3.4, 3.8, 4.1, 4.3, 4.5, 4.7]   # ৭-পয়েন্ট স্কেলে, ৮ সপ্তাহ ধরে গড় ট্রাস্ট রেটিং
weekly_usage = [12, 14, 13, 16, 19, 21, 23, 25]           # সপ্তাহপ্রতি গড় সেশন সংখ্যা

def mean(values):
    return sum(values) / len(values)

first_half_trust = weekly_trust[:4]
second_half_trust = weekly_trust[4:]
first_half_usage = weekly_usage[:4]
second_half_usage = weekly_usage[4:]

print(f"প্রথম ৪ সপ্তাহের গড় ট্রাস্ট: {mean(first_half_trust):.3f}")
print(f"শেষ ৪ সপ্তাহের গড় ট্রাস্ট: {mean(second_half_trust):.3f}")
print(f"পরিবর্তন: {mean(second_half_trust) - mean(first_half_trust):+.3f}")

print(f"\nপ্রথম ৪ সপ্তাহের গড় ব্যবহার (সেশন/সপ্তাহ): {mean(first_half_usage):.2f}")
print(f"শেষ ৪ সপ্তাহের গড় ব্যবহার (সেশন/সপ্তাহ): {mean(second_half_usage):.2f}")
print(f"পরিবর্তন: {mean(second_half_usage) - mean(first_half_usage):+.2f}")

# সরল লিনিয়ার ট্রেন্ড -- সপ্তাহ-থেকে-সপ্তাহ পরিবর্তনের গড়
week_diffs = [weekly_trust[i + 1] - weekly_trust[i] for i in range(len(weekly_trust) - 1)]
avg_weekly_change = sum(week_diffs) / len(week_diffs)
print(f"\nসপ্তাহপ্রতি গড় ট্রাস্ট-পরিবর্তন (সরল ট্রেন্ড): {avg_weekly_change:+.3f} পয়েন্ট/সপ্তাহ")

    
কোডের গণনা অনুযায়ী — প্রথম ৪ সপ্তাহের গড় ট্রাস্ট ৩.৪৭৫, শেষ ৪ সপ্তাহের ৪.৪০০ (পরিবর্তন +০.৯২৫)। একইভাবে ব্যবহার প্রথমার্ধে গড় ১৩.৭৫ থেকে দ্বিতীয়ার্ধে ২২.০০ সেশন/সপ্তাহে বেড়েছে (+৮.২৫)। সপ্তাহপ্রতি গড় ট্রাস্ট-পরিবর্তন +০.২১৪ পয়েন্ট/সপ্তাহ — একটি স্থির, ইতিবাচক দিক। ট্রাস্ট ও ব্যবহার দুটোই একসাথে বাড়ছে — এটি নভেলটি এফেক্টের বিপরীত প্যাটার্ন (যেখানে ব্যবহার প্রথমে বেশি থেকে ধীরে ধীরে কমে যায়), তাই এটি প্রকৃত, টেকসই গ্রহণযোগ্যতার একটি ভালো সংকেত।

৪ · পদ্ধতিগত চ্যালেঞ্জ

  • অ্যাট্রিশন (attrition) — সময়ের সাথে অংশগ্রহণকারীরা স্টাডি ছেড়ে দিতে পারেন, এবং যারা থেকে যান তারা হয়তো এমনিতেই বেশি সন্তুষ্ট গোষ্ঠী — ফলে বাকি ডেটা পক্ষপাতদুষ্ট (biased) হতে পারে।
  • কনফাউন্ডিং ফ্যাক্টর — ট্রাস্ট বাড়া বা কমা শুধু ফিচারের কারণে না-ও হতে পারে; একই সময়ে অন্য পরিবর্তন (যেমন ইন্টারফেসের অন্য অংশে আপডেট) ফলাফলকে প্রভাবিত করতে পারে।
  • কন্ট্রোল গ্রুপের অভাব — সম্ভব হলে একই সময়ে একটি তুলনামূলক গ্রুপ (যারা নতুন ফিচার পাননি) রাখা ভালো, নয়তো সাধারণ মৌসুমি বা প্রাসঙ্গিক পরিবর্তনকে ফিচারের প্রভাব বলে ভুল বোঝা যেতে পারে।
মডিউল ৯ সারসংক্ষেপ

এই পাঁচটি পাঠ একসাথে একটি সম্পূর্ণ ইভালুয়েশন টুলকিট গঠন করে — ছোট-স্কেল গুণগত ইউজেবিলিটি টেস্ট (L39), বড়-স্কেল পরিসংখ্যানগত A/B টেস্টিং (L40), ব্যয়বহুল মডেল তৈরির আগে দ্রুত প্রোটোটাইপিং (L41), স্ট্যান্ডার্ড সংখ্যাসূচক ইউজেবিলিটি স্কোরিং (L42), এবং দীর্ঘ-মেয়াদি প্রবণতা ট্র্যাকিং (L43)। পরের মডিউলে (M10) আমরা দেখব কীভাবে Google PAIR, Microsoft HAX-এর মতো প্রতিষ্ঠিত ইন্ডাস্ট্রি ফ্রেমওয়ার্ক এই সব নীতিকে একটি সাংগঠনিক কাঠামোতে একত্র করে।

ভাবনার প্রশ্ন

প্রতিটি প্রশ্ন নিজে কিছুক্ষণ ভাবুন — তারপর "→ উত্তর" চাপুন।

প্র ০১ উপরের ডেমোতে ট্রাস্ট ও ব্যবহার দুটোই একসাথে বেড়েছে। এটি কি প্রমাণ করে ফিচারটির ব্যবহার কারণেই ট্রাস্ট বেড়েছে?

না, শুধু এই সরল ট্রেন্ড ডেটা থেকে কার্যকারণ (causation) প্রমাণ করা যায় না — এটি শুধু একটি সহ-সম্পর্ক (correlation) দেখায়। হয়তো অন্য কোনো পরিবর্তন (যেমন ফিচারের বাইরে অন্য কোনো UI আপডেট বা ব্যবহারকারীদের অভিজ্ঞতা বৃদ্ধি) একইসাথে দুটোকেই প্রভাবিত করছে। নিশ্চিত কার্যকারণ বলতে হলে একটি কন্ট্রোল গ্রুপ বা নিয়ন্ত্রিত এক্সপেরিমেন্ট দরকার হবে।

প্র ০২ একটি ফিচার যদি প্রথম সপ্তাহে অনেক ব্যবহার পায় কিন্তু পরের সপ্তাহগুলোতে ক্রমাগত কমতে থাকে, এটি কী নির্দেশ করতে পারে?

এটি সাধারণত "নভেলটি এফেক্ট"-এর একটি ক্লাসিক লক্ষণ — ব্যবহারকারীরা কৌতূহলবশত নতুন ফিচারটি চেষ্টা করেছেন, কিন্তু বারবার ব্যবহারের মতো যথেষ্ট প্রকৃত মূল্য পাননি। এই প্যাটার্নটি A/B টেস্টের শুরুর কয়েক দিনের ডেটাতে ধরা পড়ে না — এই কারণেই L40-এর সতর্কতা অংশে বলা হয়েছিল স্বল্প-মেয়াদি A/B ফলাফলকে সাবধানে দেখতে হয়।

প্র ০৩ কেন একটি লংগিচুডিনাল স্টাডিতে অ্যাট্রিশন (অংশগ্রহণকারী ঝরে পড়া) ফলাফলকে বিভ্রান্তিকর করে তুলতে পারে?

যদি যারা ফিচারটি নিয়ে হতাশ তারা আগেই স্টাডি ছেড়ে দেন, তাহলে শেষ পর্যন্ত থেকে যাওয়া গ্রুপে শুধু সন্তুষ্ট ব্যবহারকারীরাই থেকে যাবেন — ফলে "গড় ট্রাস্ট বেড়েছে" দেখা গেলেও তা আসলে শুধু হতাশ ব্যবহারকারীরা বাদ পড়ার কারণে হতে পারে, প্রকৃত উন্নতির কারণে নয়। এটি একটি সুপরিচিত পক্ষপাত (survivorship bias)।

অনুশীলন

  1. চিন্তা করুন: যদি সপ্তাহ ৫-এর ট্রাস্ট রেটিং (একটি আউটেজের কারণে) হঠাৎ ৪.১ থেকে ৩.০-এ নেমে যায় (বাকি সপ্তাহগুলো অপরিবর্তিত থাকে), তাহলে আপনার ধারণায় "সপ্তাহপ্রতি গড় ট্রাস্ট-পরিবর্তন" সংখ্যাটি কি বদলাবে?

    স্বাভাবিকভাবে মনে হতে পারে সংখ্যাটি কমে যাবে, কারণ মাঝে একটি বড় পতন ঘটেছে — কিন্তু এটি যাচাই না করে নিশ্চিত করে বলা কঠিন, কারণ এই মেট্রিকটি শুধু সপ্তাহ-থেকে-সপ্তাহ পরিবর্তনগুলোর গড়, প্রতিটি সপ্তাহের প্রকৃত মান নয়।

  2. যাচাই করুন: উপরের কোডে weekly_trust-এর ৫ম মান (ইনডেক্স ৪, বর্তমানে ৪.১) 3.0-এ পরিবর্তন করে Run চেপে দেখুন।

    অবাক করা ফলাফল: সপ্তাহপ্রতি গড় ট্রাস্ট-পরিবর্তন সংখ্যাটি একই থাকে, +০.২১৪! কারণ পরপর সপ্তাহের পার্থক্যগুলোর যোগফল সবসময় শুধুই শেষ সপ্তাহ বিয়োগ প্রথম সপ্তাহের সমান (৪.৭ − ৩.২ = ১.৫) — মাঝের ওঠানামা একে অপরকে কাটাকাটি করে ফেলে। তবে দ্বিতীয়ার্ধের গড় ট্রাস্ট ঠিকই বদলে যায় — ৪.৪০০ থেকে কমে ৪.১২৫-এ নামে। এটি একটি গুরুত্বপূর্ণ শিক্ষা: শুধু শুরু-শেষ বিন্দু দিয়ে হিসাব করা একটি ট্রেন্ড মাঝের ওঠানামা (যেমন একটি আউটেজ) সম্পূর্ণ লুকিয়ে ফেলতে পারে — তাই একাধিক পদ্ধতিতে (গড়ের তুলনা, প্রতিটি সপ্তাহের গ্রাফ) একসাথে দেখা জরুরি।

আরও পড়ুন · ABCL TECH-এ আপনার পরবর্তী পদক্ষেপ

আগের পাঠ
ট্রাস্ট, স্যাটিসফ্যাকশন ও পার্সিভড কন্ট্রোল পরিমাপ