Time Series Analysis এবং Forecasting

মাইক্রোসফট কগনিটিভ টুলকিট (Microsoft Cognitive Toolkit) - Machine Learning

335

Time Series Data Preprocessing হল টাইম সিরিজ ডেটার বিশ্লেষণের পূর্বে ডেটাকে সঠিকভাবে প্রস্তুত করার প্রক্রিয়া। এটি ডেটাকে বিশুদ্ধ ও বিশ্লেষণযোগ্য করার জন্য বিভিন্ন ধাপ অনুসরণ করতে হয়, যা মডেল প্রশিক্ষণের ক্ষেত্রে খুবই গুরুত্বপূর্ণ। Time Series Data Preprocessing Techniques অন্তর্ভুক্ত করে missing values, seasonality, trend, stationarity, এবং অন্যান্য ডেটা সম্পর্কিত ইস্যুগুলির সমাধান।

নিচে Time Series Data Preprocessing Techniques এর কিছু গুরুত্বপূর্ণ পদক্ষেপ দেয়া হলো:


১. Handling Missing Values (অনুপস্থিত মানের ব্যবস্থা)

টাইম সিরিজ ডেটাতে অনুপস্থিত বা missing values এক গুরুত্বপূর্ণ সমস্যা, যা প্রক্রিয়াকরণের আগে ঠিক করা দরকার। এটি বিভিন্ন কারণে হতে পারে যেমন ডেটা সংগ্রহের ত্রুটি, প্রযুক্তিগত সমস্যা বা মানবিক ত্রুটি।

Missing Values পূরণ করার কৌশল:

  1. Forward Fill:

    • পূর্ববর্তী মানের দ্বারা অনুপস্থিত মান পূর্ণ করা। এটি সময়ের মধ্যে ধারাবাহিকতা বজায় রাখতে সাহায্য করে।
    data.fillna(method='ffill', inplace=True)
    
  2. Backward Fill:

    • পরবর্তী মানের দ্বারা অনুপস্থিত মান পূর্ণ করা।
    data.fillna(method='bfill', inplace=True)
    
  3. Interpolation:

    • টাইম সিরিজ ডেটার মধ্যে অনুপস্থিত মানগুলির জন্য সরল বা পলিনোমিয়াল ইন্টারপোলেশন ব্যবহার করা যেতে পারে।
    data.interpolate(method='linear', inplace=True)
    
  4. Mean/Median Imputation:
    • Mean বা Median দিয়ে অনুপস্থিত মান পূর্ণ করা, তবে এটি ছোট ডেটাসেটে ব্যবহার করা উচিত।

২. Handling Outliers (অস্বাভাবিক মান বা আউটলাইয়ারস)

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

Outlier Detection and Removal:

  1. IQR (Interquartile Range) Method:

    • IQR ব্যবহার করে আউটলাইয়ার চিহ্নিত করা। এটি 25th percentile (Q1) এবং 75th percentile (Q3) এর মধ্যে পার্থক্য হিসেবে সংজ্ঞায়িত করা হয়।
    Q1 = data.quantile(0.25)
    Q3 = data.quantile(0.75)
    IQR = Q3 - Q1
    data = data[(data >= (Q1 - 1.5 * IQR)) & (data <= (Q3 + 1.5 * IQR))]
    
  2. Z-score Method:

    • Z-স্কোর ব্যবহার করে আউটলাইয়ার চিহ্নিত করা হয়, যা ডেটার গড় এবং স্ট্যান্ডার্ড ডেভিয়েশনের সাথে সম্পর্কিত।
    from scipy import stats
    z_scores = stats.zscore(data)
    data = data[(z_scores < 3)]
    

৩. Handling Seasonality (মৌসুমীতা)

টাইম সিরিজ ডেটাতে মৌসুমীতা (Seasonality) এমন একটি উপাদান যেখানে একটি নির্দিষ্ট সময়ের মধ্যে নিয়মিত প্যাটার্ন বা সাইক্লিক আচরণ ঘটে। এই মৌসুমী পরিবর্তনগুলি মডেলের পূর্বাভাস ক্ষমতা বাড়াতে সাহায্য করতে পারে, কিন্তু কখনও কখনও এটি সঠিকভাবে শিখতে গুরুত্বপূর্ণ।

Seasonal Decomposition:

  1. Decomposition Using STL (Seasonal-Trend decomposition using LOESS):

    • মৌসুমীতা এবং প্রবণতা থেকে ডেটাকে আলাদা করা। এটি ডেটাকে তিনটি উপাদানে ভেঙে দেয়: প্রবণতা, মৌসুমীতা, এবং অবশিষ্টাংশ (residuals)।
    from statsmodels.tsa.seasonal import STL
    stl = STL(data, seasonal=13)
    result = stl.fit()
    result.plot()
    

৪. Stationarity (স্টেশনারিটি)

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

Stationarity Test (স্টেশনারিটি পরীক্ষা):

  1. Augmented Dickey-Fuller (ADF) Test:

    • ADF টেস্ট ব্যবহার করে টাইম সিরিজের স্টেশনারিটি পরীক্ষা করা যায়।
    from statsmodels.tsa.stattools import adfuller
    result = adfuller(data)
    print('ADF Statistic:', result[0])
    print('p-value:', result[1])
    

    p-value যদি 0.05 এর কম হয়, তাহলে টাইম সিরিজ স্টেশনারি বলে বিবেচিত হবে।

