Time Series Data Preprocessing

Machine Learning - টাইম সিরিজ (Time Series)
123
123

টাইম সিরিজ ডেটা প্রিপ্রসেসিং হল টাইম সিরিজ ডেটাকে বিশ্লেষণের জন্য প্রস্তুত করার প্রক্রিয়া। এটি গুরুত্বপূর্ণ, কারণ টাইম সিরিজ ডেটা প্রায়ই কিছু সমস্যা বা বৈশিষ্ট্য নিয়ে আসে, যেমন ট্রেন্ড, সিজনালিটি, মিসিং ভ্যালু (missing values), আউটলায়ার (outliers) ইত্যাদি, যা পূর্বাভাস বা বিশ্লেষণের ক্ষেত্রে প্রতিবন্ধকতা সৃষ্টি করতে পারে। তাই ডেটাকে প্রিপ্রসেসিং করার মাধ্যমে এই সমস্যা সমাধান করা হয়।

নিচে টাইম সিরিজ ডেটা প্রিপ্রসেসিংয়ের প্রধান ধাপগুলো আলোচনা করা হলো:


১. মিসিং ভ্যালু (Missing Values) হ্যান্ডলিং

বর্ণনা: টাইম সিরিজ ডেটাতে মাঝে মাঝে কিছু ডেটা পয়েন্ট অনুপস্থিত থাকতে পারে। মিসিং ভ্যালু থাকলে বিশ্লেষণ বা মডেলিং প্রক্রিয়া ব্যাহত হতে পারে। তাই ডেটার মিসিং ভ্যালুগুলো সঠিকভাবে হ্যান্ডল করা গুরুত্বপূর্ণ।

পদ্ধতি:

  • ফরওয়ার্ড বা ব্যাকওয়ার্ড ফিলিং: পূর্ববর্তী বা পরবর্তী ডেটা পয়েন্টের মান ব্যবহার করে মিসিং ভ্যালু পূর্ণ করা।
  • ইম্পুটেশন (Imputation): গড় (mean), মধ্যম (median), বা পূর্বানুমানিত (predicted) মান দিয়ে মিসিং ভ্যালু পূর্ণ করা।
  • ইন্টারপোলেশন (Interpolation): সময়ভিত্তিক ইন্টারপোলেশন পদ্ধতিতে মিসিং ভ্যালু পূর্ণ করা।

উদাহরণ:

import pandas as pd

# Sample time series data with missing values
data = {'Date': ['2020-01-01', '2020-01-02', '2020-01-03', '2020-01-04', '2020-01-05'],
        'Value': [100, None, 120, None, 130]}
df = pd.DataFrame(data)

# Fill missing values using forward fill
df['Value'] = df['Value'].fillna(method='ffill')

২. আউটলায়ার (Outliers) চিহ্নিতকরণ ও হ্যান্ডলিং

বর্ণনা: আউটলায়ার হল এমন ডেটা পয়েন্ট যা অন্যান্য ডেটা পয়েন্টের তুলনায় অস্বাভাবিকভাবে বেশি বা কম। আউটলায়ার টাইম সিরিজ ডেটার বিশ্লেষণ এবং পূর্বাভাসে বিরূপ প্রভাব ফেলতে পারে। তাই আউটলায়ার চিহ্নিত করা এবং সেগুলোকে সঠিকভাবে হ্যান্ডল করা গুরুত্বপূর্ণ।

পদ্ধতি:

  • যথাযথ পরিসীমা চিহ্নিত করা: এক্সট্রিম ভ্যালু চিহ্নিত করতে ইন্টার-কোয়ার্টাইল রেঞ্জ (IQR) পদ্ধতি ব্যবহার করা।
  • ডেটা ট্রান্সফরমেশন: লগ বা রুট ট্রান্সফরমেশন ব্যবহার করা, যাতে আউটলায়ারগুলোর প্রভাব কমানো যায়।
  • আউটলায়ার সরানো বা পরিবর্তন করা: কিছু ক্ষেত্রে আউটলায়ার সরিয়ে ফেলা বা সামঞ্জস্য করা হয়।

উদাহরণ:

import numpy as np

# Detect outliers using z-score (greater than 3 standard deviations)
from scipy import stats

data = np.random.normal(0, 1, 100)
outliers = np.where(np.abs(stats.zscore(data)) > 3)[0]

৩. টাইম সিরিজের স্টেশনারিটি চেক করা

