কীভাবে সঠিক প্রশ্ন করতে হয়?
Last updated
Last updated
"There are no right answers to wrong questions." - Ursula K. Le Guin
"Ask the right questions if you're going to find the right answers." - Vanessa Redgrave
"In school, we're rewarded for having the answer, not for asking a good question." - Richard Saul Wurman
যেহেতু আজকের টপিক 'সঠিক প্রশ্ন জিজ্ঞাসা করা' বা 'সঠিক প্রশ্ন তৈরি করা' সেহেতু গত পর্বের ওয়ার্কফ্লো একবার দেখে নেওয়া যাক।
আমরা যদি জেনারেল মেথড অ্যাপ্লাই করতে চাই তাহলে সর্বপ্রথম দরকার একটা সমস্যাকে সেই মেথড গুলো দিয়ে সমাধান করা। আমাদের বাছাইকৃত সমস্যাটি একবার দেখা যাক,
সমস্যার বিবরণ
একজন লোক ডায়াবেটিস এ আক্রান্ত হবে কিনা প্রেডিক্ট করুন
সমস্যার বিবরণ দেখে মনে হতে পারে, আমরা তো আমাদের কাঙ্ক্ষিত প্রশ্ন পেয়েই গেলাম, নতুন করে প্রশ্ন করার মানে কী? এই সমস্যাটা সল্ভ করলেই তো হচ্ছে?!
উত্তর হল, না। মেশিন লার্নিং সমস্যাকে শুধু এক লাইনের একটা প্রশ্ন দিয়ে ডিফাইন করা ভুল, এই প্রশ্নকে ভেঙ্গে ক্ষুদ্র ক্ষুদ্র ও নির্দিষ্ট কিছু প্রশ্নে ভাগ করতে হবে, তারপর সেগুলো সমাধান করতে হবে।
প্রশ্নগুলো এমন হতে হবে যেগুলোর সমাধান করলে আসলেই আমরা একটা Fully Functional Predictive Model তৈরি করতে পারি।
প্রশ্নের উপরে ভিত্তি করে আমরা প্রেডিক্টিভ মডেল বিল্ড করছি, তাই আমাদের To the point প্রশ্ন দরকার। যার ক্রাইটেরিয়ার উপর ভিত্তি করে আমরা সল্যুশন তৈরি করব।
একটা এক লাইন প্রশ্নের থেকে আরও দরকারী হচ্ছে প্রশ্নের মধ্যে থাকা কিছু স্টেটমেন্ট, যেগুলো আমাদের সল্যুশন বিল্ড এর শুরু ডিফাইন করে, শেষ ডিফাইন করে (যেমন, মডেল এর প্রেডিকশন সাক্সেস রেট কতটা ভাল হলে আমরা মডেল অপ্টিমাইজেশন বাদ দিয়ে প্রেডিক্ট করতে বসে যাব) এবং কীভাবে আমরা আমাদের লক্ষ্যে পৌঁছাব।
ডেটা সোর্স পর্যবেক্ষণ (Scope & Dataset)
পার্ফর্মেন্স স্কোর ও পার্ফর্মেন্স টার্গেট
যেখানে ব্যবহার করা হবে (Context)
কীভাবে সল্যুশন তৈরি করা হবে
এই পয়েন্টগুলো একটার পর একটা যুক্ত করলেই আমরা আমাদের কাঙ্ক্ষিত প্রশ্নগুলো পেয়ে যাব।
অ্যামেরিকান ডায়াবেটিস ওয়েবসাইট ডেটাসেট পর্যবেক্ষণ করে বেশ কিছু ডায়াবেটিসে আক্রান্ত হবার বেশ কিছু ফ্যাক্টর তুলে ধরেছে যেটা আমাদের ডেটাসেট এর গুরুত্বপূর্ণ ইনপুট ভ্যারিয়েবল চিহ্নিত করতে সাহায্য করবে।
বয়স (Age)
বয়স্কদের ডায়বেটিসে আক্রান্ত হওয়ার সম্ভাবনা বেশি থাকে।
জাতি (Race)
African-American, Asian-American, American-Indian দের ডায়াবেটিস হবার সম্ভাবনা বেশি।
লিঙ্গ (Gender)
ডায়বেটিসে আক্রান্ত হওয়ার জন্য লিঙ্গের কোন প্রভাব নেই।
উপর্যুক্ত Factor গুলো কেন গুরুত্বপূর্ণ?
ইনপুট ভ্যারিয়েবল ফিল্টারিংয়ে: ফ্যাক্টরগুলো থেকে দেখা যায় যে, আমরা 'Race' এর উপর গুরুত্ব দেব বেশি এবং 'Gender' এর ক্ষেত্রে গুরুত্ব না দিলেও হবে। যদি আমরা Gender কে ইনপুট ভ্যারিয়েবল হিসেবে নেই তাহলে প্রেডিকশন অবশ্যই খারাপ আসবে।
ডেটাসেট বাছতে: যেসব ডেটাসেটে Age, Race (আরও থাকতে পারে) আছে, সেসব ডেটাসেট আমাদের বাছাই করতে হবে।
আমরা এই কাজের জন্য University of California Irvine (UCI) এর রিপোজিটরি থেকে Pima Indian Diabetes Study সিলেক্ট করব। কারণ এই ডেটাসেট আমাদের ডিমান্ড করা ক্রাইটেরিয়াগুলো ফিলাপ করে।
পরিবর্তিত স্টেটমেন্ট
স্কোপ ও ডেটাসেট পর্যবেক্ষণের পর আমাদের পরিবর্তিত প্রবলেম স্টেটমেন্ট
Pima Indian Diabetes ডেটাসেট ব্যবহার করে বের করতে হবে কে কে ডায়াবেটিসে আক্রান্ত হবে
সমস্যার সমাধান যতই জটিল হোক, আউটপুট আমরা সহজেই ধারণা করতে পারছি, এই সমস্যার সমাধান হ্যাঁ/না আকারে আসবে। অর্থাৎ Binary Result (True or False)
মডেল বিল্ড করলে তার একটা পার্ফর্মেন্স স্কোর আমরা পাব। মানে আমাদের মডেল কতটা ভাল প্রেডিক্ট করতে পারে। কিন্তু এই পার্ফর্মেন্সের একটা লিমিট আছে। সাধারণত ১০০% প্রেডিকশন রেট হয় না, কিন্তু আমাদের চেষ্টা থাকতে হবে কতটা ভাল করা যায়।
তাই বিল্ড করার সময় আমাদের অ্যাকুরেসির কথা চিন্তা করতে হবে। আমরা চাইলেই যে ঔ অ্যাকুরেসি পাব তার কোন গ্যারান্টি নাই।
50% অ্যাকুরেসির মত খারাপ আর কিছু নাই। তারমানে আমার তৈরি মডেলের পার্ফর্মেন্স স্কোর যদি ৫০% হয়, এর মানে হল, যদি মডেলটি কোন প্রেডিকশন করে তাহলে সেটা হওয়ার সম্ভাবনা ৫০-৫০। তাই অবশ্যই আমাদের ৫০% এর বেশি অ্যাকুরেসির দিকে নজর দিতে হবে।
আমরা যখনই রোগ প্রেডিকশন করব তখন ৫০% চরম খারাপ পার্ফর্মেন্স স্কোর। জেনেটিক ডিফারেন্স এখানে একটা বড় ফ্যাক্টর। দেখা গেছে জমজদের ও সব একই হল জিনগত পার্থক্য থাকেই। এই ভিন্নতার জন্য ডায়বেটিসে আক্রান্ত হবার সম্ভাবনাও একেক জনের একেক রকম।
সুতরাং ৭০% অ্যাকুরেসি মোটামুটি রিজনেবল। এখন এটাকে End Point ধরে আমরা কাজ এগোতে পারি।
তাহলে চলুন আমাদের টার্গেট স্টেটমেন্টে আরও কিছু পরিবর্তন আনি।
পরিবর্তিত স্টেটমেন্ট
Pima Indian Diabetes ডেটাসেট ব্যবহার করে ৭০% বা তার বেশি অ্যাকুরেসির মাধ্যমে বের করতে হবে কে কে ডায়বেটিসে আক্রান্ত হবে
আমাদের আলোচ্য সমস্যাটি মেডিক্যাল বেজড, তাই আমাদের এখানে প্রাসঙ্গিকতা টানতে হবে। এতে করে সল্যুশন আরও ভাল হবে।
প্রত্যেকেই জেনেটিক্যালি একে অপরের থেকে আলাদা, তাই এখানে জানা-অজানা বিভিন্ন ফ্যাক্টর কাজ করে। আপাতদৃষ্টিতে একই ফ্যাক্টর হওয়ার পরেও দুইজন লোকের একজনের ডায়বেটিস হতে পারে এবং আরেকজনের নাও পারে।
এই যে আমরা এখানে হতে পারা নামক সম্ভাবনাময় একটি বাক্য ব্যবহার করছি। তারমানে আমরা একদম ১০০% নিশ্চিত না, আদৌ ডায়বেটিস হবে কি না।
হতে পারা বা likelihood যদি আমরা আমাদের স্টেটমেন্টে অ্যাড করি তাহলে পরিবর্তিত স্টেটমেন্ট হবে,
পরিবর্তিত স্টেটমেন্ট
Pima Indian Diabetes ডেটাসেট ব্যবহার করে 70% বা তারও বেশি অ্যাকুরেসির মাধ্যমে বের করতে হবে কে কে ডায়বেটিসে আক্রান্ত হতে পারে
সল্যুশন তৈরি করা
আমাদের স্টেটমেন্টে এখনো পর্যন্ত মেশিন লার্নিংয়ের প্রসিডিউর আসে নি। তাহলে মেশিন লার্নিং ওয়ার্কফ্লো ব্যবহার করলেই আমরা সল্যুশন তৈরির একটা ভাল ধারণা পেয়ে যাব।
মেশিন লার্নিং ওয়ার্কফ্লো:
Pima Indian Data প্রিপ্রসেসিং
ডেটা ট্রান্সফর্মেশন (যদি লাগে)
আবার পরিবর্তিত স্টেটমেন্ট
পরিবর্তিত স্টেটমেন্ট
মেশিন লার্নিং ওয়ার্কফ্লো ব্যবহার করে Pima Indian Data কে প্রিপ্রসেস ও প্রয়োজনীয় ট্রান্সফর্মেশন করার পর একটা প্রেডিক্টিভ মডেল তৈরি করতে হবে।
এবার এই মডেলকে ৭০% বা তারও বেশি অ্যাকুরেসির সাথে নির্ণয় করতে হবে কে কে ডায়বেটিসে আক্রান্ত হতে পারে।
কোন ডেটাসেট ব্যবহার করতে হবে? - Pima Indian dataset
টার্গেট পারফর্মেন্স কত? - ৭০%
কীভাবে সল্যুশন তৈরি করতে হবে? - Machine Learning Workflow ব্যবহার করে Data preprocessing ও transformation এর মাধ্যমে predictive model তৈরি করতে হবে তারপর ডেটাসেট ব্যবহার করে প্রেডিক্ট করতে হবে।
আলোচনা থেকে দেখা গেল, এক লাইনের সামান্য একটি প্রশ্ন আমরা বিভিন্নভাবে রিসার্চ করে বেশ কয়েকটি গুরুত্বপূর্ণ প্রশ্নের উত্তর পেয়ে গেছি, যেটা দিয়ে সহজেই আমরা সমস্যাটির সমাধান করতে পারি। পরবর্তী পর্বগুলোতে এই ওয়ার্কফ্লো ব্যবহার করে আমরা সমস্যাটির সমাধান করব।