Stationary বানানোর কৌশল:

  1. Differencing:

    • টাইম সিরিজ ডেটার পার্থক্য নিয়ে স্টেশনারি করা। সাধারণত এক স্তরের পার্থক্য (1st differencing) ব্যবহার করা হয়।
    data_diff = data.diff().dropna()
    
  2. Log Transformation:

    • Logarithmic transformation ব্যবহার করে ডেটাকে স্থিতিশীল করা যায়, বিশেষ করে যখন ডেটাতে শক্তিশালী প্রবণতা থাকে।
    data_log = np.log(data)
    
  3. Smoothing:

    • ডেটাকে মসৃণ করার জন্য SMA (Simple Moving Average) বা EMA (Exponential Moving Average) ব্যবহার করা যেতে পারে।
    data_smooth = data.rolling(window=12).mean()
    

৫. Normalization and Scaling (স্বাভাবিককরণ এবং স্কেলিং)

টাইম সিরিজ ডেটা সঠিকভাবে প্রশিক্ষণের জন্য Normalization বা Standardization করা প্রয়োজন হতে পারে। বিশেষ করে যখন ডেটার স্কেল খুব ভিন্ন হয়, তখন এটি মডেল প্রশিক্ষণের জন্য সহায়ক।

Normalization and Scaling Techniques:

  1. Min-Max Scaling:

    • ডেটাকে 0 এবং 1 এর মধ্যে স্কেল করা।
    from sklearn.preprocessing import MinMaxScaler
    scaler = MinMaxScaler()
    data_scaled = scaler.fit_transform(data.values.reshape(-1, 1))
    
  2. Z-Score Normalization:

    • Z-score স্কেলিং ডেটার গড় এবং স্ট্যান্ডার্ড ডেভিয়েশন ব্যবহার করে।
    from sklearn.preprocessing import StandardScaler
    scaler = StandardScaler()
    data_scaled = scaler.fit_transform(data.values.reshape(-1, 1))
    

৬. Feature Engineering (ফিচার ইঞ্জিনিয়ারিং)

টাইম সিরিজের উপর ভিত্তি করে নতুন ফিচার তৈরি করা যেতে পারে, যা মডেলের কার্যকারিতা বাড়াতে সহায়ক হতে পারে। উদাহরণস্বরূপ:

  • Lag Features (পূর্ববর্তী মানগুলি):

    • পূর্ববর্তী সময় পয়েন্টগুলির ভিত্তিতে নতুন ফিচার তৈরি করা, যেমন 1-step lag, 2-step lag ইত্যাদি।
    data['lag_1'] = data['value'].shift(1)
    
  • Rolling Statistics:

    • একটি চলমান উইন্ডো (moving window) ব্যবহার করে গড় বা অন্যান্য পরিসংখ্যান তৈরি করা।
    data['rolling_mean'] = data['value'].rolling(window=12).mean()
    

সারাংশ

Time Series Data Preprocessing হল টাইম সিরিজ ডেটাকে পরিষ্কার এবং মডেল তৈরির জন্য প্রস্তুত করার গুরুত্বপূর্ণ পদক্ষেপ। এটি missing values, outliers, seasonality, trend, stationarity এবং normalization সমস্যা সমাধান করার মাধ্যমে ডেটাকে বিশ্লেষণযোগ্য করে তোলে। এগুলি টাইম সিরিজ মডেলের কার্যকারিতা এবং পূর্বাভাসের জন্য অত্যন্ত গুরুত্বপূর্ণ এবং সঠিক প্রক্রিয়াকরণ মডেলটিকে আরও সঠিক এবং কার্যকরী করে তোলে।

Content added By

Time Series Data Preprocessing Techniques

213

Time Series Data Preprocessing হল একটি অত্যন্ত গুরুত্বপূর্ণ পদক্ষেপ যখন টাইম সিরিজ ডেটার উপর মডেল তৈরি এবং ভবিষ্যদ্বাণী করা হয়। ডেটা থেকে সঠিক প্যাটার্ন বের করা এবং বিশ্লেষণ করতে সাহায্য করার জন্য বিভিন্ন preprocessing techniques ব্যবহার করা হয়। সঠিকভাবে প্রিপ্রসেসিং না করলে, মডেলটি ভুল ভবিষ্যদ্বাণী করতে পারে। নিচে Time Series Data Preprocessing Techniques সম্পর্কিত কিছু গুরুত্বপূর্ণ পদক্ষেপ আলোচনা করা হলো।


১. Missing Values Handling (অনুপস্থিত মান পূরণ)

Missing values টাইম সিরিজ ডেটাতে একটি সাধারণ সমস্যা, যা অনেক কারণে হতে পারে, যেমন ডেটা সংগ্রহের ত্রুটি বা ল্যাগged সময়ের কারণে। টাইম সিরিজ ডেটাতে missing values সমাধান করতে বিভিন্ন কৌশল ব্যবহার করা হয়।

Techniques for Handling Missing Data:

  1. Forward Fill (ffill):

    • পূর্ববর্তী মান দিয়ে missing values পূর্ণ করা।
    data.fillna(method='ffill', inplace=True)
    
  2. Backward Fill (bfill):

    • পরবর্তী মান দিয়ে missing values পূর্ণ করা।
    data.fillna(method='bfill', inplace=True)
    
  3. Interpolation:

    • সরল বা পলিনোমিয়াল ইন্টারপোলেশন ব্যবহার করা।
    data.interpolate(method='linear', inplace=True)
    
  4. Mean/Median Imputation:

    • missing values পূর্ণ করতে গড় বা মধ্যম ব্যবহার করা।
    data.fillna(data.mean(), inplace=True)  # Mean Imputation
    

২. Handling Outliers (আউটলাইয়ারস বা অস্বাভাবিক মান)

আউটলাইয়ার বা outliers সাধারণত ডেটা বিশ্লেষণ বা মডেল তৈরির জন্য সমস্যা সৃষ্টি করতে পারে। তাই আউটলাইয়ারস চিহ্নিত এবং সরিয়ে ফেলা প্রয়োজন হতে পারে।