বর্ণনা: টাইম সিরিজ বিশ্লেষণের জন্য স্টেশনারিটি একটি গুরুত্বপূর্ণ উপাদান। স্টেশনারিটি নিশ্চিত করা না থাকলে টাইম সিরিজের মডেলিং সঠিকভাবে কাজ নাও করতে পারে। তাই ডেটাকে স্টেশনারি করার প্রক্রিয়া করা হয়, যেমন ট্রেন্ড বা সিজনালিটি সরানো।

পদ্ধতি:

  • ডিফারেন্সিং (Differencing): ডেটার পার্থক্য বের করে ট্রেন্ড সরানো (যেমন: প্রথম পার্থক্য বা দ্বিতীয় পার্থক্য)।
  • লগ ট্রান্সফরমেশন: ডেটার গড় এবং ভ্যারিয়েন্স সরানোর জন্য লগ ট্রান্সফরমেশন ব্যবহার করা।
  • স্টেশনারিটি টেস্ট: Augmented Dickey-Fuller (ADF) টেস্ট ব্যবহার করে স্টেশনারিটি পরীক্ষা করা।

উদাহরণ:

from statsmodels.tsa.stattools import adfuller

# Augmented Dickey-Fuller test
result = adfuller(df['Value'].dropna())
print(f'ADF Statistic: {result[0]}')
print(f'p-value: {result[1]}')

৪. ট্রেন্ড এবং সিজনাল প্যাটার্নের সরানো

বর্ণনা: টাইম সিরিজে ট্রেন্ড এবং সিজনাল প্যাটার্ন থাকতে পারে, যা পূর্বাভাসে প্রভাব ফেলতে পারে। তাই এই প্যাটার্নগুলিকে সরানো প্রয়োজন। এটি স্টেশনারিটি অর্জন করার জন্য সহায়ক।

পদ্ধতি:

  • সিজনাল ডিফারেন্সিং: সিজনাল পরিবর্তনগুলি সরাতে একটি নির্দিষ্ট সময়ের পরের মানের সাথে পার্থক্য বের করা।
  • মুভিং অ্যাভারেজ (Moving Average): ট্রেন্ড সরানোর জন্য মুভিং অ্যাভারেজ ব্যবহার করা।

উদাহরণ:

df['Value_differenced'] = df['Value'] - df['Value'].shift(1)

৫. ডেটার স্কেলিং এবং স্কেলিং টেকনিকস

বর্ণনা: কিছু ক্ষেত্রে, ডেটার স্কেলিং বা নর্মালাইজেশন প্রয়োজন, বিশেষত যদি টাইম সিরিজের মধ্যে বিভিন্ন ধরনের স্কেল থাকে। এটি মডেলিং এবং তুলনামূলক বিশ্লেষণে সহায়ক।

পদ্ধতি:

  • মিন-ম্যান স্কেলিং: ডেটার মানকে 0 থেকে 1 এর মধ্যে স্কেল করা।
  • স্ট্যান্ডার্ড স্কেলিং: ডেটাকে গড় শূন্য এবং ভ্যারিয়েন্স একের সমান করা।

উদাহরণ:

from sklearn.preprocessing import MinMaxScaler

scaler = MinMaxScaler()
df['Scaled_Value'] = scaler.fit_transform(df[['Value']])

টাইম সিরিজ ডেটা প্রিপ্রসেসিং হল টাইম সিরিজ ডেটাকে বিশ্লেষণের জন্য প্রস্তুত করার প্রক্রিয়া। মিসিং ভ্যালু, আউটলায়ার, স্টেশনারিটি এবং সিজনাল প্যাটার্ন হ্যান্ডলিংসহ ডেটাকে সঠিকভাবে প্রিপ্রসেস করা হয়। প্রিপ্রসেসিং ডেটার গুণমান এবং মডেলিংয়ের কার্যকারিতা বাড়াতে সহায়ক।

Content added By

Missing Data Handle করা

89
89

টাইম সিরিজ ডেটায় মিসিং ডেটা একটি সাধারণ সমস্যা। মিসিং ডেটা থাকার কারণে ডেটার বিশ্লেষণ বা মডেলিং প্রক্রিয়া প্রভাবিত হতে পারে, তাই মিসিং ডেটা সঠিকভাবে হ্যান্ডল করা অত্যন্ত গুরুত্বপূর্ণ। মিসিং ডেটা হ্যান্ডলিংয়ের বিভিন্ন পদ্ধতি রয়েছে, যা নির্ভর করে ডেটার প্রকৃতি, মিসিং ভ্যালুর পরিমাণ এবং গবেষণার উদ্দেশ্যের উপর।

