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

Time Series Analysis এবং Forecasting - মাইক্রোসফট কগনিটিভ টুলকিট (Microsoft Cognitive Toolkit) - Machine Learning

316

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
Promotion

Are you sure to start over?

Loading...