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

Time Series Analysis এবং Forecasting - টেন্সরফ্লো (TensorFlow) - Machine Learning

380

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

টাইম সিরিজ ফোরকাস্টিংয়ের জন্য RNN/LSTM ব্যবহারের ধাপসমূহ


1. ডেটা প্রস্তুত করা

টাইম সিরিজ ডেটাকে মডেলের জন্য প্রস্তুত করা প্রথম ধাপ। এখানে ডেটাকে সিকুয়েন্স আকারে পরিণত করতে হবে, কারণ RNN এবং LSTM গুলি সিকুয়েনশিয়াল ডেটার উপর কাজ করে।

উদাহরণ:

import numpy as np
import pandas as pd
from sklearn.preprocessing import MinMaxScaler

# টাইম সিরিজ ডেটা লোড করা
df = pd.read_csv('time_series_data.csv')

# শুধুমাত্র 'Value' কলাম ব্যবহার করা
data = df['Value'].values.reshape(-1, 1)

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

2. সিকুয়েন্স তৈরি করা

RNN এবং LSTM মডেলগুলি পূর্ববর্তী টাইম স্ট্যাম্পগুলির উপর ভিত্তি করে ভবিষ্যতের মান অনুমান করে। তাই, আপনি সময়ের সাথে সাথে সিকুয়েন্স তৈরি করতে হবে।

# সিকুয়েন্স তৈরি করার ফাংশন
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 = 100
X, Y = create_dataset(scaled_data, time_step)

# X কে 3D আকারে পুনঃশিক্ষিত করা (num_samples, time_step, features)
X = X.reshape(X.shape[0], X.shape[1], 1)

3. LSTM মডেল তৈরি করা

এখন RNN বা LSTM মডেল তৈরি করতে হবে। এখানে, আমরা Keras ব্যবহার করে একটি LSTM মডেল তৈরি করব।

from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import LSTM, Dense, Dropout

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

# LSTM লেয়ার
model.add(LSTM(units=50, return_sequences=True, input_shape=(X.shape[1], 1)))
model.add(Dropout(0.2))

# আরেকটি LSTM লেয়ার
model.add(LSTM(units=50, return_sequences=False))
model.add(Dropout(0.2))

# আউটপুট লেয়ার
model.add(Dense(units=1))

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

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

এখন মডেলটি প্রশিক্ষণ (training) করা হবে। সাধারণত, আমরা ডেটাকে ট্রেনিং এবং টেস্ট সেটে ভাগ করি।

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

5. ভবিষ্যদ্বাণী করা

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

# ভবিষ্যদ্বাণী করা
predictions = model.predict(X)

# পূর্বাভাস স্কেল পরিবর্তন করা
predictions = scaler.inverse_transform(predictions)

# আসল ডেটাও স্কেল পরিবর্তন করা
Y_actual = scaler.inverse_transform(Y.reshape(-1, 1))

6. ফলাফল মূল্যায়ন

মডেলটির পারফরম্যান্স মূল্যায়ন করা প্রয়োজন, এবং আমরা সাধারণত Mean Squared Error (MSE) বা Root Mean Squared Error (RMSE) ব্যবহার করি।

from sklearn.metrics import mean_squared_error
import math

# RMSE হিসাব করা
rmse = math.sqrt(mean_squared_error(Y_actual, predictions))
print(f'Root Mean Squared Error: {rmse}')

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

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

# ভবিষ্যত ডেটার জন্য পূর্বাভাস
new_data = scaled_data[-time_step:].reshape(1, -1)
new_data = new_data.reshape((new_data.shape[0], new_data.shape[1], 1))
future_prediction = model.predict(new_data)
future_prediction = scaler.inverse_transform(future_prediction)
print(f'Future Prediction: {future_prediction}')

সারাংশ

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

Content added By
Promotion

Are you sure to start over?

Loading...