নিচে মিসিং ডেটা হ্যান্ডলিংয়ের কিছু সাধারণ পদ্ধতি আলোচনা করা হলো:


১. ফরওয়ার্ড ফিলিং (Forward Filling)

বর্ণনা: ফরওয়ার্ড ফিলিং হল এমন একটি পদ্ধতি যেখানে মিসিং ভ্যালু পূর্ণ করার জন্য পূর্ববর্তী পরিমাপ বা মানটি ব্যবহার করা হয়। অর্থাৎ, মিসিং ভ্যালু আগে থাকা ডেটা দিয়ে পূর্ণ করা হয়।

পদ্ধতি:

  • মিসিং ভ্যালুর জন্য আগের ভ্যালু (previous value) পূর্ণ করা।

উদাহরণ:

import pandas as pd

# Sample data with missing values
data = {'Date': ['2020-01-01', '2020-01-02', '2020-01-03', '2020-01-04', '2020-01-05'],
        'Value': [100, None, 120, None, 130]}
df = pd.DataFrame(data)

# Forward fill to handle missing values
df['Value'] = df['Value'].fillna(method='ffill')
print(df)

২. ব্যাকওয়ার্ড ফিলিং (Backward Filling)

বর্ণনা: ব্যাকওয়ার্ড ফিলিং হল একটি পদ্ধতি যেখানে মিসিং ভ্যালু পূর্ণ করার জন্য পরবর্তী পরিমাপ বা মানটি ব্যবহার করা হয়। অর্থাৎ, মিসিং ভ্যালুর জন্য পরবর্তী ডেটা দিয়ে পূর্ণ করা হয়।

পদ্ধতি:

  • মিসিং ভ্যালুর জন্য পরবর্তী ডেটার মানটি ব্যবহার করা।

উদাহরণ:

# Backward fill to handle missing values
df['Value'] = df['Value'].fillna(method='bfill')
print(df)

৩. গড় (Mean), মধ্যম (Median), বা মোড (Mode) দিয়ে ইম্পুটেশন

বর্ণনা: এই পদ্ধতিতে মিসিং ভ্যালু পূর্ণ করার জন্য ডেটার গড় (mean), মধ্যম (median), বা মোড (mode) মান ব্যবহার করা হয়। এটি সাধারণত তখন ব্যবহার করা হয় যখন মিসিং ভ্যালুর পরিমাণ কম এবং ডেটার মধ্যে কোনও বিশেষ ট্রেন্ড না থাকে।

পদ্ধতি:

  • মিসিং ভ্যালু পূর্ণ করার জন্য পুরো ডেটার গড়, মধ্যম বা মোড ব্যবহার করা।

উদাহরণ:

# Impute missing values with mean
df['Value'] = df['Value'].fillna(df['Value'].mean())
print(df)

৪. ইন্টারপোলেশন (Interpolation)

বর্ণনা: ইন্টারপোলেশন হল একটি প্রক্রিয়া যেখানে মিসিং ভ্যালুর জন্য দুটি পরিচিত মানের মধ্যে একটি অনুমানিত মান নির্ধারণ করা হয়। এটি বিভিন্ন পদ্ধতির মাধ্যমে করা যেতে পারে, যেমন লিনিয়ার ইন্টারপোলেশন বা পলিনোমিয়াল ইন্টারপোলেশন

পদ্ধতি:

  • সাধারণত লিনিয়ার ইন্টারপোলেশন ব্যবহার করা হয়, যেখানে দুটি সমান্তরাল ডেটার মধ্যে একটি সরল রেখা দিয়ে ভ্যালু পূর্ণ করা হয়।

উদাহরণ:

# Interpolation to handle missing values
df['Value'] = df['Value'].interpolate(method='linear')
print(df)

৫. ডেটা সরানো (Removing Data)

বর্ণনা: যখন মিসিং ভ্যালুর পরিমাণ অত্যধিক এবং তা ইম্পুটেশন বা ফিলিং পদ্ধতিতে পূর্ণ করা সম্ভব নয়, তখন এই ভ্যালুগুলো সরিয়ে ফেলা হয়। এটি সাধারণত তখন করা হয় যখন মিসিং ভ্যালুর কারণে ডেটার গুণমান প্রভাবিত হয়।

