Linear Regression (রৈখিক রিগ্রেশন) হল একটি মৌলিক পরিসংখ্যানগত এবং মেশিন লার্নিং অ্যালগরিদম, যা একটি নির্দিষ্ট আউটপুট (ডিপেনডেন্ট ভ্যারিয়েবল) এবং এক বা একাধিক ইনপুট (ইন্ডিপেনডেন্ট ভ্যারিয়েবল) এর মধ্যে সম্পর্ক নির্ধারণ করতে ব্যবহৃত হয়। এটি একটি সুপারভাইজড লার্নিং টেকনিক যা মূলত ভবিষ্যদ্বাণী করার জন্য ব্যবহৃত হয়, যেখানে আউটপুট একটি নিরবচ্ছিন্ন (continuous) মান হয়।
Linear Regression এর মৌলিক ধারণা
Linear Regression একটি সরল রেখার (line) মাধ্যমে ইনপুট ভ্যারিয়েবল এবং আউটপুট ভ্যারিয়েবলের মধ্যে সম্পর্ক প্রকাশ করে। এটি ধারণা করে যে ইনপুট ভ্যারিয়েবল এবং আউটপুট ভ্যারিয়েবলের মধ্যে একটি সরল রৈখিক সম্পর্ক রয়েছে, অর্থাৎ একটি straight line দ্বারা তাদের সম্পর্ক বর্ণনা করা সম্ভব।
রৈখিক রিগ্রেশন এর সাধারণ ফর্ম:
এখানে:
- y: আউটপুট ভ্যারিয়েবল (ডিপেনডেন্ট ভ্যারিয়েবল)
- x₁, x₂, ..., xₙ: ইনপুট ভ্যারিয়েবল (ইন্ডিপেনডেন্ট ভ্যারিয়েবল)
- β₀: ইন্টারসেপ্ট (y-অক্ষের সাথে মেকানিক্যাল কনস্ট্যান্ট)
- β₁, β₂, ..., βₙ: প্রতিটি ইনপুট ভ্যারিয়েবলের জন্য স্লোপ (প্যারামিটার বা কো-এফিসিয়েন্ট)
এটি সাধারণত মিনিমাম স্কোয়ারস (Least Squares) মেথড ব্যবহার করে ট্রেইন করা হয়, যেখানে মডেলটি ইনপুট এবং আউটপুটের মধ্যে সর্বনিম্ন ত্রুটি (error) বিশ্লেষণ করে।
Linear Regression এর ধাপ:
- ডেটা সংগ্রহ: প্রথমেই ইনপুট (X) এবং আউটপুট (Y) ডেটা সংগ্রহ করা হয়। একটি সাধারণ উদাহরণ হতে পারে ছাত্রদের পূর্ববর্তী পরীক্ষার নম্বর (ইনপুট) এবং তাদের বর্তমান পরীক্ষার নম্বর (আউটপুট)।
- মডেল ফিটিং: একটি সোজা রেখা তৈরি করতে আমরা ইনপুট (X) এবং আউটপুট (Y) এর জন্য সংশ্লিষ্ট কো-এফিসিয়েন্ট (β₀, β₁) খুঁজে বের করি।
- ফলস্বরূপ আউটপুট অনুমান: মডেলটি প্রশিক্ষণ পাওয়ার পর, নতুন ইনপুট ডেটা দিয়ে আউটপুট পূর্বানুমান করা যায়।
- মডেল মূল্যায়ন: বিভিন্ন মূল্যায়ন মেট্রিক্স (যেমন R², Mean Squared Error) ব্যবহার করে মডেলটি কতটা কার্যকরী তা যাচাই করা হয়।
Linear Regression এর উদাহরণ:
উদাহরণ ১: একক রৈখিক রিগ্রেশন (Simple Linear Regression)
এখানে আমরা একটি উদাহরণ দেখাবো যেখানে একক রিগ্রেশন ব্যবহার করা হয়েছে (একটি ইনপুট ভ্যারিয়েবল এবং একটি আউটপুট ভ্যারিয়েবল)।
Python Example:
import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
# ডেটা তৈরি করা
X = np.array([[1], [2], [3], [4], [5]]) # ইনপুট ভ্যারিয়েবল
y = np.array([1, 2, 3, 4, 5]) # আউটপুট ভ্যারিয়েবল
# মডেল তৈরি এবং প্রশিক্ষণ
model = LinearRegression()
model.fit(X, y)
# মডেলের কনস্ট্যান্ট এবং স্লোপ
print("Intercept (β₀):", model.intercept_)
print("Slope (β₁):", model.coef_)
# আউটপুট পূর্বানুমান
y_pred = model.predict(X)
# ফলস্বরূপ গ্রাফ
plt.scatter(X, y, color='blue', label='Actual Data')
plt.plot(X, y_pred, color='red', label='Fitted Line')
plt.xlabel('X')
plt.ylabel('y')
plt.title('Simple Linear Regression')
plt.legend()
plt.show()
Output:
- এই কোডটি একটি সরল রেখা আঁকবে যেখানে ইনপুট এবং আউটপুট এর সম্পর্ক সরলরেখায় দেখা যাবে।
model.intercept_এবংmodel.coef_ব্যবহার করে আপনি মডেলের ইন্টারসেপ্ট (β₀) এবং স্লোপ (β₁) জানতে পারবেন।
উদাহরণ ২: বহুমুখী রৈখিক রিগ্রেশন (Multiple Linear Regression)
বহুমুখী রৈখিক রিগ্রেশন হল যখন একাধিক ইনপুট ভ্যারিয়েবল থাকে। এখানে আমরা দুটি ইনপুট ভ্যারিয়েবলের মাধ্যমে আউটপুট পূর্বানুমান করব।
Python Example:
# বহুমুখী রিগ্রেশন উদাহরণ
X = np.array([[1, 2], [2, 3], [3, 4], [4, 5], [5, 6]]) # দুটি ইনপুট ভ্যারিয়েবল
y = np.array([3, 6, 9, 12, 15]) # আউটপুট ভ্যারিয়েবল
# মডেল তৈরি এবং প্রশিক্ষণ
model = LinearRegression()
model.fit(X, y)
# মডেলের কনস্ট্যান্ট এবং স্লোপ
print("Intercept (β₀):", model.intercept_)
print("Slopes (β₁, β₂):", model.coef_)
# আউটপুট পূর্বানুমান
y_pred = model.predict(X)
# ফলস্বরূপ গ্রাফ
plt.scatter(X[:, 0], y, color='blue', label='Actual Data')
plt.plot(X[:, 0], y_pred, color='red', label='Fitted Line')
plt.xlabel('X1')
plt.ylabel('y')
plt.title('Multiple Linear Regression')
plt.legend()
plt.show()
Output:
- এখানে দুটি ইনপুট ভ্যারিয়েবল (X₁ এবং X₂) আছে এবং আমরা আউটপুট y পূর্বানুমান করব।
Linear Regression মূল্যায়ন
মডেলটির কার্যকারিতা মূল্যায়নের জন্য বেশ কিছু মেট্রিক্স ব্যবহার করা হয়:
- R² (R-squared): এটি মডেলের ভালোমানের পরিমাপ দেয়। এর মান 0 থেকে 1 এর মধ্যে থাকে, যেখানে 1 হলে মডেল সম্পূর্ণভাবে ডেটাকে বর্ণনা করতে সক্ষম।
- Mean Squared Error (MSE): এটি মডেলের ত্রুটির পরিমাপ, এবং এটি কম থাকলে মডেলটি আরও ভাল।
from sklearn.metrics import mean_squared_error, r2_score
# MSE এবং R² হিসাব করা
mse = mean_squared_error(y, y_pred)
r2 = r2_score(y, y_pred)
print(f"Mean Squared Error (MSE): {mse}")
print(f"R-squared: {r2}")
সারাংশ
- Linear Regression একটি মৌলিক মেশিন লার্নিং অ্যালগরিদম যা আউটপুট এবং ইনপুট ভ্যারিয়েবলগুলির মধ্যে সম্পর্ক নির্ধারণ করে।
- এটি একটি সরল রৈখিক রেখার মাধ্যমে ইনপুট এবং আউটপুটের মধ্যে সম্পর্ক খুঁজে বের করে।
- Simple Linear Regression একক ইনপুট ভ্যারিয়েবল এবং আউটপুট ভ্যারিয়েবল নিয়ে কাজ করে, আর Multiple Linear Regression একাধিক ইনপুট ভ্যারিয়েবল নিয়ে কাজ করে।
- মডেলের কার্যকারিতা মাপতে R² এবং Mean Squared Error ব্যবহার করা হয়।
লিনিয়ার রিগ্রেশন (Linear Regression) একটি মৌলিক এবং জনপ্রিয় পরিসংখ্যানিক মডেল, যা এক বা একাধিক স্বাধীন ভেরিয়েবল (Independent Variables) এর মাধ্যমে নির্ভরশীল ভেরিয়েবল (Dependent Variable) এর ভবিষ্যদ্বাণী বা অনুমান করতে ব্যবহৃত হয়। এটি ডেটা পয়েন্টগুলির মধ্যে একটি সরল রেখা বা লিনিয়ার সম্পর্ক প্রতিষ্ঠা করার জন্য ব্যবহৃত হয়। লিনিয়ার রিগ্রেশনটি দুটি প্রধান ক্ষেত্রে ব্যবহার করা হয়: একক রিগ্রেশন (Simple Regression) এবং বহুগুণ রিগ্রেশন (Multiple Regression)।
১. Simple Linear Regression (একক লিনিয়ার রিগ্রেশন)
একক লিনিয়ার রিগ্রেশন তখন ব্যবহার করা হয় যখন আমাদের কাছে একটি মাত্র স্বাধীন ভেরিয়েবল থাকে। এই মডেলটি একটি সরল রেখা আঁকতে চেষ্টা করে যা ডেটার পয়েন্টগুলোর মধ্যে সম্পর্ক প্রতিষ্ঠা করে।
মডেল ফর্মুলা:
এটি একটি সরল রেখার সমীকরণ হিসাবে গণনা করা হয়:
- y: নির্ভরশীল ভেরিয়েবল (Dependent Variable) যা আমরা পূর্বানুমান করতে চাই।
- x: স্বাধীন ভেরিয়েবল (Independent Variable)।
- β₀: স্লোপ (Slope) বা ইন্টারসেপ্ট (Intercept), যা রেখার কাটাবিন্দু (y-অক্ষ)।
- β₁: স্লোপ কোএফিশিয়েন্ট, এটি নির্ধারণ করে x এর পরিবর্তনের সাথে y এর কী পরিমাণ পরিবর্তন হবে।
- ε: ত্রুটি (Error), যা মডেলের পূর্ণতা এবং অপ্রত্যাশিত উপাদানগুলি প্রকাশ করে।
উদাহরণ:
ধরা যাক, আমাদের কাছে একটি ডেটাসেট রয়েছে, যেখানে একজন ছাত্রের পড়াশোনার সময় (x) এবং তার পরীক্ষার নম্বর (y) রয়েছে। আমরা লিনিয়ার রিগ্রেশন ব্যবহার করে ছাত্রের পরীক্ষার নম্বর ভবিষ্যদ্বাণী করতে চাই।
২. Multiple Linear Regression (বহুগুণ লিনিয়ার রিগ্রেশন)
বহুগুণ লিনিয়ার রিগ্রেশন তখন ব্যবহার করা হয় যখন একাধিক স্বাধীন ভেরিয়েবল থাকে। এটি একাধিক ভেরিয়েবলের মধ্যে সম্পর্ক নির্ধারণ করার চেষ্টা করে।
মডেল ফর্মুলা:
- y: নির্ভরশীল ভেরিয়েবল।
- x₁, x₂, ..., xₙ: একাধিক স্বাধীন ভেরিয়েবল।
- β₀: ইন্টারসেপ্ট।
- β₁, β₂, ..., βₙ: প্রতিটি স্বাধীন ভেরিয়েবলের জন্য স্লোপ কোএফিশিয়েন্ট।
- ε: ত্রুটি।
উদাহরণ:
ধরা যাক, আমরা একজন ছাত্রের পরীক্ষা নম্বরের পূর্বানুমান করতে চাই, তবে এখন তার পড়াশোনার সময় (x₁), শিক্ষকের পাঠদানের গুণগত মান (x₂), এবং শিক্ষার পরিবেশ (x₃) কে স্বাধীন ভেরিয়েবল হিসাবে ব্যবহার করা হচ্ছে। এখানে আমরা লিনিয়ার রিগ্রেশন মডেলটি ব্যবহার করে এই ভেরিয়েবলের সম্মিলিত প্রভাব থেকে পরীক্ষার নম্বর অনুমান করতে পারি।
৩. লিনিয়ার রিগ্রেশন মডেলের লক্ষ্য
লিনিয়ার রিগ্রেশন মডেলটি উদ্দেশ্য করে দুটি প্রধান লক্ষ্য:
- স্লোপ এবং ইন্টারসেপ্ট অনুমান করা: মডেলটি ডেটার উপর ভিত্তি করে স্লোপ (β₁) এবং ইন্টারসেপ্ট (β₀) মূল্যায়ন করে।
- ভবিষ্যদ্বাণী করা: নির্দিষ্ট ইনপুট (x) এর জন্য আউটপুট (y) ভবিষ্যদ্বাণী করা।
৪. লিনিয়ার রিগ্রেশন মডেলের মূল্যায়ন
লিনিয়ার রিগ্রেশন মডেলের কার্যকারিতা মূল্যায়ন করতে আমরা কিছু মেট্রিক্স ব্যবহার করি:
- Mean Squared Error (MSE): এটি আসল এবং মডেল দ্বারা পূর্বানুমানিত মানের মধ্যে পার্থক্যের বর্গমূল নিয়ে গড়ে ওঠে। এটি মডেলটির পারফরম্যান্স পরিমাপ করতে ব্যবহৃত হয়।
- R-squared (R²): এটি মডেলটির বৈশিষ্ট্য নির্ধারণ করে এবং বলে দেয় যে মডেলটি ডেটার ভেরিয়েশন ব্যাখ্যা করতে কতটা সফল। র্শূণ্যের মান ০ থেকে ১ এর মধ্যে থাকে, যেখানে ১ মানে সম্পূর্ণ ভেরিয়েশন ব্যাখ্যা করা হয়েছে।
- Residual Plot: রেসিডুয়াল প্লট ডেটার সাথে মডেলের ত্রুটির সম্পর্ক দেখতে সহায়তা করে। এর মাধ্যমে আমরা মডেলের সাধারণতা বা আনফিট হওয়ার বিষয়টি দেখতে পারি।
৫. লিনিয়ার রিগ্রেশন মডেলের প্রযোজ্যতা
লিনিয়ার রিগ্রেশন মডেলটি যখন ডেটার মধ্যে লিনিয়ার সম্পর্ক থাকে, তখন খুবই কার্যকরী। তবে, যদি ডেটায় নন-লিনিয়ার সম্পর্ক থাকে, তাহলে লিনিয়ার রিগ্রেশন মডেলটি যথাযথ ফলাফল প্রদান নাও করতে পারে। এমন পরিস্থিতিতে, অন্যান্য অ্যালগরিদম যেমন Decision Trees, Random Forest, বা Neural Networks ব্যবহার করা যেতে পারে।
সারাংশ
লিনিয়ার রিগ্রেশন হল একটি সাদামাটা এবং শক্তিশালী অ্যালগরিদম, যা একটি বা একাধিক স্বাধীন ভেরিয়েবলের মাধ্যমে নির্ভরশীল ভেরিয়েবলের ভবিষ্যদ্বাণী করতে ব্যবহৃত হয়। এটি মডেল তৈরির একটি প্রাথমিক ধাপ এবং ডেটার মধ্যে সরল রেখার সম্পর্ক খুঁজে বের করে। তবে, এটি শুধুমাত্র তখন কার্যকরী যখন ডেটার মধ্যে লিনিয়ার সম্পর্ক থাকে, এবং এর পারফরম্যান্স নির্ভর করে সঠিকভাবে স্লোপ এবং ইন্টারসেপ্ট অনুমান করতে পারার ওপর।
Linear Regression হল একটি অ্যালগরিদম যা একটি নির্ভরশীল ভেরিয়েবলের (dependent variable) সাথে একটি (Simple Linear Regression) অথবা একাধিক (Multiple Linear Regression) স্বাধীন ভেরিয়েবলের (independent variables) সম্পর্ক নির্ধারণ করার জন্য ব্যবহৃত হয়।
১. Simple Linear Regression (SLR)
Simple Linear Regression হল একটি স্ট্যাটিস্টিক্যাল টেকনিক যা একটি নির্ভরশীল ভেরিয়েবলের (যেমন ) সাথে একটি স্বাধীন ভেরিয়েবলের (যেমন ) সম্পর্ক নির্ধারণ করতে ব্যবহৃত হয়। এই সম্পর্কটি একটি সোজা রেখা (straight line) দ্বারা মডেল করা হয়।
ফর্মুলা:
Simple Linear Regression এর সাধারণ সমীকরণ:
- হল নির্ভরশীল ভেরিয়েবল।
- হল স্বাধীন ভেরিয়েবল।
- হল ইন্টারসেপ্ট (intercept)।
- হল স্লোপ (slope)।
- হল ত্রুটি (error term)।
বৈশিষ্ট্য:
- একটি স্বাধীন ভেরিয়েবল এবং একটি নির্ভরশীল ভেরিয়েবল এর মধ্যে সম্পর্ক।
- সোজা রেখা দ্বারা সম্পর্ক প্রদর্শন করা হয়।
- Predictive modeling: নির্ভরশীল ভেরিয়েবলের মান অনুমান করতে ব্যবহার করা হয়।
উদাহরণ:
from sklearn.linear_model import LinearRegression
import numpy as np
import matplotlib.pyplot as plt
# ডেটা তৈরি
X = np.array([1, 2, 3, 4, 5]).reshape(-1, 1)
Y = np.array([1, 2, 3, 4, 5])
# মডেল তৈরি
model = LinearRegression()
model.fit(X, Y)
# ভবিষ্যদ্বাণী করা
Y_pred = model.predict(X)
# গ্রাফ তৈরি করা
plt.scatter(X, Y, color='blue') # ডেটা পয়েন্ট
plt.plot(X, Y_pred, color='red') # রিগ্রেশন রেখা
plt.title('Simple Linear Regression')
plt.xlabel('X')
plt.ylabel('Y')
plt.show()
# মডেল প্যারামিটার
print("Intercept (β0):", model.intercept_)
print("Slope (β1):", model.coef_)
এটি এর সাথে সম্পর্কযুক্ত একটি সোজা রেখা আঁকবে এবং মডেল প্যারামিটার (ইন্টারসেপ্ট এবং স্লোপ) প্রদর্শন করবে।
২. Multiple Linear Regression (MLR)
Multiple Linear Regression হল একটি স্ট্যাটিস্টিক্যাল টেকনিক যা একাধিক স্বাধীন ভেরিয়েবলের সাহায্যে একটি নির্ভরশীল ভেরিয়েবলের মান অনুমান করে। এতে একাধিক ভেরিয়েবল দ্বারা এর পূর্বানুমান করা হয়।
ফর্মুলা:
Multiple Linear Regression এর সাধারণ সমীকরণ:
- হল নির্ভরশীল ভেরিয়েবল।
- হল স্বাধীন ভেরিয়েবল।
- হল ইন্টারসেপ্ট।
- হল স্লোপ/কোইফিসিয়েন্ট।
- হল ত্রুটি।
বৈশিষ্ট্য:
- একাধিক স্বাধীন ভেরিয়েবল (যেমন ) ব্যবহার করা হয়।
- সম্পর্কের শক্তি এবং প্রতিটি স্বাধীন ভেরিয়েবলের প্রভাব মূল্যায়ন করা হয়।
- এটি Prediction এবং Estimation এর জন্য ব্যবহার করা হয়।
উদাহরণ:
from sklearn.linear_model import LinearRegression
import numpy as np
import pandas as pd
# ডেটা তৈরি
X = np.array([[1, 2], [2, 3], [3, 4], [4, 5], [5, 6]]) # দুইটি স্বাধীন ভেরিয়েবল
Y = np.array([1, 2, 3, 4, 5]) # নির্ভরশীল ভেরিয়েবল
# মডেল তৈরি
model = LinearRegression()
model.fit(X, Y)
# ভবিষ্যদ্বাণী করা
Y_pred = model.predict(X)
# মডেল প্যারামিটার
print("Intercept (β0):", model.intercept_)
print("Coefficients (β1, β2):", model.coef_)
# ভবিষ্যদ্বাণী ফলাফল
print("Predicted Y:", Y_pred)
এটি দুইটি স্বাধীন ভেরিয়েবল (X1, X2) ব্যবহার করে নির্ভরশীল ভেরিয়েবল এর পূর্বানুমান করবে এবং মডেল প্যারামিটার (ইন্টারসেপ্ট এবং কোইফিসিয়েন্ট) প্রদর্শন করবে।
Simple Linear Regression এবং Multiple Linear Regression এর মধ্যে পার্থক্য
| বৈশিষ্ট্য | Simple Linear Regression (SLR) | Multiple Linear Regression (MLR) |
|---|---|---|
| স্বাধীন ভেরিয়েবল | একটিই (Single Independent Variable) | একাধিক (Multiple Independent Variables) |
| ধরন | সোজা রেখা (Straight Line) | সমতল বা উচ্চ মাত্রার সমীকরণ (Plane or Higher-Dimensional Equation) |
| ব্যবহার | একটি নির্ভরশীল ভেরিয়েবলের সঙ্গে একটি স্বাধীন ভেরিয়েবলের সম্পর্ক বিশ্লেষণ | একাধিক স্বাধীন ভেরিয়েবলের সাহায্যে একটি নির্ভরশীল ভেরিয়েবলের পূর্বানুমান |
| সমীকরণ | ||
| সীমাবদ্ধতা | কেবল একটির সঙ্গে সম্পর্ক বিশ্লেষণ | একাধিক ভেরিয়েবলের মধ্যে সম্পর্ক বিশ্লেষণ করতে পারে |
সারাংশ
- Simple Linear Regression: এটি একটিমাত্র স্বাধীন ভেরিয়েবল ব্যবহার করে একটি নির্ভরশীল ভেরিয়েবল এর সম্পর্ক নির্ধারণ করে। এটি একটি সোজা রেখার সমীকরণ তৈরি করে।
- Multiple Linear Regression: এটি একাধিক স্বাধীন ভেরিয়েবল ব্যবহার করে একটি নির্ভরশীল ভেরিয়েবল এর সম্পর্ক নির্ধারণ করে। এটি একটি উচ্চমাত্রার সমীকরণ তৈরি করে।
দুটি পদ্ধতিই Predictive Modeling এবং Relationship Analysis এর জন্য ব্যবহৃত হয়, তবে Multiple Linear Regression জটিল ডেটা বিশ্লেষণ করতে বেশি উপযোগী।
Linear Regression হল একটি সাধারাণ মেশিন লার্নিং অ্যালগরিদম যা একটি সোজা রেখা তৈরি করতে ডেটা পয়েন্টগুলির সম্পর্কের উপর ভিত্তি করে আউটপুট প্রেডিক্ট করতে ব্যবহৃত হয়। এটি মূলত Supervised Learning এর অধীনে আসে এবং ডেটার মধ্যে সঠিক সম্পর্ক খুঁজে বের করার জন্য ব্যবহৃত হয়। এই টিউটোরিয়ালে, আমরা Scikit-learn লাইব্রেরি ব্যবহার করে একটি Linear Regression মডেল তৈরি করব।
প্রক্রিয়া:
- ডেটাসেট লোড করা
- ডেটাকে Training এবং Testing অংশে ভাগ করা
- Linear Regression মডেল তৈরি এবং প্রশিক্ষণ
- মডেল পরীক্ষা এবং ফলাফল মূল্যায়ন করা
উদাহরণ: Linear Regression মডেল তৈরি করা
১. প্রয়োজনীয় লাইব্রেরি ইনস্টলেশন:
প্রথমে Scikit-learn, NumPy, এবং Matplotlib ইনস্টল করা প্রয়োজন যদি আপনি এগুলি ইনস্টল না করে থাকেন। আপনি এই কমান্ড ব্যবহার করে লাইব্রেরি ইনস্টল করতে পারেন:
pip install scikit-learn numpy matplotlib
২. কোড উদাহরণ:
# প্রয়োজনীয় লাইব্রেরি ইমপোর্ট
import numpy as np
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error, r2_score
# উদাহরণস্বরূপ ডেটা তৈরি করা (এখানে আমরা সরল ডেটা ব্যবহার করেছি)
# X হল ইনপুট বৈশিষ্ট্য (এখানে একমাত্র ফিচার)
# y হল টার্গেট আউটপুট (যার জন্য আমরা প্রেডিকশন করতে চাই)
X = np.array([[1], [2], [3], [4], [5], [6], [7], [8], [9], [10]]) # ইনপুট ডেটা
y = np.array([1, 2, 1.5, 3.5, 2.5, 4.5, 5, 6, 5.5, 7]) # আউটপুট ডেটা
# ডেটাকে ট্রেনিং এবং টেস্টিং সেটে ভাগ করা
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Linear Regression মডেল তৈরি করা
model = LinearRegression()
# মডেলটি ট্রেনিং ডেটা দিয়ে প্রশিক্ষিত করা
model.fit(X_train, y_train)
# মডেলটির প্রেডিকশন করা টেস্ট ডেটার উপর
y_pred = model.predict(X_test)
# ফলাফল মূল্যায়ন
print("Model Coefficients (Slope):", model.coef_)
print("Model Intercept (Intercept):", model.intercept_)
# মডেলের কর্মক্ষমতা মূল্যায়ন
print("Mean Squared Error:", mean_squared_error(y_test, y_pred))
print("R^2 Score:", r2_score(y_test, y_pred))
# গ্রাফে ফলাফল প্লট করা
plt.scatter(X_test, y_test, color='blue', label='Actual data') # প্রকৃত ডেটা
plt.plot(X_test, y_pred, color='red', label='Regression line') # রিগ্রেশন লাইন
plt.xlabel('X')
plt.ylabel('y')
plt.title('Linear Regression')
plt.legend()
plt.show()
৩. কোড বিশ্লেষণ:
- ডেটা তৈরি করা: এখানে আমরা কৃত্রিম ডেটা তৈরি করেছি, যেখানে X হল ইনপুট ভ্যালু এবং y হল আউটপুট ভ্যালু।
- train_test_split: ডেটা দুটি ভাগে ভাগ করা হয়, একটি ট্রেনিং সেট এবং একটি টেস্ট সেট। এখানে ৮০% ডেটা ট্রেনিং সেট এবং ২০% টেস্ট সেট হিসেবে ব্যবহৃত হচ্ছে।
- Linear Regression মডেল তৈরি করা:
LinearRegression()ক্লাস ব্যবহার করে আমরা মডেল তৈরি করেছি এবং ট্রেনিং ডেটা দিয়ে মডেলটি প্রশিক্ষিত করেছি। - Model Prediction:
predict()ফাংশন ব্যবহার করে আমরা টেস্ট ডেটার ওপর মডেল প্রেডিকশন করেছি। - Model Evaluation:
mean_squared_errorএবংr2_scoreব্যবহার করে মডেলের কর্মক্ষমতা মূল্যায়ন করা হয়েছে। R² score মডেলের ভালত্ব নির্দেশ করে এবং Mean Squared Error (MSE) নির্ধারণ করে মডেলের ত্রুটি। - গ্রাফিকাল ফলাফল: Matplotlib এর মাধ্যমে আমরা মডেল এবং প্রকৃত ডেটার সাথে রিগ্রেশন লাইনের গ্রাফ প্লট করেছি।
৪. আউটপুট:
- Model Coefficients (Slope): মডেলের গ্রেডিয়েন্ট বা স্লোপ যা নির্দেশ করে ইনপুট এবং আউটপুটের মধ্যে সম্পর্ক কতটা তীক্ষ্ণ।
- Model Intercept (Intercept): মডেলের ইন্টারসেপ্ট, যা রিগ্রেশন লাইনের Y অক্ষকে কেটে যায়।
- Mean Squared Error (MSE): মডেলের ত্রুটির গড় স্কয়ার।
- R² Score: মডেলের কার্যকারিতা, যা ১ এর কাছাকাছি হলে ভালো মানে।
৫. গ্রাফ:
- এক্স-অক্ষ (X) হল ইনপুট ডেটা এবং ওয়াই-অক্ষ (Y) হল আউটপুট ডেটা।
- প্রকৃত ডেটা (blue points) এবং রিগ্রেশন লাইন (red line) পাশাপাশি প্রদর্শিত হবে।
সারাংশ:
- Linear Regression মডেল একটি সরল রেখার মাধ্যমে ইনপুট এবং আউটপুটের সম্পর্ক নির্ধারণ করে।
- Scikit-learn লাইব্রেরি ব্যবহার করে মডেল তৈরি এবং মূল্যায়ন করা সহজ।
- এই মডেলটি Train/Test Split কৌশল ব্যবহার করে প্রশিক্ষণ এবং টেস্ট ডেটা দিয়ে পরীক্ষা করা হয়।
এটি একটি মৌলিক Linear Regression মডেল, যেটি মেশিন লার্নিং এ মডেল ট্রেনিং এবং পরীক্ষণের জন্য খুবই কার্যকরী।
মডেল ইভ্যালুয়েশন হল মেশিন লার্নিং প্রক্রিয়ার একটি গুরুত্বপূর্ণ অংশ, যেখানে মডেলের কর্মক্ষমতা বা কার্যকারিতা নির্ধারণ করা হয়। এটি মডেলের সঠিকতা, পূর্বানুমান ক্ষমতা এবং প্রেডিকশনের নির্ভুলতা যাচাই করতে সাহায্য করে। মডেল ইভ্যালুয়েশন করার জন্য কিছু জনপ্রিয় মেট্রিক্স রয়েছে, যেমন R-Squared এবং Mean Squared Error (MSE), যা বিশেষ করে রিগ্রেশন মডেল ইভ্যালুয়েট করতে ব্যবহৃত হয়।
১. R-Squared (R²)
R-Squared একটি পরিমাপ যা আমাদের বলে দেয় যে, নির্দিষ্ট ইনপুট বৈশিষ্ট্য (features) কতটা ভালভাবে আউটপুট ভেরিয়েবল (dependent variable) এর ভ্যারিয়েশন ব্যাখ্যা করতে পারে। এটি ভেরিয়েশন বা পরিবর্তন বোঝাতে ব্যবহৃত হয়, অর্থাৎ ডেটার কতটুকু অংশ মডেল দ্বারা ব্যাখ্যা করা সম্ভব।
R-Squared এর মান:
- 0 থেকে 1 এর মধ্যে থাকে।
- R² = 1: সম্পূর্ণ সঠিক পূর্বানুমান (perfect prediction), যেখানে মডেল 100% পরিবর্তন ব্যাখ্যা করতে সক্ষম।
- R² = 0: পূর্বানুমান একেবারেই সঠিক নয়, যেখানে মডেল কোন ভ্যারিয়েশন ব্যাখ্যা করতে সক্ষম নয়।
- R² < 0: মডেলটি সরাসরি খারাপ, এবং এর থেকে বেটার পূর্বানুমান সরল গড় ব্যবহার করা হতে পারে।
R-Squared এর সূত্র:
- : আসল ভ্যালু (True value)
- : পূর্বানুমান (Predicted value)
- : আসল ভ্যালুর গড়
উদাহরণ:
from sklearn.metrics import r2_score
# আসল এবং পূর্বানুমান ভ্যালু
y_true = [3, -0.5, 2, 7]
y_pred = [2.5, 0.0, 2, 8]
# R-Squared ক্যালকুলেশন
r2 = r2_score(y_true, y_pred)
print("R-Squared:", r2)
২. Mean Squared Error (MSE)
Mean Squared Error (MSE) একটি স্ট্যাটিস্টিক্যাল পরিমাপ যা মডেলের পূর্বানুমানগুলির এবং আসল ভ্যালুগুলির মধ্যে গড় বর্গমূল ত্রুটি (squared error) নির্ধারণ করে। এটি মডেলের পূর্বানুমানগুলির সঠিকতা মাপতে ব্যবহৃত হয়। সাধারণত MSE কম থাকা ভাল, কারণ এর মান যত কম, মডেলের পূর্বানুমান ততই সঠিক।
MSE এর সূত্র:
- : আসল ভ্যালু
- : পূর্বানুমান
- : নমুনার সংখ্যা
উদাহরণ:
from sklearn.metrics import mean_squared_error
# আসল এবং পূর্বানুমান ভ্যালু
y_true = [3, -0.5, 2, 7]
y_pred = [2.5, 0.0, 2, 8]
# MSE ক্যালকুলেশন
mse = mean_squared_error(y_true, y_pred)
print("Mean Squared Error:", mse)
৩. Root Mean Squared Error (RMSE)
Root Mean Squared Error (RMSE) হল MSE এর বর্গমূল। এটি আসল ত্রুটির একটি প্রাকৃতিক পরিমাপ হিসেবে কাজ করে এবং এই কারণে এটি ব্যবহারিকভাবে অধিক স্বচ্ছ। RMSE বেশি হলে বুঝতে হবে মডেলের পূর্বানুমান ত্রুটি বেশি।
RMSE এর সূত্র:
উদাহরণ:
import numpy as np
# RMSE ক্যালকুলেশন
rmse = np.sqrt(mse)
print("Root Mean Squared Error:", rmse)
সারাংশ
- R-Squared (R²): মডেলটি ডেটার ভ্যারিয়েশন কতটা ব্যাখ্যা করতে সক্ষম তার একটি পরিমাপ। এটি 0 থেকে 1 এর মধ্যে থাকে, যেখানে 1 মানে মডেলটি পুরোপুরি সঠিক পূর্বানুমান করছে।
- Mean Squared Error (MSE): পূর্বানুমান ত্রুটির গড় বর্গমূল। এটি মডেলের ত্রুটির একটি পরিমাপ, এবং কম MSE মানে মডেল ভালো পূর্বানুমান করছে।
- Root Mean Squared Error (RMSE): MSE এর বর্গমূল, যা আরও প্রাকৃতিক ত্রুটি পরিমাপ প্রদান করে।
এই ইভ্যালুয়েশন মেট্রিক্সগুলির মাধ্যমে আপনি আপনার রিগ্রেশন মডেলগুলোর কর্মক্ষমতা পর্যালোচনা করতে পারেন এবং মডেলকে আরও উন্নত করতে পারেন।
Read more