Outlier Detection Techniques:

  1. IQR Method (Interquartile Range):

    • Q1 (25th percentile) এবং Q3 (75th percentile) এর মধ্যে পার্থক্য হিসাবে আউটলাইয়ার চিহ্নিত করা।
    Q1 = data.quantile(0.25)
    Q3 = data.quantile(0.75)
    IQR = Q3 - Q1
    data = data[(data >= (Q1 - 1.5 * IQR)) & (data <= (Q3 + 1.5 * IQR))]
    
  2. Z-score Method:

    • Z-স্কোর ব্যবহারের মাধ্যমে আউটলাইয়ার চিহ্নিত করা।
    from scipy import stats
    z_scores = stats.zscore(data)
    data = data[(z_scores < 3)]  # Filter values with Z-score > 3
    

৩. Stationarity (স্টেশনারিটি পরীক্ষা)

Stationarity হল এমন একটি বৈশিষ্ট্য যেখানে টাইম সিরিজের গড়, ভ্যারিয়েন্স এবং অন্যান্য পরিসংখ্যান সময়ের সঙ্গে অপরিবর্তিত থাকে। অধিকাংশ টাইম সিরিজ মডেল যেমন ARIMA স্টেশনারি ডেটার উপর কাজ করে।

Stationarity Testing:

  1. Augmented Dickey-Fuller (ADF) Test:

    • ADF টেস্ট ব্যবহার করে টাইম সিরিজের স্টেশনারিটি পরীক্ষা করা হয়।
    from statsmodels.tsa.stattools import adfuller
    result = adfuller(data)
    print('ADF Statistic:', result[0])
    print('p-value:', result[1])
    

    p-value যদি 0.05 এর কম হয়, তাহলে সিরিজ স্টেশনারি।

Making a Series Stationary:

  1. Differencing:

    • টাইম সিরিজের প্রথম পার্থক্য (difference) নিয়ে স্টেশনারি করা।
    data_diff = data.diff().dropna()
    
  2. Log Transformation:

    • টাইম সিরিজে শক্তিশালী প্রবণতা থাকলে লগ ট্রান্সফরমেশন করা যেতে পারে।
    data_log = np.log(data)
    
  3. Smoothing (Moving Average):

    • ডেটাকে মসৃণ করার জন্য চলন্ত গড় ব্যবহার করা যেতে পারে।
    data_smooth = data.rolling(window=12).mean()
    

৪. Handling Seasonality (মৌসুমীতা)

টাইম সিরিজ ডেটাতে Seasonality এমন একটি উপাদান যেখানে একটি নির্দিষ্ট সময়ের মধ্যে নিয়মিত পরিবর্তন ঘটে। মৌসুমী পরিবর্তনগুলির প্রভাব বোঝার জন্য সিজনালিটি শোধন করা গুরুত্বপূর্ণ।

Seasonality Decomposition:

  1. STL (Seasonal-Trend Decomposition using LOESS):

    • এটি মৌসুমীতা, প্রবণতা এবং অবশিষ্টাংশ আলাদা করতে ব্যবহার করা হয়।
    from statsmodels.tsa.seasonal import STL
    stl = STL(data, seasonal=13)
    result = stl.fit()
    result.plot()
    

৫. Normalization and Scaling (স্বাভাবিককরণ এবং স্কেলিং)

টাইম সিরিজ ডেটার মধ্যে অনেক সময় স্কেল ভিন্ন হতে পারে, যা মডেল প্রশিক্ষণের ক্ষেত্রে সমস্যা সৃষ্টি করতে পারে। তাই ডেটাকে normalize বা scale করা প্রয়োজন হতে পারে।

Normalization and Scaling Techniques:

  1. Min-Max Scaling:

    • ডেটাকে 0 এবং 1 এর মধ্যে স্কেল করা।
    from sklearn.preprocessing import MinMaxScaler
    scaler = MinMaxScaler()
    data_scaled = scaler.fit_transform(data.values.reshape(-1, 1))
    
  2. Z-score Normalization:

    • ডেটার গড় এবং স্ট্যান্ডার্ড ডেভিয়েশন ব্যবহার করে স্বাভাবিকীকরণ।
    from sklearn.preprocessing import StandardScaler
    scaler = StandardScaler()
    data_scaled = scaler.fit_transform(data.values.reshape(-1, 1))
    

৬. Feature Engineering (ফিচার ইঞ্জিনিয়ারিং)

টাইম সিরিজের উপর ভিত্তি করে নতুন ফিচার তৈরি করা যেতে পারে, যা মডেলের কার্যকারিতা বাড়াতে সহায়ক হতে পারে।

Common Feature Engineering Techniques:

  1. Lag Features (ল্যাগ ফিচার):

    • পূর্ববর্তী সময় পয়েন্টগুলির উপর ভিত্তি করে নতুন ফিচার তৈরি করা, যেমন 1-step lag, 2-step lag ইত্যাদি।
    data['lag_1'] = data['value'].shift(1)
    
  2. Rolling Statistics:

    • একটি চলমান উইন্ডো (moving window) ব্যবহার করে গড় বা অন্যান্য পরিসংখ্যান তৈরি করা।
    data['rolling_mean'] = data['value'].rolling(window=12).mean()
    
  3. Date/Time Features:

    • ডেটার মধ্যে দিন, সপ্তাহ, মাস, বা বছর সম্পর্কিত নতুন ফিচার তৈরি করা।
    data['year'] = data.index.year
    data['month'] = data.index.month
    data['dayofweek'] = data.index.dayofweek
    

৭. Resampling (ডেটা পুনরায় নমুনা তৈরি করা)