পদ্ধতি:

  • মিসিং ভ্যালু সম্বলিত সারি বা কলাম মুছে ফেলা।

উদাহরণ:

# Remove rows with missing values
df = df.dropna()
print(df)

৬. মডেল ভিত্তিক ইম্পুটেশন (Model-Based Imputation)

বর্ণনা: এই পদ্ধতিতে, একটি পরিসংখ্যানিক মডেল বা মেশিন লার্নিং মডেল ব্যবহার করে মিসিং ভ্যালু পূর্ণ করা হয়। মডেলটি ডেটার অন্যান্য বৈশিষ্ট্য ব্যবহার করে মিসিং ভ্যালুর জন্য অনুমান তৈরি করে।

পদ্ধতি:

  • যেমন, K-Nearest Neighbors (KNN) বা Regressions ব্যবহার করে মিসিং ভ্যালু পূর্ণ করা।

সারাংশ

মিসিং ডেটা হ্যান্ডলিং হল একটি গুরুত্বপূর্ণ ধাপ টাইম সিরিজ ডেটা বিশ্লেষণ এবং মডেলিংয়ের ক্ষেত্রে। বিভিন্ন পদ্ধতির মাধ্যমে মিসিং ডেটাকে সঠিকভাবে পূর্ণ করা যায়, যেমন ফরওয়ার্ড/ব্যাকওয়ার্ড ফিলিং, ইম্পুটেশন (গড়, মধ্যম), ইন্টারপোলেশন, বা মডেল ভিত্তিক ইম্পুটেশন। এটি ডেটার গুণমান এবং মডেলিংয়ের কার্যকারিতা বাড়াতে সহায়ক।

Content added By

Data Transformation Techniques (Log Transformation, Differencing)

125
125

ডেটা ট্রান্সফরমেশন হল এমন একটি প্রক্রিয়া যা ডেটাকে বিশ্লেষণ এবং মডেলিংয়ের জন্য উপযুক্ত করতে সাহায্য করে। টাইম সিরিজ বিশ্লেষণের ক্ষেত্রে কিছু সাধারণ ট্রান্সফরমেশন টেকনিক ব্যবহার করা হয়, যার মধ্যে লগ ট্রান্সফরমেশন (Log Transformation) এবং ডিফারেন্সিং (Differencing) অন্যতম।

নিচে এই দুটি টেকনিক বিস্তারিতভাবে আলোচনা করা হলো:


১. লগ ট্রান্সফরমেশন (Log Transformation)

বর্ণনা: লগ ট্রান্সফরমেশন হল একটি মেথড যেখানে ডেটার প্রতিটি মানের উপর লগ ফাংশন প্রয়োগ করা হয়। এটি ডেটার স্কেল বা পরিসীমা সংকুচিত করতে সহায়ক, এবং বিশেষত যখন ডেটাতে বৃহৎ মান থাকে, তখন লগ ট্রান্সফরমেশন তার পার্থক্য এবং ভ্যারিয়েন্সকে কমিয়ে আনতে সাহায্য করে। এটি অনেক সময় আউটলায়ার বা বড় পরিবর্তনগুলোর প্রভাব কমাতে ব্যবহৃত হয়।

কেন ব্যবহৃত হয়:

  • স্কেলিং: বড় পরিসরের মানকে ছোট পরিসরে নিয়ে আসা।
  • আউটলায়ার হ্যান্ডলিং: অত্যন্ত বড় মান বা আউটলায়ারের প্রভাব কমানো।
  • হোমোজেনাইজিং ভ্যারিয়েন্স: ডেটার ভ্যারিয়েন্স বা বিস্তারকে আরো সমান করা।

ফর্মুলা:

y=log(y)

যেখানে y হল মূল ডেটা এবং y হল লগ ট্রান্সফর্মড ডেটা।

উদাহরণ:

import numpy as np
import matplotlib.pyplot as plt

# Sample data with large values
data = [10, 100, 1000, 10000, 100000]

# Apply log transformation
log_transformed_data = np.log(data)

# Plotting the original vs log-transformed data
plt.figure(figsize=(10, 6))
plt.subplot(1, 2, 1)
plt.plot(data)
plt.title('Original Data')

