Regression হল একটি পরিসংখ্যানগত টেকনিক যা দুটি বা ততোধিক ভেরিয়েবলের মধ্যে সম্পর্ক নির্ধারণ করতে ব্যবহৃত হয়। Linear Regression এবং Logistic Regression দুটি গুরুত্বপূর্ণ রিগ্রেশন মডেল যা ডেটা বিশ্লেষণ এবং পূর্বাভাস (prediction) তৈরির জন্য ব্যবহৃত হয়। নিচে আমরা এই দুটি মডেল নিয়ে আলোচনা করব।
১. লিনিয়ার রিগ্রেশন (Linear Regression)
Linear Regression হল একটি পরিসংখ্যানগত মডেল যা দুটি ভেরিয়েবলের মধ্যে সম্পর্ক নির্ধারণ করে। এটি একটি সরল রেখা (line) তৈরি করে যা একটি নির্দিষ্ট ভেরিয়েবলের মান (ডিপেনডেন্ট ভেরিয়েবল) অন্য ভেরিয়েবলের মান (ইন্ডিপেনডেন্ট ভেরিয়েবল) দ্বারা পূর্বাভাস দেয়। লিনিয়ার রিগ্রেশন সাধারণত continuous dependent variable (যেমন, বেতন, উচ্চতা, বয়স) এবং one or more independent variables (যেমন, অভিজ্ঞতা, শিক্ষা, আয়) এর মধ্যে সম্পর্ক বুঝতে ব্যবহৃত হয়।
লিনিয়ার রিগ্রেশন মডেল তৈরি
আর-এ linear regression মডেল তৈরি করতে lm() ফাংশন ব্যবহার করা হয়, যেখানে lm মানে linear model।
উদাহরণ:
# ডেটা তৈরি
data <- data.frame(
experience = c(1, 2, 3, 4, 5),
salary = c(30000, 35000, 40000, 45000, 50000)
)
# লিনিয়ার রিগ্রেশন মডেল তৈরি
model <- lm(salary ~ experience, data = data)
# মডেল সারাংশ দেখা
summary(model)
এখানে, lm(salary ~ experience) ফাংশনটি salary কে experience দ্বারা পূর্বাভাস করার জন্য একটি লিনিয়ার মডেল তৈরি করবে। summary(model) ফাংশনটি মডেলটির সারাংশ দেখাবে, যার মধ্যে রিগ্রেশন কোঅফিসিয়েন্ট, R-সকোয়্যার (R-squared), p-value ইত্যাদি থাকবে।
রিগ্রেশন মডেল প্লট করা
# রিগ্রেশন লাইনের সাথে ডেটা প্লট করা
plot(data$experience, data$salary, main="Linear Regression", xlab="Experience", ylab="Salary", pch=19)
abline(model, col="red")
এখানে, abline() ফাংশনটি রিগ্রেশন লাইনের রঙ এবং আকৃতি নির্ধারণ করে এবং গ্রাফে লাইনের সাথে পয়েন্টগুলো প্রদর্শন করা হয়।
২. লজিস্টিক রিগ্রেশন (Logistic Regression)
Logistic Regression একটি পরিসংখ্যানগত মডেল যা একটি বাইনারি (binary) বা ক্যাটেগোরিকাল (categorical) ডিপেনডেন্ট ভেরিয়েবলের পূর্বাভাস করতে ব্যবহৃত হয়। এটি মূলত প্রেডিকশন প্রোবাবিলিটি (probability) ব্যবহার করে একটি নির্দিষ্ট ঘটনা (যেমন, রোগ আক্রান্ত হওয়া বা না হওয়া) ঘটার সম্ভাবনা বের করে।
লজিস্টিক রিগ্রেশন মডেল সাধারণত dependent variable হিসেবে 0 বা 1 মান নেয়। এটি একটি সিগময়েড ফাংশন ব্যবহার করে (যা একটি "S" আকারের কার্ভ তৈরি করে) যা log odds এর মাধ্যমে প্রোবাবিলিটি হিসাব করে।
লজিস্টিক রিগ্রেশন মডেল তৈরি
আর-এ logistic regression মডেল তৈরি করতে glm() ফাংশন ব্যবহার করা হয়, যেখানে glm মানে generalized linear model।
উদাহরণ:
# ডেটা তৈরি (ডিপেনডেন্ট ভেরিয়েবল: outcome - 0 বা 1)
data <- data.frame(
age = c(25, 30, 35, 40, 45),
income = c(40000, 50000, 60000, 70000, 80000),
outcome = c(0, 0, 1, 1, 1) # outcome 0 বা 1
)
# লজিস্টিক রিগ্রেশন মডেল তৈরি
model_logistic <- glm(outcome ~ age + income, data = data, family = "binomial")
# মডেল সারাংশ দেখা
summary(model_logistic)
এখানে, glm(outcome ~ age + income, family = "binomial") ফাংশনটি একটি লজিস্টিক রিগ্রেশন মডেল তৈরি করবে, যেখানে outcome (0 বা 1) নির্ভরশীল ভেরিয়েবল এবং age, income স্বাধীন ভেরিয়েবল। family = "binomial" এটি নির্দেশ করে যে মডেলটি একটি বাইনারি আউটপুট নিবে (যেমন, 0 বা 1)।
লজিস্টিক রিগ্রেশন প্রেডিকশন
লজিস্টিক রিগ্রেশন মডেল থেকে প্রেডিকশন করতে predict() ফাংশন ব্যবহার করা হয়। এটি সম্ভাবনা (probability) হিসাবে ফলাফল প্রদান করে।
# প্রেডিকশন করা (probability of outcome = 1)
predictions <- predict(model_logistic, type = "response")
# ফলাফল দেখানো
print(predictions)
এখানে, type = "response" প্রিডিকশনটি প্রোবাবিলিটি হিসেবে প্রদান করবে (যেমন, 0 থেকে 1 এর মধ্যে একটি মান)।
লিনিয়ার এবং লজিস্টিক রিগ্রেশন এর মধ্যে পার্থক্য
- লিনিয়ার রিগ্রেশন: এটি একটি কন্টিনিউয়াস ডিপেনডেন্ট ভেরিয়েবল (যেমন, সংখ্যা, পরিমাণ) এর জন্য ব্যবহৃত হয়। আউটপুট একটি নির্দিষ্ট সংখ্যা হবে।
- লজিস্টিক রিগ্রেশন: এটি একটি বাইনারি বা ক্যাটেগোরিকাল ডিপেনডেন্ট ভেরিয়েবল (যেমন, হ্যাঁ বা না, 0 বা 1) এর জন্য ব্যবহৃত হয়। আউটপুট একটি সম্ভাবনা (probability) হবে, যা 0 থেকে 1 এর মধ্যে থাকে।
সারাংশ
আর প্রোগ্রামিং-এ Linear Regression এবং Logistic Regression দুটি গুরুত্বপূর্ণ রিগ্রেশন মডেল, যেগুলি ডেটা বিশ্লেষণ এবং পূর্বাভাস তৈরির জন্য ব্যবহৃত হয়। Linear Regression মূলত কন্টিনিউয়াস ডিপেনডেন্ট ভেরিয়েবলের জন্য ব্যবহৃত হয়, এবং Logistic Regression বাইনারি বা ক্যাটেগোরিকাল আউটপুটের জন্য ব্যবহৃত হয়। এই মডেলগুলি আর-এ সহজেই তৈরি করা যায় এবং ডেটা থেকে সম্পর্ক ও প্রবণতা বের করার জন্য খুবই কার্যকরী।
আর প্রোগ্রামিং ভাষায় Linear Regression একটি জনপ্রিয় পরিসংখ্যানগত পদ্ধতি, যা নির্ভরশীল এবং স্বাধীন ভেরিয়েবলের মধ্যে সম্পর্ক বিশ্লেষণ করতে ব্যবহৃত হয়। Simple Linear Regression এবং Multiple Linear Regression এই দুটি ধরণের লিনিয়ার রিগ্রেশন মডেল ব্যবহার করা হয়। চলুন, এদের বিশদভাবে জানি।
১. Simple Linear Regression (সাধারণ লিনিয়ার রিগ্রেশন)
Simple Linear Regression হল একটি পরিসংখ্যানগত মডেল, যা একটি স্বাধীন ভেরিয়েবল (Predictor Variable বা Independent Variable) এবং একটি নির্ভরশীল ভেরিয়েবলের (Response Variable বা Dependent Variable) মধ্যে সরল রেখা সম্পর্ক তৈরি করে। এটি সাধারণত একটি লাইনীয় সম্পর্ক প্রতিষ্ঠা করতে ব্যবহৃত হয়।
মডেল ফর্ম:
এখানে:
- হল নির্ভরশীল ভেরিয়েবল,
- হল স্বাধীন ভেরিয়েবল,
- হল ইন্টারসেপ্ট (Intercept),
- হল স্লোপ (Slope),
- হল ত্রুটি (Error Term)।
Simple Linear Regression মডেল তৈরি করা
# একটি উদাহরণ ডেটা ফ্রেম তৈরি করা
data <- data.frame(
X = c(1, 2, 3, 4, 5),
Y = c(2, 4, 5, 4, 5)
)
# Simple Linear Regression মডেল ফিট করা
model <- lm(Y ~ X, data = data)
# মডেলের সারাংশ দেখানো
summary(model)
এখানে, lm() ফাংশন ব্যবহার করে আমরা Y এবং X এর মধ্যে সরল লিনিয়ার রিগ্রেশন মডেল তৈরি করেছি। summary(model) ফাংশনটি মডেলের বিস্তারিত ফলাফল দেখাবে।
মডেল থেকে প্রাপ্ত কিছু ফলাফল:
- স্লোপ (): সম্পর্কের ধরণ বা পরিবর্তন।
- ইন্টারসেপ্ট (): X এর মান শূন্য হলে Y এর মান।
- R-squared: মডেলটির ফিটনের মান, যা কতটুকু পরিবর্তন ব্যাখ্যা করছে।
২. Multiple Linear Regression (একাধিক লিনিয়ার রিগ্রেশন)
Multiple Linear Regression হল একটি পরিসংখ্যানগত পদ্ধতি, যা একাধিক স্বাধীন ভেরিয়েবল এবং একটি নির্ভরশীল ভেরিয়েবলের মধ্যে সম্পর্ক বিশ্লেষণ করতে ব্যবহৃত হয়। এই মডেলে একটি নির্ভরশীল ভেরিয়েবল (Y) এবং একাধিক স্বাধীন ভেরিয়েবল (X1, X2, ..., Xn) থাকে।
মডেল ফর্ম:
এখানে:
- হল নির্ভরশীল ভেরিয়েবল,
- হল একাধিক স্বাধীন ভেরিয়েবল,
- হল ইন্টারসেপ্ট,
- হল স্লোপ বা প্যারামিটার,
- হল ত্রুটি।
Multiple Linear Regression মডেল তৈরি করা
# একটি উদাহরণ ডেটা ফ্রেম তৈরি করা
data <- data.frame(
X1 = c(1, 2, 3, 4, 5),
X2 = c(5, 4, 3, 2, 1),
Y = c(10, 12, 13, 14, 15)
)
# Multiple Linear Regression মডেল ফিট করা
model_multiple <- lm(Y ~ X1 + X2, data = data)
# মডেলের সারাংশ দেখানো
summary(model_multiple)
এখানে, lm() ফাংশন ব্যবহার করে Y এর সাথে দুটি স্বাধীন ভেরিয়েবল X1 এবং X2 এর সম্পর্ক বিশ্লেষণ করেছি। summary(model_multiple) ফাংশনটি মডেলের ফলাফল দেখাবে।
মডেল থেকে প্রাপ্ত ফলাফল:
- একাধিক স্লোপ (): এই ভেরিয়েবলগুলির মধ্যে সম্পর্ক বা পরিবর্তন ব্যাখ্যা করা হয়।
- R-squared: এটি মডেলটির ফিটনের মান, যা কতটুকু পরিবর্তন ব্যাখ্যা করছে।
Simple এবং Multiple Linear Regression এর মধ্যে পার্থক্য
- Simple Linear Regression একটি মাত্র স্বাধীন ভেরিয়েবল (X) এবং একটি নির্ভরশীল ভেরিয়েবল (Y) নিয়ে কাজ করে।
- Multiple Linear Regression একাধিক স্বাধীন ভেরিয়েবল (X1, X2, ..., Xn) এবং একটি নির্ভরশীল ভেরিয়েবল (Y) নিয়ে কাজ করে।
মডেল মূল্যায়ন
লিনিয়ার রিগ্রেশন মডেল মূল্যায়ন করতে কয়েকটি মেট্রিক্স ব্যবহার করা হয়:
- R-squared: মডেলটি ডেটার কতটুকু পরিবর্তন ব্যাখ্যা করছে।
- Adjusted R-squared: এটি R-squared এর সাথে স্বাধীন ভেরিয়েবলগুলির সংখ্যা সমন্বয় করে।
- p-value: এটি নির্ধারণ করে যে, মডেলটি কতটুকু অর্থপূর্ণ।
- Residuals: মডেলের ভুলগুলি (যেমন, বাকি অংশ বা ত্রুটি) দেখার জন্য।
সারাংশ
Simple Linear Regression এবং Multiple Linear Regression হল দুটি গুরুত্বপূর্ণ পরিসংখ্যানগত মডেল, যা স্বাধীন ভেরিয়েবল এবং নির্ভরশীল ভেরিয়েবলের মধ্যে সম্পর্ক বিশ্লেষণ করতে ব্যবহৃত হয়। Simple Linear Regression একটি স্বাধীন ভেরিয়েবল এবং একটি নির্ভরশীল ভেরিয়েবলের সম্পর্ক বিশ্লেষণ করে, যখন Multiple Linear Regression একাধিক স্বাধীন ভেরিয়েবল ব্যবহার করে। উভয় মডেলই ডেটার মধ্যে সম্পর্ক ব্যাখ্যা এবং ভবিষ্যদ্বাণী করতে সহায়তা করে।
আর প্রোগ্রামিং ভাষায় Model Fitting এবং Coefficients Interpretation ডেটা অ্যানালাইসিসের গুরুত্বপূর্ণ অংশ। মডেল ফিটিং এর মাধ্যমে ডেটা থেকে একটি পরিসংখ্যানগত মডেল তৈরি করা হয় এবং মডেলটির coefficients ব্যাখ্যা করে আমরা ডেটার মধ্যে সম্পর্ক বা প্রভাব বুঝতে পারি। মডেল ফিটিং সাধারণত রিগ্রেশন মডেল (Regression Models) বা অন্যান্য পরিসংখ্যানগত মডেলগুলির মাধ্যমে করা হয়।
এই টিউটোরিয়ালে আমরা রিগ্রেশন মডেল ফিটিং এবং coefficients interpretation নিয়ে আলোচনা করব।
Model Fitting (মডেল ফিটিং)
মডেল ফিটিং হলো ডেটার উপর একটি গাণিতিক মডেল (যেমন, লিনিয়ার রিগ্রেশন বা লজিস্টিক রিগ্রেশন) তৈরি করা, যা ডেটার প্যাটার্ন বা সম্পর্ক চিত্রিত করে। আর-এ মডেল ফিটিং সাধারণত lm() (লিনিয়ার মডেল) অথবা glm() (জেনারালাইজড লিনিয়ার মডেল) ফাংশন ব্যবহার করে করা হয়।
১. Linear Regression Model (লিনিয়ার রিগ্রেশন মডেল)
লিনিয়ার রিগ্রেশন মডেল দুটি ভেরিয়েবলের মধ্যে সম্পর্ক নির্ধারণ করতে ব্যবহৃত হয়, যেখানে একটি ডিপেনডেন্ট ভেরিয়েবল (y) এবং একটি বা একাধিক ইনডিপেনডেন্ট ভেরিয়েবল (x) থাকে। আমরা lm() ফাংশন ব্যবহার করে একটি লিনিয়ার রিগ্রেশন মডেল ফিট করতে পারি।
উদাহরণ: Simple Linear Regression
# ডেটা তৈরি করা
data <- data.frame(
x = c(1, 2, 3, 4, 5),
y = c(2, 4, 5, 4, 5)
)
# লিনিয়ার রিগ্রেশন মডেল ফিট করা
model <- lm(y ~ x, data = data)
# মডেলের সারাংশ দেখা
summary(model)
এখানে, lm(y ~ x, data = data) দিয়ে আমরা x এবং y এর মধ্যে সম্পর্ক নির্ধারণ করতে একটি লিনিয়ার রিগ্রেশন মডেল ফিট করেছি। summary() ফাংশনটি মডেলের ফলাফল এবং coefficients এর ব্যাখ্যা দেখানোর জন্য ব্যবহৃত হয়েছে।
২. Multiple Linear Regression Model (মাল্টিপল লিনিয়ার রিগ্রেশন)
যখন একাধিক ইনডিপেনডেন্ট ভেরিয়েবল থাকে, তখন Multiple Linear Regression মডেল ব্যবহার করা হয়। এখানে কয়েকটি ভেরিয়েবলের মধ্যে সম্পর্ক নির্ধারণ করা হয়।
উদাহরণ: Multiple Linear Regression
# মাল্টিপল লিনিয়ার রিগ্রেশন ডেটা তৈরি
data <- data.frame(
x1 = c(1, 2, 3, 4, 5),
x2 = c(5, 4, 3, 2, 1),
y = c(2, 4, 5, 4, 5)
)
# মাল্টিপল লিনিয়ার রিগ্রেশন মডেল ফিট করা
model <- lm(y ~ x1 + x2, data = data)
# মডেলের সারাংশ দেখা
summary(model)
এখানে, y ~ x1 + x2 দিয়ে আমরা x1 এবং x2 ভেরিয়েবলগুলির মাধ্যমে y ভেরিয়েবলের পূর্বাভাস নির্ধারণ করছি।
Coefficients Interpretation (কোইফিসিয়েন্টস ব্যাখ্যা)
লিনিয়ার রিগ্রেশন মডেল ফিট করার পর, coefficients গুলি আমাদের মডেলের ফলাফল ব্যাখ্যা করতে সাহায্য করে। এই কোইফিসিয়েন্টস মূলত প্রতিটি ইনডিপেনডেন্ট ভেরিয়েবলের প্রভাব বা সম্পর্ক বর্ণনা করে। মডেলের summary() আউটপুটের মধ্যে কোইফিসিয়েন্টস, তাদের মান, স্ট্যান্ডার্ড এরর, t-value, এবং p-value প্রদর্শিত হয়।
Coefficients এর ব্যাখ্যা
- Intercept (অন্তর্গত মান): এটি হলো যখন সকল ইনডিপেনডেন্ট ভেরিয়েবলের মান শূন্য (zero) হয়, তখন ডিপেনডেন্ট ভেরিয়েবলের মান কত হবে। অর্থাৎ, এটি হল আপনার মডেলের সূচনা বিন্দু।
- Slope Coefficients (প্লটের ঢাল): প্রতিটি ইনডিপেনডেন্ট ভেরিয়েবলের সাথে ডিপেনডেন্ট ভেরিয়েবলের সম্পর্ক ব্যাখ্যা করে। উদাহরণস্বরূপ,
x1এর জন্য কোইফিসিয়েন্ট যদি ২ হয়, তাহলে এর মানে হলোx1এর প্রতি একক বৃদ্ধির জন্যyএর মান গড়ে ২ ইউনিট বৃদ্ধি পাবে।
উদাহরণ: Coefficients Interpretation
# মডেল ফিট করা
model <- lm(y ~ x1 + x2, data = data)
# মডেলের সারাংশ দেখা
summary(model)
উদাহরণস্বরূপ, মডেলের সারাংশে আমরা নিচের আউটপুট পেতে পারি:
Call:
lm(formula = y ~ x1 + x2, data = data)
Coefficients:
(Intercept) x1 x2
1.0000 0.5000 -0.2000
এখানে:
- Intercept: 1.0000, অর্থাৎ যখন
x1এবংx2এর মান শূন্য হবে, তখনyএর মান 1 হবে। - x1: 0.5000, অর্থাৎ
x1এর প্রতি একক বৃদ্ধি হলেyএর মান 0.5 বৃদ্ধি পাবে। - x2: -0.2000, অর্থাৎ
x2এর প্রতি একক বৃদ্ধি হলেyএর মান 0.2 কমে যাবে।
৩. p-value এবং t-statistic
p-value এবং t-statistic মডেলের ভ্যালিডিটি পরীক্ষা করতে ব্যবহৃত হয়। p-value যদি 0.05 এর নিচে হয়, তাহলে আমরা Null Hypothesis (H₀) খারিজ করে Alternative Hypothesis (H₁) গ্রহণ করি, অর্থাৎ ইনডিপেনডেন্ট ভেরিয়েবলের সাথে ডিপেনডেন্ট ভেরিয়েবলের মধ্যে উল্লেখযোগ্য সম্পর্ক আছে।
Model Evaluation (মডেল মূল্যায়ন)
মডেল ফিটিংয়ের পরে, মডেলটি কেমন কাজ করছে তা মূল্যায়ন করা প্রয়োজন। সাধারণত R-squared, Adjusted R-squared, Residuals, p-value ইত্যাদি ব্যবহার করা হয়।
১. R-squared (R²)
R-squared হল একটি পরিমাপক যা মডেলের কতটুকু তথ্য ব্যাখ্যা করতে সক্ষম তা প্রদর্শন করে। এটি 0 থেকে 1 এর মধ্যে থাকে, যেখানে 1 মানে পুরো ডেটা মডেল দ্বারা ব্যাখ্যা করা হয়েছে।
# R-squared দেখানো
summary(model)$r.squared
২. Adjusted R-squared
Adjusted R-squared হল R-squared এর একটি সংস্করণ যা ইনডিপেনডেন্ট ভেরিয়েবলগুলোর সংখ্যা অনুসারে সমন্বিত হয়। এটি একাধিক ভেরিয়েবল ব্যবহারের ফলে মডেলের কার্যকারিতা মূল্যায়ন করতে সহায়তা করে।
# Adjusted R-squared দেখানো
summary(model)$adj.r.squared
সারাংশ
Model Fitting এবং Coefficients Interpretation আর প্রোগ্রামিংয়ে ডেটা বিশ্লেষণের অপরিহার্য অংশ। মডেল ফিটিংয়ের মাধ্যমে আমরা ডেটার প্যাটার্ন বা সম্পর্ক বুঝতে সক্ষম হই এবং coefficients এর মাধ্যমে ডেটার বিভিন্ন ভেরিয়েবলের প্রভাব ব্যাখ্যা করতে পারি। মডেল মূল্যায়ন যেমন R-squared, Adjusted R-squared, এবং p-value এর মাধ্যমে মডেলের কার্যকারিতা পরীক্ষা করা যায়।
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() ফাংশন দিয়ে আর-এ ব্যবহৃত হয়। লজিস্টিক রিগ্রেশন মডেল তৈরি, প্রেডিকশন, এবং ফলাফল মূল্যায়ন করার জন্য বিভিন্ন ফাংশন এবং টেকনিক রয়েছে, যা ডেটা বিশ্লেষণ এবং ভবিষ্যদ্বাণী করতে ব্যবহৃত হয়।
আর প্রোগ্রামিংয়ে Model Evaluation এবং Diagnostics অত্যন্ত গুরুত্বপূর্ণ অংশ, বিশেষত মেশিন লার্নিং বা পরিসংখ্যানগত মডেল তৈরি করার পর। মডেল ইভ্যালুয়েশন এর মাধ্যমে আমরা মডেলটির কার্যকারিতা (performance) পর্যালোচনা করতে পারি এবং মডেল ডায়াগনস্টিক্সের মাধ্যমে মডেলের গুণগত মান ও উন্নতির জায়গাগুলি চিহ্নিত করতে পারি।
এই টিউটোরিয়ালে আমরা Model Evaluation এবং Diagnostics এর গুরুত্বপূর্ণ কৌশলগুলো আলোচনা করব, যেমন Cross-validation, Confusion Matrix, ROC Curve, Residual Analysis, এবং অন্যান্য।
Model Evaluation (মডেল মূল্যায়ন)
মডেল ইভ্যালুয়েশন বা মূল্যায়ন মডেলের কার্যকারিতা পর্যালোচনা করার প্রক্রিয়া। এটি আমাদের মডেলের সক্ষমতা যাচাই করতে সাহায্য করে, যেমন এটি ডেটার সাথে কতটা ভালভাবে ফিট হয়েছে এবং ভবিষ্যতে নতুন ডেটার জন্য এটি কতটা সঠিক ফলাফল দিতে পারবে।
১. Accuracy (সঠিকতা)
Accuracy হলো মডেলের সঠিকতার একটি সাধারণ পরিমাপ, যা মডেলের সঠিক পূর্বাভাসের অনুপাত নির্দেশ করে।
উদাহরণ:
# মডেল পূর্বাভাস এবং প্রকৃত ফলাফল
predictions <- c(1, 0, 1, 1, 0)
actual <- c(1, 0, 1, 0, 0)
# Accuracy হিসাব করা
accuracy <- sum(predictions == actual) / length(actual)
print(accuracy)
২. Confusion Matrix (কনফিউশন ম্যাট্রিক্স)
Confusion Matrix একটি টুল যা মডেলের সঠিক এবং ভুল পূর্বাভাসকে বিশ্লেষণ করে। এটি সঠিক এবং ভুল পূর্বাভাসের সংখ্যা দিয়ে একটি ম্যাট্রিক্স তৈরি করে।
# caret প্যাকেজ লোড করা
library(caret)
# কনফিউশন ম্যাট্রিক্স তৈরি করা
confusionMatrix(predictions, actual)
এখানে কনফিউশন ম্যাট্রিক্সের মাধ্যমে আমরা True Positives, True Negatives, False Positives, এবং False Negatives সম্পর্কে বিস্তারিত জানতে পারব।
৩. ROC Curve (Receiver Operating Characteristic Curve)
ROC Curve একটি গ্রাফিক্যাল উপস্থাপনা যা মডেলের True Positive Rate এবং False Positive Rate এর মধ্যে সম্পর্ক দেখায়। এটি মডেলের কার্যকারিতা মূল্যায়ন করতে ব্যবহৃত হয়, বিশেষত ক্লাসিফিকেশন মডেলের ক্ষেত্রে।
উদাহরণ:
# pROC প্যাকেজ ইনস্টল করা
install.packages("pROC")
library(pROC)
# প্রকৃত এবং পূর্বাভাস মান
roc_curve <- roc(actual, predictions)
# ROC curve প্রদর্শন
plot(roc_curve)
এখানে pROC প্যাকেজ ব্যবহৃত হয়েছে ROC curve তৈরি করার জন্য।
Model Diagnostics (মডেল ডায়াগনস্টিক্স)
মডেল ডায়াগনস্টিক্স হলো মডেলটি সঠিকভাবে কাজ করছে কিনা তা পরীক্ষা করার প্রক্রিয়া, এবং প্রয়োজনে মডেলটির উন্নতির জন্য পরামর্শ দেওয়া। এটি বিশেষভাবে Residual Analysis (অবশিষ্ট বিশ্লেষণ) এবং Model Assumptions যাচাইয়ের মাধ্যমে করা হয়।
১. Residual Analysis (অবশিষ্ট বিশ্লেষণ)
Residuals হলো প্রকৃত এবং পূর্বাভাস মানের মধ্যে পার্থক্য। একটি ভাল মডেল তখনই তৈরি হয় যখন residuals গুলি এলোমেলোভাবে ছড়িয়ে থাকে এবং কোনো প্যাটার্ন না দেখায়। Residual Plot এর মাধ্যমে এই পার্থক্য পরীক্ষা করা হয়।
উদাহরণ:
# lm() ফাংশন দিয়ে লিনিয়ার মডেল তৈরি
model <- lm(Salary ~ Age, data = dataset)
# অবশিষ্ট হিসাব করা
residuals <- resid(model)
# অবশিষ্ট প্লট তৈরি
plot(residuals)
এখানে, resid() ফাংশনটি মডেলের অবশিষ্ট মান বের করে, এবং plot() ফাংশনটি অবশিষ্টগুলির প্লট তৈরি করে।
২. Normality Check (স্বাভাবিকতা পরীক্ষা)
মডেলের ডায়াগনস্টিক্সের জন্য Residuals এর স্বাভাবিক বিতরণ (normal distribution) পরীক্ষা করা খুবই গুরুত্বপূর্ণ। এটি করতে Q-Q plot বা Shapiro-Wilk Test ব্যবহার করা হয়।
উদাহরণ:
# Q-Q plot তৈরি করা
qqnorm(residuals)
qqline(residuals)
# শাপিরো-উইলক টেস্ট ব্যবহার করে স্বাভাবিকতা পরীক্ষা করা
shapiro.test(residuals)
এখানে qqnorm() এবং qqline() ফাংশনগুলি Q-Q প্লট তৈরি করার জন্য ব্যবহৃত হয়েছে, এবং shapiro.test() ফাংশনটি residuals এর স্বাভাবিকতা পরীক্ষা করে।
৩. Multicollinearity Check (মাল্টিকোলিনিয়ারিটি পরীক্ষা)
যদি আপনার মডেলে একাধিক স্বাধীন ভেরিয়েবল (independent variables) থাকে, তবে মাল্টিকোলিনিয়ারিটি থাকতে পারে, যা মডেলটির পারফরমেন্সকে প্রভাবিত করতে পারে। এটি পরীক্ষা করতে Variance Inflation Factor (VIF) ব্যবহার করা হয়।
উদাহরণ:
# vif() ফাংশন ব্যবহার করে মাল্টিকোলিনিয়ারিটি পরীক্ষা করা
library(car)
vif(model)
এখানে vif() ফাংশনটি ব্যবহার করে মডেলের ভেরিয়েবলের মধ্যে মাল্টিকোলিনিয়ারিটি পরীক্ষা করা হয়। যদি VIF এর মান ৫ এর বেশি হয়, তবে এটি মাল্টিকোলিনিয়ারিটির সংকেত।
সারাংশ
আর প্রোগ্রামিংয়ে Model Evaluation এবং Diagnostics গুরুত্বপূর্ণ ভূমিকা পালন করে, যা মডেলের কার্যকারিতা পর্যালোচনা এবং উন্নতি করতে সাহায্য করে। মডেল ইভ্যালুয়েশনের জন্য Accuracy, Confusion Matrix, এবং ROC Curve ব্যবহার করা হয়, এবং মডেল ডায়াগনস্টিক্সের জন্য Residual Analysis, Normality Check, এবং Multicollinearity Check করা হয়। এই টেকনিকগুলো মডেল তৈরির পর সঠিক ফলাফল নিশ্চিত করতে সহায়তা করে।
Read more