টাইম সিরিজ ডেটার time intervals যদি অমীমাংসিত বা অপর্যাপ্ত হয়, তবে resampling এর মাধ্যমে ডেটাকে পুনরায় সংগঠিত করা যেতে পারে। এটি সাপ্তাহিক, মাসিক বা অন্যান্য পর্যায়ে ডেটা পুনঃসংগঠিত করার জন্য ব্যবহৃত হয়।

Resampling Techniques:

  1. Upsampling:

    • সাপোর্টেড ইনফরমেশন থেকে ছোট সময় ফ্রেমের মধ্যে ডেটা পুনঃসংগঠিত করা।
    data_resampled = data.resample('D').ffill()  # Daily frequency
    
  2. Downsampling:

    • ছোট সময় ফ্রেমকে বড় সময় ফ্রেমে পরিবর্তন করা।
    data_resampled = data.resample('M').mean()  # Monthly frequency
    

সারাংশ

Time Series Data Preprocessing হল টাইম সিরিজ ডেটাকে বিশ্লেষণযোগ্য এবং মডেল প্রশিক্ষণের জন্য প্রস্তুত করার প্রক্রিয়া। এটি বিভিন্ন পদক্ষেপ যেমন missing values হ্যান্ডলিং, outliers চিহ্নিতকরণ, stationarity পরীক্ষা, seasonality ডিকম্পোজিশন, normalization এবং feature engineering ইত্যাদি অন্তর্ভুক্ত করে। সঠিক preprocessing মডেলের কার্যকারিতা এবং পূর্বাভাসের ক্ষমতা বৃদ্ধি করতে সাহায্য করে।

Content added By

RNN/LSTM ব্যবহার করে Time Series Forecasting

317

Recurrent Neural Networks (RNNs) এবং Long Short-Term Memory (LSTM) মডেলগুলি টাইম সিরিজ ফোরকাস্টিং এর জন্য অত্যন্ত শক্তিশালী এবং জনপ্রিয় পদ্ধতি। টাইম সিরিজ ডেটা দ্বারা যা বোঝানো হয় তা হল সময়ের সাথে পরিবর্তনশীল ডেটা, যেখানে পূর্ববর্তী সময় পয়েন্টের ভিত্তিতে ভবিষ্যতের মান পূর্বাভাস করা হয়। RNN এবং LSTM টাইপ মডেলগুলি এই ধরনের ডেটা বিশ্লেষণ এবং ভবিষ্যদ্বাণী করার জন্য ব্যবহৃত হয়, কারণ তারা সময়গত সম্পর্ক শিখতে সক্ষম।

নিচে RNN এবং LSTM মডেল ব্যবহার করে টাইম সিরিজ ফোরকাস্টিং এর জন্য পদ্ধতি আলোচনা করা হয়েছে।


RNN (Recurrent Neural Networks) Overview

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


LSTM (Long Short-Term Memory) Overview

LSTM হল একটি উন্নত ধরনের RNN যা দীর্ঘমেয়াদী ডিপেন্ডেন্সি শিখতে সক্ষম। এটি memory cells ব্যবহার করে, যা মডেলকে অতীত ইনফরমেশন দীর্ঘ সময় ধরে মনে রাখতে সহায়ক হয়। LSTM মডেল সাধারণ RNN-এর চেয়ে অনেক বেশি কার্যকরী বিশেষত টাইম সিরিজের ক্ষেত্রে।


Time Series Forecasting with RNN/LSTM

এখন আসুন, RNN এবং LSTM ব্যবহার করে টাইম সিরিজ ফোরকাস্টিং কীভাবে করা যায় তা দেখি।

Step-by-Step Implementation of Time Series Forecasting using LSTM:

  1. Data Preparation:
    • প্রথমে টাইম সিরিজ ডেটা প্রস্তুত করা হবে। এতে ডেটাকে training এবং testing সেটে ভাগ করা এবং scaling করা প্রয়োজন।
  2. Creating the LSTM Model:
    • LSTM মডেল তৈরি করা হবে এবং সেগুলি টাইম সিরিজ ডেটার ওপর প্রশিক্ষিত হবে।
  3. Prediction and Evaluation:
    • ভবিষ্যতের মান পূর্বাভাস করা হবে এবং মডেলের কার্যকারিতা মূল্যায়ন করা হবে।

Time Series Forecasting Using LSTM - Example:

এখানে একটি সাধারণ উদাহরণ দেয়া হলো যেখানে আমরা Keras এবং TensorFlow ব্যবহার করে একটি LSTM মডেল তৈরি করছি।

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.preprocessing import MinMaxScaler
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import LSTM, Dense

# 1. ডেটা লোড এবং প্রক্রিয়াকরণ
data = pd.read_csv('time_series_data.csv', parse_dates=True, index_col='Date')

# 2. Data Scaling (Min-Max)
scaler = MinMaxScaler(feature_range=(0, 1))
scaled_data = scaler.fit_transform(data['value'].values.reshape(-1, 1))

# 3. টাইম সিরিজের জন্য ডেটা প্রস্তুত করা
def create_dataset(dataset, time_step=1):
    X, Y = [], []
    for i in range(len(dataset) - time_step - 1):
        X.append(dataset[i:(i + time_step), 0])
        Y.append(dataset[i + time_step, 0])
    return np.array(X), np.array(Y)

time_step = 100  # পেছনের 100 সময় পয়েন্টের উপর ভিত্তি করে পূর্বাভাস
X, Y = create_dataset(scaled_data, time_step)

# ইনপুট ডেটার আকার পরিবর্তন
X = X.reshape(X.shape[0], X.shape[1], 1)

# 4. LSTM মডেল তৈরি
model = Sequential()
model.add(LSTM(units=50, return_sequences=True, input_shape=(time_step, 1)))
model.add(LSTM(units=50, return_sequences=False))
model.add(Dense(units=1))

