LSTM ব্যবহার করে Time Series Prediction

Keras তে Time Series এবং Forecasting মডেল - কেরাস ডিপ লার্নিং (Deep Learning with Keras) - Machine Learning

410

LSTM (Long Short-Term Memory) হল একটি বিশেষ ধরনের Recurrent Neural Network (RNN), যা টাইম সিরিজ ডেটা এবং সিকোয়েন্স ডেটা প্রক্রিয়া করতে খুবই কার্যকরী। LSTM মডেল দীর্ঘকালীন নির্ভরতা (long-term dependencies) শিখতে সক্ষম, যা সাধারণ RNN মডেলগুলির জন্য একটি চ্যালেঞ্জ হতে পারে। তাই time series prediction (টাইম সিরিজ পূর্বাভাস) এর ক্ষেত্রে LSTM একটি শক্তিশালী টুল।

Time Series Prediction এর ধাপ

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

১. প্রয়োজনীয় লাইব্রেরি ইনস্টলেশন

pip install numpy pandas matplotlib tensorflow scikit-learn

২. ডেটা লোড এবং প্রিপ্রসেসিং

টাইম সিরিজ ডেটা প্রিপ্রসেস করার জন্য প্রথমে ডেটা লোড করতে হবে এবং সঠিক ফরম্যাটে রূপান্তর করতে হবে। এখানে, আমরা কৃত্রিম ডেটার মাধ্যমে কাজ করব।

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 = np.sin(np.linspace(0, 100, 1000))  # Sinusoidal টাইম সিরিজ

# ডেটাকে DataFrame তে রূপান্তর করা
df = pd.DataFrame(data, columns=['value'])
df.plot(figsize=(10,6))
plt.title('Generated Time Series Data')
plt.show()

৩. ডেটা স্কেলিং

LSTM মডেলগুলির জন্য ডেটা স্কেলিং অত্যন্ত গুরুত্বপূর্ণ। সাধারণত, MinMaxScaler ব্যবহার করা হয় যাতে সমস্ত মান 0 থেকে 1 এর মধ্যে নেমে আসে।

# MinMaxScaler ব্যবহার করে ডেটা স্কেলিং করা
scaler = MinMaxScaler(feature_range=(0, 1))
scaled_data = scaler.fit_transform(df.values.reshape(-1, 1))

# স্কেল করা ডেটা প্লট করা
plt.figure(figsize=(10,6))
plt.plot(scaled_data)
plt.title('Scaled Time Series Data')
plt.show()

৪. ডেটা টু সিকোয়েন্স (Time Steps তৈরি করা)

LSTM মডেলটি টাইম স্টেপস (time steps) ব্যবহার করে ডেটা প্রক্রিয়া করে, যেখানে আমরা পূর্ববর্তী সময়ের ডেটা ব্যবহার করে ভবিষ্যতের ডেটা পূর্বাভাস করতে পারি।

# ডেটাকে train এবং test সেটে ভাগ করা
def create_dataset(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 = 50  # পূর্ববর্তী 50 টি সময়ের ডেটা ব্যবহার করা হবে
X, Y = create_dataset(scaled_data, time_step)

# ডেটা শেপ পরিবর্তন করা (LSTM এর জন্য)
X = X.reshape(X.shape[0], X.shape[1], 1)

৫. LSTM মডেল তৈরি

এখন LSTM মডেল তৈরি করা হবে। আমরা একটি সাধারণ LSTM আর্কিটেকচার ব্যবহার করব।

# LSTM মডেল তৈরি করা
model = Sequential()

# LSTM লেয়ার যোগ করা
model.add(LSTM(units=50, return_sequences=False, input_shape=(X.shape[1], 1)))

# Dense লেয়ার যোগ করা
model.add(Dense(units=1))  # একক আউটপুট (future prediction)

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

# মডেল সারাংশ দেখানো
model.summary()

৬. মডেল ট্রেনিং

এখন আমরা LSTM মডেলটি ট্রেন করব।

# মডেল ট্রেনিং করা
model.fit(X, Y, epochs=20, batch_size=32, verbose=1)

৭. ভবিষ্যত পূর্বাভাস

মডেল ট্রেনিং শেষে, আমরা ভবিষ্যতের মান (future values) পূর্বাভাস করতে পারি। এখানে আমরা শেষের কয়েকটি সময় পয়েন্ট নিয়ে ভবিষ্যতের পূর্বাভাস করতে চাই।

# ভবিষ্যত পূর্বাভাসের জন্য ডেটা প্রস্তুত করা
test_input = scaled_data[-time_step:]  # শেষ time_step ডেটা ব্যবহার করা
test_input = test_input.reshape(1, -1, 1)

# ভবিষ্যত মান পূর্বাভাস করা
predicted_value = model.predict(test_input)
predicted_value = scaler.inverse_transform(predicted_value)  # স্কেল থেকে বের করা

print(f"Predicted future value: {predicted_value[0][0]}")

৮. পূর্বাভাস প্লট করা

পূর্বাভাসের ফলাফলটি প্লট করতে:

# পূর্বাভাসের সঙ্গে আসল ডেটা প্লট করা
plt.plot(np.arange(len(scaled_data)), scaled_data, label='True Data')
plt.plot(np.arange(len(scaled_data), len(scaled_data) + 1), predicted_value, marker='o', color='r', label='Predicted Data')
plt.legend()
plt.show()

সারাংশ

  1. ডেটা প্রিপ্রসেসিং: টাইম সিরিজ ডেটা স্কেল করা এবং সিকোয়েন্স তৈরি করা LSTM মডেলকে কার্যকরীভাবে ট্রেন করার জন্য অত্যন্ত গুরুত্বপূর্ণ।
  2. LSTM মডেল: LSTM মডেলটি টাইম সিরিজ ডেটার জন্য একাধিক সময়ের ডিপেন্ডেন্সি শিখে এবং ভবিষ্যত পূর্বাভাস করতে সহায়ক।
  3. মডেল ট্রেনিং: LSTM মডেলটি সাধারণ Mean Squared Error (MSE) লস ফাংশন দিয়ে ট্রেন করা হয় এবং এটি ভবিষ্যত মান পূর্বাভাস করতে সক্ষম।

এভাবে LSTM ব্যবহার করে আপনি টাইম সিরিজ পূর্বাভাস করতে পারেন।

Content added By
Promotion

Are you sure to start over?

Loading...