LSTM للتنبؤ بالسلاسل الزمنية
إعداد التسلسلات، وLSTM عديم الحالة مقابل ذي الحالة، ونافذة الرجوع، والتنبؤ متعدد الخطوات
LSTM للتنبؤ بالسلاسل الزمنية درس مجاني في Learn AI with Python على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Learn AI with Python، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Learn AI with Python 4 دروس في المجموع.
لماذا استخدام LSTM في السلاسل الزمنية؟
LSTM (الذاكرة طويلة وقصيرة المدى) هي شبكة عصبية متكررة تتذكر الأنماط عبر التسلسلات الطويلة باستخدام خلايا ذاكرة ذات بوابات. ويمكنها نمذجة الاعتماديات غير الخطية التي لا يستطيع ARIMA نمذجتها، مما يجعلها فعالة في التعامل مع السلاسل المعقدة عند توفر بيانات كافية.
تقسيم التسلسلات إلى نوافذ
تتعلم LSTM من النوافذ: وهي مقاطع ثابتة الطول من الخطوات السابقة تُستخدم للتنبؤ بالقيمة التالية. عند استخدام نافذة من 10 خطوات، يرى النموذج الخطوات من 1 إلى 10 للتنبؤ بالخطوة 11، ثم الخطوات من 2 إلى 11 للتنبؤ بالخطوة 12، وهكذا.
إنشاء النوافذ في التعليمات البرمجية
تحوّل دالة مساعدة سلسلة أحادية البعد إلى أزواج من المدخلات والأهداف.
import numpy as np
def make_windows(series, window):
X, y = [], []
for i in range(len(series) - window):
X.append(series[i:i+window])
y.append(series[i+window])
return np.array(X), np.array(y)
X, y = make_windows(values, window=10)تحجيم البيانات
تتدرب الشبكات العصبية بصورة أفضل على مدخلات ذات مقياس موحّد. استخدموا MinMaxScaler لتحويل القيم إلى النطاق [0, 1]، وتذكروا إجراء التحويل العكسي للتنبؤات لاحقًا.
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
scaled = scaler.fit_transform(values.reshape(-1, 1))إعادة تشكيل البيانات من أجل LSTM
تتوقع طبقات Keras LSTM أن تكون للمدخلات البنية (samples, timesteps, features). وفي السلسلة أحادية المتغير، تكون قيمة features هي 1.
# X is (samples, timesteps); add a feature axis
X = X.reshape((X.shape[0], X.shape[1], 1))
print(X.shape) # (samples, timesteps, 1)بناء النموذج
بنية بسيطة تتكون من طبقة LSTM(50) واحدة تغذي مخرجًا من نوع Dense(1) يتنبأ بالقيمة التالية.
from tensorflow.keras import Sequential
from tensorflow.keras.layers import LSTM, Dense
model = Sequential([
LSTM(50, input_shape=(X.shape[1], 1)),
Dense(1)
])لماذا Dense(1)
التنبؤ بخطوة واحدة إلى الأمام هو مسألة انحدار ذات مخرج رقمي واحد، ولذلك تكون الطبقة النهائية Dense(1) من دون دالة تنشيط. أما للتنبؤ بعدة خطوات، فستستخدمون Dense(n_steps).
التجميع
استخدموا المحسّن adam ودالة الخسارة mse (متوسط مربع الخطأ)، فهما الخياران القياسيان للانحدار على الأهداف المستمرة.
model.compile(optimizer="adam", loss="mse")التدريب
درّبوا النموذج على البيانات المقسّمة إلى نوافذ. وتراقب قسمة التحقق قدرة النموذج على التعميم عبر العصور التدريبية.
history = model.fit(
X, y,
epochs=50,
batch_size=32,
validation_split=0.2
)إجراء التنبؤات
أجروا التنبؤات على نوافذ جديدة، ثم نفّذوا التحويل العكسي للعودة إلى المقياس الأصلي.
pred_scaled = model.predict(X_test)
pred = scaler.inverse_transform(pred_scaled)تكديس الطبقات والضبط
بالنسبة إلى السلاسل الأكثر صعوبة، يمكنكم تكديس طبقات LSTM، وذلك بتعيين return_sequences=True في جميع الطبقات باستثناء الأخيرة، وإضافة الإسقاط العشوائي. تلتقط الطبقات الإضافية أنماطًا أعمق، لكنها تحتاج إلى مزيد من البيانات وتزيد خطر فرط التكيّف.
model = Sequential([
LSTM(50, return_sequences=True, input_shape=(X.shape[1], 1)),
LSTM(50),
Dense(1)
])اختبار سريع
اختبروا معرفتكم بالتنبؤ باستخدام LSTM.
مراجعة
جهّزتم النوافذ، وحجّمتم البيانات باستخدام MinMaxScaler، وأعدتم تشكيلها إلى (samples, timesteps, features)، وبنيتم LSTM(50) مع Dense(1)، وجمّعتم النموذج باستخدام adam/mse، ثم درّبتموه وأجريتم التنبؤات مع إجراء التحويل العكسي للعودة إلى المقياس الأصلي. وهنا تنتهي دورة السلاسل الزمنية. الدورة التالية: أنظمة التوصية.
الأسئلة الشائعة
هل درس «LSTM للتنبؤ بالسلاسل الزمنية» مجاني؟
نعم — نص درس «LSTM للتنبؤ بالسلاسل الزمنية» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Learn AI with Python، انتقل إلى CoddyKit PRO. تتضمن دورة Learn AI with Python 4 دروس في المجموع.
ماذا ستتعلم في «LSTM للتنبؤ بالسلاسل الزمنية»؟
إعداد التسلسلات، وLSTM عديم الحالة مقابل ذي الحالة، ونافذة الرجوع، والتنبؤ متعدد الخطوات تتمرن على Learn AI with Python مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Learn AI with Python؟
لا تُشترط خبرة سابقة. Learn AI with Python على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.
كم من الوقت يستغرق درس «LSTM للتنبؤ بالسلاسل الزمنية»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Learn AI with Python هذا؟
نعم. كل درس في Learn AI with Python يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- مكوّنات السلاسل الزمنية والاستقرارية
- نماذج ARIMA وSARIMA
- Prophet للتنبؤ المؤتمت
- LSTM للتنبؤ بالسلاسل الزمنية