# মডেল কম্পাইল
model.compile(optimizer='adam', loss='mean_squared_error')

# 5. মডেল প্রশিক্ষণ
model.fit(X, Y, epochs=20, batch_size=32)

# 6. ভবিষ্যৎ পূর্বাভাস
train_predict = model.predict(X)

# 7. পূর্বাভাসের ডেটা পুনরুদ্ধার (inverse scaling)
train_predict = scaler.inverse_transform(train_predict)

ডেটা প্রস্তুতি এবং মডেল তৈরির বিস্তারিত:

  1. Data Preprocessing:
    • প্রথমে ডেটা স্কেল করা হয়। টাইম সিরিজ ডেটা MinMaxScaler ব্যবহার করে স্কেল করা হয় যাতে সব ভ্যালু 0 থেকে 1 এর মধ্যে থাকে। এটি neural networks-এর জন্য খুব গুরুত্বপূর্ণ, কারণ নিউরাল নেটওয়ার্কগুলো সাধারণত স্কেল করা ডেটার উপর ভাল কাজ করে।
  2. Dataset Creation:
    • টাইম সিরিজ ডেটাকে একটি স্লাইডিং উইন্ডোতে পরিণত করা হয়, যেখানে time_step নির্ধারণ করে আমরা কতগুলি পূর্ববর্তী সময় পয়েন্টের উপর ভিত্তি করে পূর্বাভাস তৈরি করতে যাচ্ছি। এখানে, X হল ইনপুট ফিচার এবং Y হল আউটপুট (পরবর্তী সময় পয়েন্টের মান)।
  3. LSTM Model:
    • একটি সাধারণ LSTM মডেল তৈরি করা হয়েছে যা দুটি লেয়ার ব্যবহার করে:
      • প্রথম LSTM লেয়ার, যা সিকোয়েন্সের দীর্ঘমেয়াদী সম্পর্ক শিখতে সাহায্য করে এবং return_sequences=True নির্দিষ্ট করে যে এটি পরবর্তী LSTM লেয়ারের জন্য আউটপুট প্রদান করবে।
      • দ্বিতীয় LSTM লেয়ার, যা শেষ আউটপুটের জন্য প্রস্তুত করবে।
      • Dense লেয়ারটি আউটপুট ভবিষ্যদ্বাণী করবে।
  4. Model Training:
    • LSTM মডেলটি mean squared error (MSE) loss ফাংশন এবং adam optimizer ব্যবহার করে প্রশিক্ষিত হয়।
  5. Prediction:
    • প্রশিক্ষিত মডেল ব্যবহার করে train_predict তৈরি করা হয় এবং পরে স্কেলিং প্রত্যাহার (inverse scaling) করে আসল ডেটা রেঞ্জে পুনঃরূপান্তর করা হয়।

Evaluation and Forecasting:

  1. Model Evaluation:
    • মডেলের কার্যকারিতা মূল্যায়ন করতে, আপনি Root Mean Squared Error (RMSE) বা Mean Absolute Error (MAE) ব্যবহার করতে পারেন।
  2. Plotting Results:
    • ফলস্বরূপ পূর্বাভাসের সাথে প্রকৃত ডেটাকে তুলনা করে মডেলের কার্যকারিতা বিশ্লেষণ করা যেতে পারে।
# RMSE (Root Mean Squared Error) হিসাব করা
import math
from sklearn.metrics import mean_squared_error

train_rmse = math.sqrt(mean_squared_error(Y, train_predict))
print(f'Training RMSE: {train_rmse}')

# Plotting Results
plt.figure(figsize=(10, 6))
plt.plot(scaler.inverse_transform(scaled_data), label='Actual Data')
plt.plot(train_predict, label='Predicted Data', color='red')
plt.legend()
plt.show()

LSTM Model Tuning and Improvements:

  1. Hyperparameter Tuning:
    • LSTM মডেলটির number of LSTM units, epochs, batch size, এবং learning rate অন্যান্য হাইপারপ্যারামিটারগুলি টিউন করে উন্নত করা যেতে পারে।
  2. Model Complexity:
    • LSTM মডেলের গভীরতা (depth) এবং ইউনিটের সংখ্যা বাড়ানোর মাধ্যমে মডেলকে আরও শক্তিশালী করা যেতে পারে, তবে মডেলটি overfitting এ না পরেছে তা নিশ্চিত করতে হবে।

সারাংশ:

  • RNN এবং LSTM টাইম সিরিজ ডেটার জন্য শক্তিশালী মডেল, যা দীর্ঘমেয়াদী নির্ভরশীলতা শিখতে সক্ষম। LSTM RNN এর উন্নত সংস্করণ এবং এটি বিশেষভাবে টাইম সিরিজ ফোরকাস্টিং এর জন্য কার্যকর।
  • LSTM মডেল তৈরির জন্য Keras বা TensorFlow ব্যবহার করা যেতে পারে, যা সহজ এবং দ্রুতভাবে টাইম সিরিজ মডেল তৈরি করতে সহায়ক।
  • Model Evaluation এবং Hyperparameter Tuning-এর মাধ্যমে LSTM মডেলের কর্মক্ষমতা আরও উন্নত করা যেতে পারে।

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

Content added By

Sliding Window এবং Rolling Forecast Techniques

309

Sliding Window এবং Rolling Forecast দুইটি জনপ্রিয় এবং কার্যকরী কৌশল যা time series analysis, forecasting এবং machine learning মডেলগুলির প্রশিক্ষণে ব্যবহৃত হয়। দুটি কৌশলই historical data-এর উপর ভিত্তি করে ভবিষ্যতের পূর্বাভাস দিতে সহায়ক। তবে, এগুলোর মধ্যে কিছু মৌলিক পার্থক্য রয়েছে এবং সেগুলির ব্যবহারের ক্ষেত্রেও কিছু ভিন্নতা দেখা যায়।