plt.subplot(1, 2, 2)
plt.plot(log_transformed_data)
plt.title('Log Transformed Data')

plt.show()

উদাহরণ ব্যাখ্যা: এখানে, বড় পরিসরের ডেটা (যেমন 100, 1000, 10000) লগ ট্রান্সফর্মেশনের মাধ্যমে ছোট পরিসরে রূপান্তরিত হয়। এটি ডেটার পার্থক্য বা বৈচিত্র্যকে সংকুচিত করে এবং বিশ্লেষণকে সহজ করে।


২. ডিফারেন্সিং (Differencing)

বর্ণনা: ডিফারেন্সিং হল একটি পদ্ধতি যা টাইম সিরিজের মধ্যে ট্রেন্ড বা সিজনালিটি সরানোর জন্য ব্যবহৃত হয়। এটি মূলত দুটি পরবর্তী সময় পয়েন্টের মধ্যে পার্থক্য বের করা। ডিফারেন্সিং টাইম সিরিজের স্টেশনারিটি অর্জনের জন্য একটি গুরুত্বপূর্ণ টেকনিক, কারণ স্টেশনারিটি নিশ্চিত করা না থাকলে মডেলিং সঠিকভাবে কাজ নাও করতে পারে।

কেন ব্যবহৃত হয়:

  • স্টেশনারিটি অর্জন: ডেটার ট্রেন্ড বা সিজনাল প্যাটার্ন সরানোর জন্য।
  • পূর্বানুমান সহজ করা: ডেটার বর্তমান মান এবং পূর্ববর্তী মানের পার্থক্য নিয়ে কাজ করা, যা মডেলিং সহজ করে।

ধরন:

  1. প্রথম পার্থক্য (First Differencing): পরবর্তী সময় পয়েন্টের মান থেকে পূর্ববর্তী সময় পয়েন্টের মান বিয়োগ করা।

    yt=ytyt1

  2. দ্বিতীয় পার্থক্য (Second Differencing): প্রথম পার্থক্যের পরবর্তী পার্থক্য।

    yt=ytyt2

উদাহরণ:

import pandas as pd

# Sample time series data
data = pd.Series([100, 120, 150, 130, 160])

# First differencing
first_diff = data.diff().dropna()

# Plotting original vs differenced data
plt.figure(figsize=(10, 6))
plt.subplot(1, 2, 1)
plt.plot(data)
plt.title('Original Data')

plt.subplot(1, 2, 2)
plt.plot(first_diff)
plt.title('Differenced Data')

plt.show()

উদাহরণ ব্যাখ্যা: এখানে, প্রথম পার্থক্য প্রয়োগ করার পর, ডেটার প্রতিটি মানের মধ্যে পার্থক্য বের করা হয়েছে, যা ট্রেন্ড সরাতে সাহায্য করেছে এবং স্টেশনারিটি অর্জন করা সহজ হয়েছে।


সারাংশ

  • লগ ট্রান্সফরমেশন: বড় ডেটা মান এবং আউটলায়ারগুলোর প্রভাব কমাতে ব্যবহার করা হয়। এটি স্কেলিং এবং ডেটার ভ্যারিয়েন্স হোমোজেনাইজ করতে সহায়ক।
  • ডিফারেন্সিং: ডেটার ট্রেন্ড বা সিজনাল প্যাটার্ন সরাতে ব্যবহৃত হয়, যা স্টেশনারিটি অর্জনের জন্য গুরুত্বপূর্ণ। এটি টাইম সিরিজ মডেলিং এবং পূর্বাভাসের জন্য সুবিধাজনক।

এই দুটি টেকনিক টাইম সিরিজ বিশ্লেষণের জন্য অত্যন্ত গুরুত্বপূর্ণ এবং ডেটাকে মডেলিংয়ের জন্য উপযুক্ত করে তোলে।

Content added By

Data Smoothing Techniques (Moving Average, Exponential Smoothing)

98
98

টাইম সিরিজ ডেটা বিশ্লেষণ করার সময়, অনেক সময় ডেটার মধ্যে অস্থিরতা বা অস্থায়ী পরিবর্তন থাকে, যা মূল প্রবণতা বা প্যাটার্নের সাথে সম্পর্কিত নয়। এই ধরনের অস্থিরতা দূর করার জন্য ডেটা স্মুথিং (Data Smoothing) পদ্ধতি ব্যবহার করা হয়, যা ডেটার শোর বা র্যান্ডম ভ্যারিয়েশন কমাতে সাহায্য করে। এর ফলে ডেটার underlying ট্রেন্ড এবং সিজনাল প্যাটার্ন স্পষ্টভাবে দেখা যায়।

