Machine Learning LSTM এর মাধ্যমে Time Series Forecasting গাইড ও নোট

257

LSTM (Long Short-Term Memory) হলো একটি বিশেষ ধরনের রিকারেন্ট নিউরাল নেটওয়ার্ক (RNN) যা টাইম সিরিজ ডেটা বা সিকোয়েন্সিয়াল ডেটা বিশ্লেষণে অত্যন্ত কার্যকর। এটি ডেটার দীর্ঘমেয়াদী এবং স্বল্পমেয়াদী সম্পর্ক শিখতে সক্ষম, এবং এটি টাইম সিরিজ ফরকাস্টিংয়ে ব্যবহার করা হয়।

LSTM কিভাবে কাজ করে?

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

LSTM এর তিনটি প্রধান গেট থাকে:

  1. Forget Gate: যা পূর্বের তথ্যগুলো ভুলে যাওয়ার সিদ্ধান্ত নেয়।
  2. Input Gate: নতুন তথ্য গ্রহণ করার সিদ্ধান্ত নেয়।
  3. Output Gate: পূর্ববর্তী স্মৃতির উপর ভিত্তি করে আউটপুট প্রদান করে।

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


LSTM মডেল ব্যবহার করে টাইম সিরিজ ফরকাস্টিং

ধাপ ১: ডেটা প্রস্তুতি

টাইম সিরিজ ডেটাকে LSTM মডেলে ব্যবহার করার আগে কিছু প্রস্তুতি নিতে হবে:

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

ধাপ ২: LSTM মডেল নির্মাণ

LSTM মডেলটি Keras বা TensorFlow লাইব্রেরি ব্যবহার করে তৈরি করা যেতে পারে। সাধারণত এটি একটি লেয়ার বা একাধিক LSTM লেয়ার দিয়ে তৈরি হয়, এবং মডেলটির আউটপুট একটি সিঙ্গল ভ্যালু যা ভবিষ্যত মানের পূর্বাভাস।

ধাপ ৩: মডেল প্রশিক্ষণ এবং মূল্যায়ন

LSTM মডেলটি ট্রেনিং ডেটার উপর প্রশিক্ষণ করা হয়, এবং পরে টেস্ট ডেটার উপর তার কার্যকারিতা মূল্যায়ন করা হয়। সঠিক পারফরম্যান্স নিশ্চিত করতে মডেলটি বিভিন্ন হাইপারপ্যারামিটার (যেমন নেটওয়ার্কের গভীরতা, লেয়ারের সংখ্যা, লার্নিং রেট) এর মাধ্যমে টিউন করা যেতে পারে।

ধাপ ৪: পূর্বাভাস তৈরি

একবার মডেল প্রশিক্ষিত হলে, এটি নতুন ডেটার উপর পূর্বাভাস তৈরি করতে পারে।


Python-এ 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

# ১. ডেটা লোড এবং প্রিপ্রসেসিং
data = pd.read_csv('time_series_data.csv', date_parser=True)
data = data[['Value']]  # শুধুমাত্র ডেটা ভ্যালু নেওয়া হচ্ছে

# স্কেলিং ডেটা
scaler = MinMaxScaler(feature_range=(0, 1))
scaled_data = scaler.fit_transform(data)

# টাইম সিরিজের সিকোয়েন্স তৈরি
def create_sequence(data, time_step=1):
    X, y = [], []
    for i in range(len(data) - time_step - 1):
        X.append(data[i:(i + time_step), 0])
        y.append(data[i + time_step, 0])
    return np.array(X), np.array(y)

time_step = 60  # 60 দিনের ল্যাগ
X, y = create_sequence(scaled_data, time_step)

# ডেটাকে ট্রেনিং এবং টেস্টে ভাগ করা
train_size = int(len(X) * 0.8)
X_train, X_test = X[:train_size], X[train_size:]
y_train, y_test = y[:train_size], y[train_size:]

# ডেটাকে LSTM ইনপুট আকারে রূপান্তর করা
X_train = X_train.reshape(X_train.shape[0], X_train.shape[1], 1)
X_test = X_test.reshape(X_test.shape[0], X_test.shape[1], 1)

# ২. 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')

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

# ৪. পূর্বাভাস তৈরি
train_predict = model.predict(X_train)
test_predict = model.predict(X_test)

# স্কেল করা পূর্বাভাস ফিরিয়ে আনতে (inverse transformation)
train_predict = scaler.inverse_transform(train_predict)
test_predict = scaler.inverse_transform(test_predict)

# ফলাফল প্লট করা
train_plot = np.empty_like(data)
train_plot[:, :] = np.nan
train_plot[time_step:len(train_predict) + time_step, :] = train_predict

test_plot = np.empty_like(data)
test_plot[:, :] = np.nan
test_plot[len(train_predict) + (time_step * 2):len(data), :] = test_predict

plt.plot(scaler.inverse_transform(scaled_data), label='True Value')
plt.plot(train_plot, label='Train Prediction')
plt.plot(test_plot, label='Test Prediction')
plt.legend()
plt.show()

কোডের ব্যাখ্যা:

  1. ডেটা লোড এবং প্রিপ্রসেসিং: প্রথমে টাইম সিরিজ ডেটা লোড করা হয় এবং MinMaxScaler ব্যবহার করে ডেটা স্কেল করা হয় (0 থেকে 1 এর মধ্যে)।
  2. সিকোয়েন্স তৈরি: টাইম সিরিজের ডেটা থেকে সিকোয়েন্স তৈরি করা হয় (যেমন, পূর্ববর্তী 60 দিনের মানের উপর ভিত্তি করে পরবর্তী দিনের পূর্বাভাস)।
  3. LSTM মডেল নির্মাণ: LSTM মডেল তৈরি করা হয়, যেখানে দুটি LSTM লেয়ার এবং একটি Dense লেয়ার থাকে।
  4. মডেল প্রশিক্ষণ: fit ফাংশন ব্যবহার করে মডেলটি প্রশিক্ষিত হয়।
  5. পূর্বাভাস: মডেলটি পূর্বাভাস তৈরি করে এবং স্কেল ফেরত এনে প্রকৃত মানের সাথে তুলনা করা হয়।

LSTM মডেলের সুবিধা:

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

সারাংশ

LSTM (Long Short-Term Memory) মডেল টাইম সিরিজ ফরকাস্টিংয়ের জন্য অত্যন্ত কার্যকর। এটি টাইম সিরিজ ডেটার দীর্ঘমেয়াদী সম্পর্ক শিখতে সক্ষম এবং পূর্ববর্তী মানের উপর ভিত্তি করে ভবিষ্যতের পূর্বাভাস করতে ব্যবহৃত হয়। Python এর Keras বা TensorFlow লাইব্রেরি ব্যবহার করে LSTM মডেলটি তৈরি এবং প্রশিক্ষণ করা যায় এবং পূর্বাভাস তৈরি করা সম্ভব।

Content added By
Promotion

Are you sure to start over?

Loading...