Sliding Window Technique

Sliding Window একটি সাধারণ কৌশল যা time series data বিশ্লেষণ এবং ভবিষ্যৎ পূর্বাভাসের জন্য ব্যবহৃত হয়। এই কৌশলে, পূর্ববর্তী ডেটার একটি নির্দিষ্ট window size বা উইন্ডো নিয়ে কাজ করা হয় এবং এই উইন্ডোটি ধীরে ধীরে সময়ের সাথে স্লাইড করা হয়।

Sliding Window এর ধারণা:

  1. Window Size: এটি পূর্ববর্তী ডেটার সংখ্যা যা ভবিষ্যতের পূর্বাভাসের জন্য ব্যবহৃত হয়। উদাহরণস্বরূপ, যদি আমরা 10 দিনের sliding window ব্যবহার করি, তাহলে প্রতিটি পূর্বাভাস তৈরির জন্য 10 দিনের পূর্ববর্তী ডেটা ব্যবহার করা হবে।
  2. Sliding Process: যখন পূর্বাভাস তৈরি করা হয়, তখন এই উইন্ডোটি একদিন এগিয়ে যায় এবং পরবর্তী 10 দিন বা নির্দিষ্ট সংখ্যক দিন নতুন ডেটা নিয়ে পূর্বাভাস তৈরি করা হয়। এর মানে, যখন একটি পূর্বাভাস তৈরি করা হয়, তখন নতুন ডেটা উইন্ডোতে যোগ হয় এবং পুরানো ডেটা বাদ পড়ে।

Sliding Window এর উদাহরণ:

ধরা যাক, একটি 10 দিনের উইন্ডো এবং 5 দিনের পূর্বাভাস তৈরি করা হবে:

  • প্রথমে, প্রথম 10 দিনের ডেটা দিয়ে পূর্বাভাস তৈরি করা হবে।
  • এরপর, উইন্ডোটি একদিন স্লাইড করবে এবং 2 থেকে 11 দিনের ডেটা নিয়ে পূর্বাভাস তৈরি হবে।
  • এইভাবে উইন্ডোটি একে একে স্লাইড করবে এবং প্রতিটি সময় নতুন পূর্বাভাস তৈরি হবে।

Sliding Window এর সুবিধা:

  • Recent Data Focus: নতুন এবং সাম্প্রতিক ডেটার উপর বেশি ফোকাস রেখে মডেল প্রশিক্ষণ এবং পূর্বাভাস তৈরি করা হয়।
  • Short-Term Forecasting: ছোট সময়ের মধ্যে পরিবর্তনশীল ডেটা মডেল করতে সাহায্য করে।
  • Simplicity: কৌশলটি খুব সহজ এবং সরল, যা ব্যয়বহুল বা জটিল মডেল নির্মাণের প্রয়োজনীয়তা কমিয়ে দেয়।

Sliding Window এর সীমাবদ্ধতা:

  • Data Loss: প্রতিটি স্লাইডের সময় পুরানো ডেটা হারিয়ে যেতে পারে।
  • Fixed Window Size: এটি একটি fixed window size ব্যবহার করে, যার ফলে বড় বা ছোট আকারের ডেটার ক্ষেত্রে মডেলটি সমস্যায় পড়তে পারে।

Rolling Forecast Technique

Rolling Forecast হল একটি পূর্বাভাস কৌশল যা time series data বিশ্লেষণে ব্যবহৃত হয় এবং এটি মূলত ভবিষ্যত স্লাইডিং উইন্ডোর পরিবর্তে ধাপে ধাপে পূর্বাভাস তৈরি করে। এটি মূলত ভবিষ্যতের একাধিক সময়ের পূর্বাভাস দিতে সহায়ক।

Rolling Forecast এর ধারণা:

  1. Forecast Horizon: এটি এমন একটি সময়কাল যা পূর্বাভাস তৈরির জন্য ব্যবহৃত হয়, যেমন 6 মাস, 12 মাস ইত্যাদি। এই সময়কালটির জন্য পূর্বাভাস তৈরি করা হবে এবং সময়ের সাথে সাথে এটি আপডেট হবে।
  2. Update Process: পূর্বাভাসটি rolling ভাবে আপডেট করা হয়। যখন একটি পূর্বাভাস তৈরি হয়, তখন previous forecast এর পরিবর্তে নতুন তথ্য যোগ করা হয় এবং পূর্বাভাসের পরবর্তী সময়ের জন্য adjustments করা হয়।

Rolling Forecast এর উদাহরণ:

ধরা যাক, আমরা 12 মাসের পূর্বাভাস তৈরি করছি:

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

Rolling Forecast এর সুবিধা:

  • Flexible Forecasting: এটি দীর্ঘমেয়াদী পূর্বাভাসের জন্য উপযুক্ত এবং সময়ের সাথে সাথে ডেটা পরিবর্তনের সাথে নতুন তথ্য আপডেট করতে সহায়ক।
  • Continuous Update: পূর্বাভাস মডেলটি চলতে থাকে এবং প্রতিটি নতুন ডেটার সাথে পূর্বাভাস আপডেট করা যায়।
  • Long-Term Planning: এটি একটি নির্দিষ্ট সময়কাল ধরে পূর্বাভাস প্রদান করে, যা দীর্ঘমেয়াদী পরিকল্পনার জন্য উপযুক্ত।