স্মুথিং টেকনিক দুটি প্রধান ধরনের:

  1. মুভিং এভারেজ (Moving Average)
  2. এক্সপোনেনশিয়াল স্মুথিং (Exponential Smoothing)

১. মুভিং এভারেজ (Moving Average)

বর্ণনা: মুভিং এভারেজ হল একটি সাধারণ পদ্ধতি যেখানে ডেটার একটি নির্দিষ্ট উইন্ডো (window) ব্যবহার করে ডেটার গড় হিসাব করা হয়। এটি একটি টাইম সিরিজের অস্থিরতা কমাতে সাহায্য করে এবং ডেটার ট্রেন্ড স্পষ্ট করে তোলে।

ধরন:

  1. সাধারণ মুভিং এভারেজ (Simple Moving Average, SMA): এই পদ্ধতিতে, ডেটার গত কয়েকটি পরিমাপের গড় নেওয়া হয়, যেটি সময়ের সাথে প্রতিনিয়ত আপডেট হয়।
  2. ওয়েটেড মুভিং এভারেজ (Weighted Moving Average, WMA): এখানে বিভিন্ন সময়সীমার মানগুলোর জন্য আলাদা ওজন (weight) নির্ধারণ করা হয়, যাতে সাম্প্রতিক মানগুলোর বেশি গুরুত্ব দেয়া হয়।

উদাহরণ: যদি আমরা 5 দিনের মুভিং এভারেজ ব্যবহার করি, তবে প্রতিটি দিনের গড় হবে গত 5 দিনের মানের গড়।

গাণিতিক সূত্র (SMA):

SMAt=Xt1+Xt2++Xtkk

যেখানে, Xt হল টাইম সিরিজের মান এবং k হল উইন্ডোর আকার (যেমন, 5 দিন)।

Python কোড উদাহরণ (SMA):

import pandas as pd
import numpy as np

# Sample time series data
data = [10, 20, 30, 40, 50, 60, 70]
df = pd.DataFrame(data, columns=['Value'])

# Apply 3-day moving average
df['3-day MA'] = df['Value'].rolling(window=3).mean()

২. এক্সপোনেনশিয়াল স্মুথিং (Exponential Smoothing)

বর্ণনা: এক্সপোনেনশিয়াল স্মুথিং একটি উন্নত স্মুথিং পদ্ধতি, যেখানে সর্বশেষ পর্যবেক্ষণ বা ডেটা পয়েন্টকে আরও বেশি গুরুত্ব দেওয়া হয়। এটি একটি ওজনযুক্ত গড় পদ্ধতি যেখানে পুরানো ডেটার ওজন কমিয়ে নতুন ডেটার ওজন বাড়ানো হয়। এক্সপোনেনশিয়াল স্মুথিং পদ্ধতিতে, প্রতিটি পরবর্তী পরিমাপের জন্য গড় হিসাব করা হয় এবং সেই গড়ের উপর একটি ধীরে ধীরে কমতে থাকা এক্সপোনেনশিয়াল ফ্যাক্টর প্রয়োগ করা হয়।

ধরন:

  1. সাধারণ এক্সপোনেনশিয়াল স্মুথিং (Simple Exponential Smoothing): যখন টাইম সিরিজে ট্রেন্ড বা সিজনাল প্যাটার্ন না থাকে, তখন এই পদ্ধতি ব্যবহার করা হয়।
  2. ট্রেন্ড-কোরেক্টেড এক্সপোনেনশিয়াল স্মুথিং (Holt’s Linear Trend Model): এই পদ্ধতিতে ডেটায় ট্রেন্ড থাকলে সেটি সংশোধন করা হয়।
  3. সিজনাল এক্সপোনেনশিয়াল স্মুথিং (Holt-Winters Seasonal Model): সিজনাল প্যাটার্ন থাকলে এই পদ্ধতি ব্যবহার করা হয়।

গাণিতিক সূত্র (Simple Exponential Smoothing):

St=αXt+(1α)St1

যেখানে:

  • St হল স্মুথড মান,
  • Xt হল বর্তমান পর্যবেক্ষণ,
  • St1 হল পূর্ববর্তী স্মুথড মান,
  • α হল স্মুথিং প্যারামিটার (0 থেকে 1 এর মধ্যে থাকে)।

