Logistic Regression একটি পরিসংখ্যানগত মডেল যা মূলত শ্রেণীবিভাজন সমস্যাগুলির জন্য ব্যবহৃত হয়, যেখানে নির্ভরশীল ভেরিয়েবলটি ক্যাটেগোরিকাল (বিশেষ করে, দুটি শ্রেণী বা ক্যাটেগরি) হয়। এটি একটি রিগ্রেশন মডেল হলেও, এর প্রধান উদ্দেশ্য হলো শ্রেণীভিত্তিক অনুমান বা প্রেডিকশন করা, যা সাধারণত বাইনারি ক্লাসিফিকেশন সমস্যার জন্য ব্যবহৃত হয়। উদাহরণস্বরূপ, এটি ব্যবহার করা যেতে পারে কোনো রোগে আক্রান্ত হওয়া বা না হওয়া, ইমেইল স্প্যাম বা নন-স্প্যাম ইত্যাদি শ্রেণীবিভাগের ক্ষেত্রে।
Logistic Regression এর ধারণা
লজিস্টিক রিগ্রেশন মূলত সিগময়েড (Sigmoid) বা লজিস্টিক ফাংশন ব্যবহার করে যেটি একটি অ্যাসাম্পশন তৈরি করে যে ইনপুটের একটি নির্দিষ্ট মানের জন্য আউটপুটটি দুটি শ্রেণীতে বিভক্ত হবে। এটি একটি প্রোবাবিলিটি বা সম্ভাবনা প্রদান করে, যা [0, 1] এর মধ্যে থাকে এবং পরে এই প্রোবাবিলিটিকে শ্রেণীভিত্তিক সিদ্ধান্তে পরিণত করে।
লজিস্টিক রিগ্রেশন মডেলটি সাধারণ রিগ্রেশন মডেলের মতোই কাজ করে, তবে আউটপুটটি সরাসরি একটি প্রেডিকশন (বাইনারি) প্রদান করে, যেমন:
- 1 (যেমন: রোগের উপস্থিতি),
- 0 (যেমন: রোগের অনুপস্থিতি)।
Logistic Regression মডেল তৈরির পদ্ধতি
লজিস্টিক রিগ্রেশন মডেল তৈরি করতে সাধারণত logistic function ব্যবহার করা হয়, যা নিচের মতো দেখায়:
এখানে:
- হলো নির্ভরশীল ভেরিয়েবলের জন্য প্রোবাবিলিটি (যেমন 1 বা 0, রোগ আক্রান্ত বা না হওয়া),
- হলো ন্যাচারাল লগারিদমের ভিত্তি,
- হলো মডেলের কোএফিশিয়েন্ট।
লজিস্টিক রিগ্রেশন মডেলটি আউটপুট হিসেবে 0 বা 1 প্রদান করবে, যা শ্রেণীভিত্তিক ফলাফল হিসেবে ব্যবহৃত হবে।
Logistic Regression এর প্রয়োগ
লজিস্টিক রিগ্রেশন মডেল ব্যবহার করতে আর প্রোগ্রামিং এ glm() (Generalized Linear Model) ফাংশন ব্যবহার করা হয়। এটি সাধারণত একটি বাইনারি আউটপুট (0 বা 1) প্রদান করে।
Logistic Regression মডেল তৈরির উদাহরণ:
ধরা যাক, আমরা একটি ডেটাসেট নিয়ে কাজ করছি যেখানে একটি নির্ভরশীল ভেরিয়েবল (যেমন: Outcome), যা 0 বা 1 হতে পারে, এবং একটি স্বাধীন ভেরিয়েবল (যেমন: Age) রয়েছে। আমাদের লক্ষ্য হল রোগের উপস্থিতি বা অনুপস্থিতি প্রেডিক্ট করা।
# ডেটাসেট তৈরি করা
data <- data.frame(
Age = c(25, 30, 35, 40, 45, 50, 55, 60),
Outcome = c(0, 0, 1, 1, 0, 1, 1, 0)
)
# Logistic Regression মডেল তৈরি করা
model <- glm(Outcome ~ Age, data = data, family = "binomial")
# মডেলের সারাংশ দেখা
summary(model)
এখানে:
Outcome ~ Age: নির্ভরশীল ভেরিয়েবলOutcomeএবং স্বাধীন ভেরিয়েবলAge।family = "binomial": এটি লজিস্টিক রিগ্রেশন মডেল হিসেবে গন্য হবে, যেহেতু আউটপুট বাইনারি।
মডেল থেকে প্রেডিকশন করা:
# প্রেডিকশন করা
predictions <- predict(model, type = "response")
# প্রেডিকশনের ফলাফল দেখানো
predictions
এখানে, type = "response" নির্বাচন করা হয়েছে, যার মানে হল আমরা প্রোবাবিলিটি হিসেবে ফলাফল পাব, যা [0, 1] এর মধ্যে থাকবে। এরপর, আপনি একটি থ্রেশহোল্ড ব্যবহার করে সিদ্ধান্ত নিতে পারেন:
- যদি প্রোবাবিলিটি 0.5 এর বেশি হয়, তাহলে
Outcome1 হবে (যেমন রোগের উপস্থিতি), - যদি প্রোবাবিলিটি 0.5 এর কম হয়, তাহলে
Outcome0 হবে (যেমন রোগের অনুপস্থিতি)।
মডেল মূল্যায়ন:
লজিস্টিক রিগ্রেশন মডেলের কার্যকারিতা মূল্যায়ন করার জন্য সাধারণত Confusion Matrix বা Accuracy ব্যবহৃত হয়।
# প্রেডিকশনের মাধ্যমে সিদ্ধান্ত গ্রহণ
predicted_outcome <- ifelse(predictions > 0.5, 1, 0)
# Confusion Matrix তৈরি করা
table(predicted_outcome, data$Outcome)
এখানে, ifelse() ফাংশনটি ব্যবহার করা হয়েছে প্রেডিকশন 0.5 এর বেশি হলে 1, না হলে 0 নির্ধারণ করতে।
সারাংশ
লজিস্টিক রিগ্রেশন একটি শক্তিশালী পরিসংখ্যানগত টুল যা বাইনারি ক্লাসিফিকেশন সমস্যা সমাধানের জন্য ব্যবহৃত হয়। এটি একটি প্রোবাবিলিটি ফাংশন ব্যবহার করে শ্রেণীভিত্তিক ফলাফল প্রদান করে এবং সাধারণত glm() ফাংশন দিয়ে আর-এ ব্যবহৃত হয়। লজিস্টিক রিগ্রেশন মডেল তৈরি, প্রেডিকশন, এবং ফলাফল মূল্যায়ন করার জন্য বিভিন্ন ফাংশন এবং টেকনিক রয়েছে, যা ডেটা বিশ্লেষণ এবং ভবিষ্যদ্বাণী করতে ব্যবহৃত হয়।
Read more