Rolling Forecast এর সীমাবদ্ধতা:

  • Data Overlap: পূর্বাভাসের জন্য একই তথ্য বারবার ব্যবহার করা হতে পারে, যা কখনও কখনও মডেলের সঠিকতা প্রভাবিত করতে পারে।
  • Complexity: পূর্বাভাসের জন্য সময়কাল এবং forecast horizon এর মধ্যে বিভিন্ন ধরনের পরিবর্তন ঘটতে পারে, যা মডেলটিকে আরও জটিল করে তুলতে পারে।

Sliding Window vs Rolling Forecast:

AspectSliding WindowRolling Forecast
Forecast PeriodFixed-size time window for each forecastContinuous forecast with updating window
Data UsageOnly a fixed set of recent data is used for each predictionData gradually updates with new observations and forecasts
ComplexitySimple, easy to implementMore complex as it involves updating forecasts continuously
PerformancePerforms well for short-term forecastingSuitable for long-term forecasting
Use CaseShort-term, reactive forecastingLong-term, continuous forecasting

সারাংশ

  • Sliding Window এবং Rolling Forecast উভয়ই time series forecasting এর জন্য ব্যবহৃত শক্তিশালী কৌশল। Sliding Window সাধারণত ছোট সময়কাল এবং সাম্প্রতিক ডেটার উপর ভিত্তি করে পূর্বাভাস তৈরি করতে ব্যবহৃত হয়, যেখানে Rolling Forecast দীর্ঘমেয়াদী এবং ধারাবাহিক পূর্বাভাস তৈরি করার জন্য ব্যবহৃত হয়।
  • Sliding Window একটি নির্দিষ্ট উইন্ডোতে ডেটা ব্যবহার করে, যখন Rolling Forecast পূর্বাভাসের সময়কাল আপডেট করে চলতে থাকে এবং প্রতিনিয়ত পূর্বাভাস তৈরি হয়।
  • উভয় কৌশলই machine learning এবং time series analysis এ কার্যকরী, তবে তাদের ব্যবহারের ক্ষেত্রে কিছু পার্থক্য রয়েছে, যেমন পূর্বাভাসের সময়কাল, ডেটা আপডেট প্রক্রিয়া এবং মডেলের জটিলতা।
Content added By

Model Evaluation এবং Forecasting Accuracy

207

Model Evaluation এবং Forecasting Accuracy হল ডিপ লার্নিং এবং মেশিন লার্নিং মডেলগুলির কার্যকারিতা মূল্যায়ন এবং পূর্বাভাসের সঠিকতা নির্ধারণের জন্য গুরুত্বপূর্ণ ধারণা। এটি নিশ্চিত করতে সহায়ক যে মডেলটি নতুন, অজানা ডেটার জন্য ভালভাবে কাজ করছে এবং বাস্তব বিশ্বে তা কার্যকরভাবে ব্যবহারযোগ্য। নিচে Model Evaluation এবং Forecasting Accuracy সম্পর্কে বিস্তারিত আলোচনা করা হয়েছে।


1. Model Evaluation (মডেল মূল্যায়ন)

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

Model Evaluation Metrics:

  1. Accuracy (সঠিকতা):

    • Accuracy হল একটি মৌলিক মেট্রিক যা মডেলের সঠিক পূর্বাভাসের অনুপাত পরিমাপ করে।
    • এটি সাধারণত classification মডেলগুলির জন্য ব্যবহৃত হয়।

    Formula:

    Accuracy=TP+TNTP+TN+FP+FNAccuracy = \frac{{TP + TN}}{{TP + TN + FP + FN}}

    যেখানে:

    • TP = True Positive
    • TN = True Negative
    • FP = False Positive
    • FN = False Negative
  2. Precision (প্রিসিশন):

    • Precision হল সঠিকভাবে চিহ্নিত হওয়া পজিটিভ ক্লাসের অনুপাত। এটি একটি মডেলের সক্ষমতা পরিমাপ করে, যখন তা পজিটিভ ক্লাস পূর্বাভাস দেয়।

    Formula:

    Precision=TPTP+FPPrecision = \frac{{TP}}{{TP + FP}}

  3. Recall (রিকল) / Sensitivity:

    • Recall হল মোট সঠিক পজিটিভ ঘটনা যা মডেল সনাক্ত করতে সক্ষম হয়েছে।

    Formula:

    Recall=TPTP+FNRecall = \frac{{TP}}{{TP + FN}}

  4. F1 Score:

    • F1 Score হল Precision এবং Recall এর হারমনিক গড়। এটি যখন Precision এবং Recall এর মধ্যে ভারসাম্য থাকতে হয়, তখন এটি অত্যন্ত উপকারী।

    Formula:

    F1Score=2×Precision×RecallPrecision+RecallF1 Score = 2 \times \frac{{Precision \times Recall}}{{Precision + Recall}}

  5. ROC Curve এবং AUC (Area Under the Curve):
    • ROC Curve মডেলের পারফর্মেন্সের গ্রাফিক্যাল প্রদর্শন, যা মডেলের সঠিকতা এবং ভুল পজিটিভ রেটের মধ্যে সম্পর্ক প্রদর্শন করে।
    • AUC হল ROC কভার নীচে ক্ষেত্রের এলাকা, যা মডেলের সামগ্রিক ক্ষমতা পরিমাপ করে।
  6. Mean Squared Error (MSE):

    • MSE হল রিগ্রেশন মডেলগুলির জন্য একটি সাধারণ মূল্যায়ন মেট্রিক। এটি পূর্বাভাসের ত্রুটির বর্গের গড়।

    Formula:

    MSE=1n(ytrueypred)2MSE = \frac{1}{n} \sum (y_{\text{true}} - y_{\text{pred}})^2

    যেখানে:

    • ytruey_{\text{true}} = আসল মান
    • ypredy_{\text{pred}} = পূর্বাভাস মান
    • nn = নমুনার সংখ্যা
  7. Root Mean Squared Error (RMSE):

    • RMSE হল MSE এর বর্গমূল, যা মডেল ত্রুটির গড় আকার প্রদর্শন করে।

    Formula:

    RMSE=MSERMSE = \sqrt{MSE}