Python কোড উদাহরণ (Exponential Smoothing):

import pandas as pd
from statsmodels.tsa.holtwinters import ExponentialSmoothing

# Sample time series data
data = [10, 20, 30, 40, 50, 60, 70]
df = pd.DataFrame(data, columns=['Value'])

# Apply Exponential Smoothing
model = ExponentialSmoothing(df['Value'], trend='add', seasonal='add', seasonal_periods=3)
fit_model = model.fit()
df['Exponential Smoothing'] = fit_model.fittedvalues

তুলনা: মুভিং এভারেজ বনাম এক্সপোনেনশিয়াল স্মুথিং

বৈশিষ্ট্যমুভিং এভারেজ (Moving Average)এক্সপোনেনশিয়াল স্মুথিং (Exponential Smoothing)
গাণিতিক পদ্ধতিগড় হিসাব করাএক্সপোনেনশিয়াল ফ্যাক্টর ব্যবহার করা
ওজনসমানভাবে সব মানের ওজন দেওয়াসাম্প্রতিক মানগুলোর ওজন বেশি
ব্যবহারসাধারণত ট্রেন্ড বা সিজনালিটি ছাড়া ডেটায়ট্রেন্ড বা সিজনালিটির জন্য উপযুক্ত
সরলতাসহজ এবং কম্পিউটেশনালভাবে সস্তাএকটু জটিল এবং বেশি কম্পিউটেশনাল
ডেটা প্রতি প্রতিক্রিয়াধীরদ্রুত প্রতিক্রিয়া

সারাংশ

ডেটা স্মুথিং টেকনিকগুলো, যেমন মুভিং এভারেজ এবং এক্সপোনেনশিয়াল স্মুথিং, টাইম সিরিজ ডেটার মধ্যে অস্থিরতা কমানোর জন্য ব্যবহৃত হয়। মুভিং এভারেজ পদ্ধতি সাধারণত সহজ এবং কাস্টমাইজযোগ্য, তবে এক্সপোনেনশিয়াল স্মুথিং পদ্ধতি আরও গতিশীল এবং সাম্প্রতিক ডেটা পয়েন্টের জন্য বেশি গুরুত্ব দেয়। এক্সপোনেনশিয়াল স্মুথিং দীর্ঘমেয়াদী ট্রেন্ড এবং সিজনালিটি বিশ্লেষণের জন্য উপযুক্ত, যেখানে মুভিং এভারেজ সাধারণত স্বল্পমেয়াদী অস্থিরতা দূর করার জন্য ব্যবহৃত হয়।

Content added By

Time Series Data Shifting এবং Lag Features তৈরি করা

75
75

টাইম সিরিজ বিশ্লেষণে শিফটিং এবং ল্যাগ ফিচার তৈরি করা খুবই গুরুত্বপূর্ণ। এগুলো টাইম সিরিজ মডেলিংয়ের জন্য অতিরিক্ত তথ্য তৈরি করতে সহায়ক, যেমন ভবিষ্যতের মান পূর্বের মানের উপর নির্ভর করে থাকে।

১. টাইম সিরিজ শিফটিং (Time Series Shifting)

শিফটিং হল একটি পদ্ধতি, যার মাধ্যমে টাইম সিরিজের ডেটাকে এক বা একাধিক সময় পয়েন্ট পেছনে (lag) বা সামনে (lead) সরানো হয়। এটি টাইম সিরিজের অতীত ডেটা ভবিষ্যতের ডেটার সাথে সম্পর্কিত করতে ব্যবহৃত হয়। সাধারণত, শিফটিং এর মাধ্যমে পূর্ববর্তী সময়ের মানকে বর্তমান সময়ের সাথে সংযুক্ত করা হয়।

উদাহরণ:

ধরা যাক, একটি কোম্পানির দৈনিক বিক্রয়ের ডেটা রয়েছে এবং আপনি পূর্ববর্তী দিনের বিক্রয় মানকে বর্তমান দিনে অন্তর্ভুক্ত করতে চান।

import pandas as pd

# Sample time series data
data = {'Date': ['2020-01-01', '2020-01-02', '2020-01-03', '2020-01-04', '2020-01-05'],
        'Sales': [100, 120, 150, 130, 160]}