2. Forecasting Accuracy (পূর্বাভাসের সঠিকতা)

Forecasting Accuracy হল সময়ভিত্তিক পূর্বাভাস (যেমন, স্টক প্রাইস, আবহাওয়া পূর্বাভাস) করার ক্ষেত্রে মডেলের সঠিকতা পরিমাপের প্রক্রিয়া। এটি পূর্বাভাসের ভুল পরিমাপ করার জন্য বিভিন্ন মেট্রিক ব্যবহার করে এবং নির্ধারণ করে যে মডেল কতটা সঠিকভাবে ভবিষ্যত মান পূর্বাভাস করতে সক্ষম।

Forecasting Accuracy Metrics:

  1. Mean Absolute Error (MAE):

    • MAE হল পূর্বাভাসের ত্রুটির গড় পরিমাণ। এটি প্রতিটি পূর্বাভাসের জন্য ত্রুটি নিয়ে গড় নেয়।

    Formula:

    MAE=1nytrueypredMAE = \frac{1}{n} \sum |y_{\text{true}} - y_{\text{pred}}|

  2. Mean Squared Error (MSE):

    • পূর্বাভাসের ত্রুটির বর্গের গড়। এটি MAE থেকে আরও বেশি পেনাল্টি দেয় বড় ত্রুটির জন্য।

    Formula:

    MSE=1n(ytrueypred)2MSE = \frac{1}{n} \sum (y_{\text{true}} - y_{\text{pred}})^2

  3. Root Mean Squared Error (RMSE):

    • RMSE হল MSE এর বর্গমূল এবং এটি MAE থেকে কিছুটা বেশি সংবেদনশীল বড় ত্রুটির প্রতি।

    Formula:

    RMSE=MSERMSE = \sqrt{MSE}

  4. Mean Absolute Percentage Error (MAPE):

    • MAPE পূর্বাভাসের সঠিকতা পরিমাপ করার জন্য ব্যবহৃত হয় এবং এটি ত্রুটির গড় শতাংশ পরিমাপ করে।

    Formula:

    MAPE=1n(ytrueypredytrue)×100MAPE = \frac{1}{n} \sum \left( \frac{|y_{\text{true}} - y_{\text{pred}}|}{y_{\text{true}}} \right) \times 100

    • এখানে, MAPE ছোট হলে পূর্বাভাসের সঠিকতা বেশি, এবং বড় হলে পূর্বাভাসের ভুল বেশি।
  5. Symmetric Mean Absolute Percentage Error (sMAPE):

    • sMAPE হল MAPE এর একটি সংস্করণ যা পূর্বাভাসের ভুল এবং আসল মানের মধ্যে symmetry প্রদান করে, যাতে অসমান ত্রুটির ক্ষেত্রে এটি আরও সঠিকভাবে কাজ করে।

    Formula:

    sMAPE=1n(ytrueypredytrue+ypred)×100sMAPE = \frac{1}{n} \sum \left( \frac{|y_{\text{true}} - y_{\text{pred}}|}{|y_{\text{true}}| + |y_{\text{pred}}|} \right) \times 100

  6. R-squared (R²) বা Coefficient of Determination:

    • হল একটি মেট্রিক যা পূর্বাভাসের পারফরম্যান্স পরিমাপ করে এবং এটি কতটুকু ভেরিয়েশন ব্যাখ্যা করতে সক্ষম তা নির্দেশ করে। এর মান 0 এবং 1 এর মধ্যে থাকে।

    Formula:

    R2=1(ytrueypred)2(ytrueytrue)2R^2 = 1 - \frac{\sum (y_{\text{true}} - y_{\text{pred}})^2}{\sum (y_{\text{true}} - \overline{y_{\text{true}}})^2}

    যেখানে ytrue\overline{y_{\text{true}}} হল আসল মানের গড়।


3. Model Evaluation এবং Forecasting Accuracy এর মধ্যে সম্পর্ক

  • Model Evaluation সাধারণত classification এবং regression সমস্যা সমাধানের জন্য ব্যবহৃত হয়। এটি মডেলের বিভিন্ন বৈশিষ্ট্য যেমন সঠিকতা, precision, recall, F1 score ইত্যাদি পরিমাপ করে।
  • Forecasting Accuracy মূলত time series ডেটার জন্য ব্যবহৃত হয়, যেখানে মডেল ভবিষ্যত ডেটা পূর্বাভাস করার জন্য ট্রেনিং করা হয়। এখানে MAE, MAPE, RMSE ইত্যাদি মেট্রিক্স ব্যবহার করে পূর্বাভাসের সঠিকতা পরিমাপ করা হয়।

সারাংশ

Model Evaluation মডেলের সঠিকতা এবং কার্যকারিতা মূল্যায়ন করতে সহায়ক এবং এটি বিভিন্ন মেট্রিক্স যেমন accuracy, precision, recall, F1 score, এবং AUC ব্যবহার করে। অন্যদিকে, Forecasting Accuracy time series ডেটার জন্য পূর্বাভাসের সঠিকতা পরিমাপ করার জন্য ব্যবহৃত হয়, যেখানে MAE, MSE, RMSE, MAPE ইত্যাদি মেট্রিক্স ব্যবহৃত হয়। এই মেট্রিক্সগুলি আপনাকে আপনার মডেলের কার্যকারিতা এবং পারফর্মেন্স নির্ধারণ করতে সাহায্য করবে।

Content added By
Promotion

Are you sure to start over?

Loading...