df = pd.DataFrame(data)
df['Date'] = pd.to_datetime(df['Date'])

# Shifting data by 1 day
df['Sales_Shifted'] = df['Sales'].shift(1)  # Shifts the sales data by 1 day

print(df)

আউটপুট:

        Date  Sales  Sales_Shifted
0 2020-01-01    100            NaN
1 2020-01-02    120          100.0
2 2020-01-03    150          120.0
3 2020-01-04    130          150.0
4 2020-01-05    160          130.0

এখানে, shift(1) ফাংশনটি বিক্রয়ের মানকে ১ দিন পিছিয়ে দিয়েছে। প্রথম সারির জন্য কোন আগের মান নেই, তাই সেটি NaN


২. ল্যাগ ফিচার তৈরি করা (Lag Features)

ল্যাগ ফিচার তৈরি করা হল একটি সাধারণ কৌশল যা পূর্ববর্তী সময়ের মানকে (lag) বর্তমান সময়ের সাথে যুক্ত করতে ব্যবহৃত হয়। ল্যাগ ফিচার টাইম সিরিজ মডেলিংয়ে পূর্ববর্তী ডেটার থেকে বৈশিষ্ট্য তৈরি করার জন্য ব্যবহৃত হয়।

ল্যাগ ফিচার সাধারণত একটি বা একাধিক সময় পয়েন্ট পূর্বের মানকে বর্তমান সময়ে ব্যবহারের জন্য তৈরি করা হয়। যেমন 1 ল্যাগ (lag=1), 2 ল্যাগ (lag=2) ইত্যাদি।

উদাহরণ:

ধরা যাক, আপনি গত ৩ দিনের বিক্রয়ের তথ্যের উপর ভিত্তি করে পরবর্তী দিনের বিক্রয় পূর্বাভাস করতে চান।

# Creating lag features
df['Sales_Lag_1'] = df['Sales'].shift(1)  # Lag of 1 day
df['Sales_Lag_2'] = df['Sales'].shift(2)  # Lag of 2 days
df['Sales_Lag_3'] = df['Sales'].shift(3)  # Lag of 3 days

print(df)

আউটপুট:

        Date  Sales  Sales_Lag_1  Sales_Lag_2  Sales_Lag_3
0 2020-01-01    100           NaN           NaN           NaN
1 2020-01-02    120         100.0           NaN           NaN
2 2020-01-03    150         120.0         100.0           NaN
3 2020-01-04    130         150.0         120.0         100.0
4 2020-01-05    160         130.0         150.0         120.0

এখানে, Sales_Lag_1, Sales_Lag_2, এবং Sales_Lag_3 এর মাধ্যমে আমরা ১, ২, এবং ৩ দিনের পূর্ববর্তী বিক্রয়ের মানকে বর্তমান দিনের বিক্রয়ের সাথে যুক্ত করেছি।


৩. ল্যাগ ফিচারের ব্যবহারের সুবিধা

  • সিজনাল এবং ট্রেন্ড প্যাটার্ন: পূর্ববর্তী সময়ের মানের উপর ভিত্তি করে ভবিষ্যতের মান পূর্বাভাস করা সহজ হয়।
  • ডিপ লার্নিং মডেল: টাইম সিরিজের ডিপ লার্নিং মডেল (যেমন LSTM) এ ল্যাগ ফিচারগুলো ব্যবহার করা হয় যা পরবর্তী সময়ের জন্য পূর্বাভাস দিতে সহায়ক।
  • অনুপ্রেরণামূলক: অতীত থেকে ডেটা শিখে, মডেল ভবিষ্যতের জন্য কার্যকরী সিদ্ধান্ত নিতে সহায়ক হয়।

সারাংশ

টাইম সিরিজ ডেটাতে শিফটিং এবং ল্যাগ ফিচার তৈরি গুরুত্বপূর্ণ, কারণ এগুলো অতীতের তথ্য থেকে ভবিষ্যতের জন্য মূল্যবান বৈশিষ্ট্য তৈরি করতে সাহায্য করে। শিফটিং দ্বারা আপনি পূর্ববর্তী সময়ের ডেটাকে বর্তমানের সাথে সংযুক্ত করতে পারেন, এবং ল্যাগ ফিচার তৈরি করে অতীতের এক বা একাধিক মান ব্যবহার করে ভবিষ্যতের পূর্বাভাস করতে পারেন।

Content added By
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion