الذكاء الاصطناعي

دليل كامل للسلسلة الزمنية ML

يعتمد نجاح مسارات التعلم الآلي على هندسة الميزات كأساس أساسي لها. أقوى طريقتين للتعامل مع بيانات السلاسل الزمنية هما ميزات التأخير وميزات التدوير، وفقًا لتقنياتك المتقدمة. ستعمل القدرة على استخدام هذه التقنيات على تحسين أداء النموذج الخاص بك للتنبؤ بالمبيعات والتنبؤ بأسعار الأسهم ومهام تخطيط الطلب.

يشرح هذا الدليل ميزات التأخير والتدوير من خلال إظهار أهميتها وتوفير طرق تنفيذ Python وتحديات التنفيذ المحتملة من خلال أمثلة التعليمات البرمجية للعمل.

ما هي هندسة الميزات في السلاسل الزمنية؟

تعمل هندسة ميزات السلاسل الزمنية على إنشاء متغيرات إدخال جديدة من خلال عملية تحويل البيانات المؤقتة الأولية إلى ميزات تمكن نماذج التعلم الآلي من اكتشاف الأنماط الزمنية بشكل أكثر فعالية. تختلف بيانات السلاسل الزمنية عن مجموعات البيانات الثابتة لأنها تحافظ على بنية تسلسلية، الأمر الذي يتطلب من المراقبين أن يفهموا أن الملاحظات السابقة تؤثر على ما سيأتي بعد ذلك.

تفتقر نماذج التعلم الآلي التقليدية XGBoost وLightGBM وRandom Forests إلى القدرات المضمنة لمعالجة الوقت. يتطلب النظام مؤشرات محددة تحتاج إلى إظهار الأحداث الماضية التي حدثت من قبل. إن تنفيذ ميزات التأخير جنبًا إلى جنب مع الميزات المتداولة يخدم هذا الغرض.

ما هي ميزات التأخر؟

ميزة التأخر هي ببساطة قيمة سابقة لمتغير تم إزاحته للأمام بمرور الوقت حتى يتطابق مع نقطة البيانات الحالية. يعتمد التنبؤ بالمبيعات لهذا اليوم على ثلاثة مصادر مختلفة لمعلومات المبيعات، والتي تتضمن بيانات مبيعات الأمس وبيانات المبيعات لمدة سبعة أيام وثلاثين يومًا.

ما هي ميزات التأخر

لماذا تعتبر ميزات التأخر مهمة؟

  • إنها تمثل العلاقة بين فترات زمنية مختلفة عندما يظهر المتغير قيمه السابقة.
  • تسمح هذه الطريقة بتشفير الأنماط الموسمية والدورية دون الحاجة إلى تحويلات معقدة.
  • توفر الطريقة حسابًا بسيطًا مع نتائج واضحة.
  • يعمل النظام مع جميع نماذج التعلم الآلي التي تستخدم الهياكل الشجرية والأساليب الخطية.

تنفيذ ميزات LAG في بايثون

import pandas as pd
import numpy as np
# Create a sample time series dataset
np.random.seed(42)
dates = pd.date_range(start="2024-01-01", periods=15, freq='D')
sales = (200, 215, 198, 230, 245, 210, 225, 260, 275, 240, 255, 290, 305, 270, 285)
df = pd.DataFrame({'date': dates, 'sales': sales})
df.set_index('date', inplace=True)
# Create lag features
df('lag_1') = df('sales').shift(1)
df('lag_3') = df('sales').shift(3)
df('lag_7') = df('sales').shift(7)
print(df.head(12))

الإخراج:

الإخراج - تنفيذ ميزات LAG في بايثون

يوضح المظهر الأولي لقيم NaN شكلاً من أشكال فقدان البيانات الذي يحدث بسبب التأخر. يصبح هذا العامل حاسما لتحديد عدد فترات التأخر التي سيتم إنشاؤها.

اختيار قيم التأخر الصحيحة

تتطلب عملية الاختيار للتأخير الأمثل أساليب علمية تقضي على الاختيار العشوائي كخيار. أظهرت الطرق التالية نتائج ناجحة في الممارسة العملية:

  • معرفة المجال تساعد كثيرًا، مثل بيانات المبيعات الأسبوعية؟ أضف فترات تأخير عند 7، 14، 28 يومًا. بيانات الطاقة كل ساعة؟ حاول من 24 إلى 48 ساعة.
  • تتيح وظيفة الارتباط التلقائي ACF للمستخدمين تحديد التأخيرات التي تظهر روابط مهمة للمتغير المستهدف من خلال طريقة الكشف الإحصائي الخاصة بها.
  • سيحدد النموذج أي فترات تأخير لها أعلى أهمية بعد إكمال إجراء التدريب.

ما هي ميزات المتداول (النافذة)؟

تعمل الميزات المتداول كميزات نافذة تعمل من خلال التحرك عبر الزمن لحساب الكميات المتغيرة. يوفر لك النظام إحصائيات مجمعة، والتي تتضمن القيم المتوسطة والوسيطة والانحراف المعياري والحد الأدنى والحد الأقصى لفترات N الأخيرة بدلاً من إظهار قيمة سابقة واحدة لك.

ما هي ميزات المتداول (نافذة).

لماذا يهم الميزات المتداول؟

توفر الميزات التالية قدرات ممتازة لأداء المهام المخصصة لها:

  • تعمل هذه العملية على إزالة عناصر الضوضاء بينما تكشف عن أنماط النمو الأساسية.
  • يتيح النظام للمستخدمين مراقبة تقلبات الأسعار قصيرة المدى التي تحدث خلال فترات زمنية محددة.
  • يتيح النظام للمستخدمين مراقبة تقلبات الأسعار قصيرة المدى التي تحدث خلال فترات زمنية محددة.
  • يحدد النظام سلوكًا غير عادي عندما تتحرك القيم الحالية بعيدًا عن المتوسط ​​​​المتداول المحدد.

تثبت المجموعات التالية وجودها كممارسة قياسية في النوافذ المتدحرجة:

  • تستخدم الطريقة الأكثر شيوعًا لتجانس الاتجاه وسيلة التدحرج كطريقة أساسية.
  • تقوم دالة الانحراف المعياري المتداول بحساب درجة التباين الموجودة خلال نافذة زمنية محددة.
  • تحدد وظائف الحد الأدنى والحد الأقصى أعلى وأدنى القيم التي تحدث خلال فترة/فترة زمنية محددة.
  • توفر وظيفة الوسيط المتداول نتائج دقيقة للبيانات التي تتضمن القيم المتطرفة وتظهر مستويات عالية من الضوضاء.
  • تساعد وظيفة المبلغ المتداول على تتبع الحجم الإجمالي أو العدد الإجمالي عبر الوقت.

تنفيذ ميزات المتداول في بايثون

import pandas as pd
import numpy as np
np.random.seed(42)
dates = pd.date_range(start="2024-01-01", periods=15, freq='D')
sales = (200, 215, 198, 230, 245, 210, 225, 260, 275, 240, 255, 290, 305, 270, 285)
df = pd.DataFrame({'date': dates, 'sales': sales})
df.set_index('date', inplace=True)
# Rolling features with window size of 3 and 7
df('roll_mean_3') = df('sales').shift(1).rolling(window=3).mean()
df('roll_std_3') = df('sales').shift(1).rolling(window=3).std()
df('roll_max_3') = df('sales').shift(1).rolling(window=3).max()
df('roll_mean_7') = df('sales').shift(1).rolling(window=7).mean()
print(df.round(2))

الإخراج:

تنفيذ ميزات المتداول في بايثون

يجب تنفيذ الدالة .shift(1) قبل الدالة .rolling() لأنها تنشئ اتصالاً حيويًا بين كلتا الدالتين. يحتاج النظام إلى هذه الآلية لأنه سيقوم بإنشاء حسابات متجددة تعتمد حصريًا على البيانات التاريخية دون استخدام أي بيانات حالية.

الجمع بين ميزات التأخر والتدحرج: مثال جاهز للإنتاج

في سير عمل السلاسل الزمنية الفعلية للتعلم الآلي، يقوم الباحثون بإنشاء مجموعة ميزات هجينة خاصة بهم، والتي تتضمن كلاً من ميزات التأخر وميزات التدوير. نحن نقدم لك وظيفة هندسية كاملة الميزات، والتي يمكنك استخدامها لأي مشروع.

import pandas as pd
import numpy as np
def create_time_features(df, target_col, lags=(1, 3, 7), windows=(3, 7)):
"""
Create lag and rolling features for time series ML.
Parameters:
df : DataFrame with datetime index
target_col : Name of the target column
lags : List of lag periods
windows : List of rolling window sizes
Returns:
DataFrame with new features
"""
df = df.copy()
# Lag features
for lag in lags:
df(f'lag_{lag}') = df(target_col).shift(lag)
# Rolling features (shift by 1 to avoid leakage)
for window in windows:
shifted = df(target_col).shift(1)
df(f'roll_mean_{window}') = shifted.rolling(window).mean()
df(f'roll_std_{window}') = shifted.rolling(window).std()
df(f'roll_max_{window}') = shifted.rolling(window).max()
df(f'roll_min_{window}') = shifted.rolling(window).min()
return df.dropna() # Drop rows with NaN from lag/rolling

# Sample usage
np.random.seed(0)
dates = pd.date_range('2024-01-01', periods=60, freq='D')
sales = 200 + np.cumsum(np.random.randn(60) * 5)
df = pd.DataFrame({'sales': sales}, index=dates)
df_features = create_time_features(df, 'sales', lags=(1, 3, 7), windows=(3, 7))
print(f"Original shape: {df.shape}")
print(f"Engineered shape: {df_features.shape}")
print(f"\nFeature columns:\n{list(df_features.columns)}")
print(f"\nFirst few rows:\n{df_features.head(3).round(2)}")

الإخراج:

الجمع بين ميزات التأخر والتدحرج

الأخطاء الشائعة وكيفية تجنبها

يحدث الخطأ الأكثر خطورة في هندسة ميزات السلاسل الزمنية عندما يؤدي تسرب البيانات، الذي يكشف عن البيانات القادمة لاختبار الميزات، إلى أداء نموذجي مضلل.

الأخطاء الرئيسية التي يجب الانتباه إليها:

  • تتطلب العملية أمر .shift(1) قبل بدء وظيفة .rolling(). ستصبح الملاحظة الحالية جزءًا من النافذة المتداولة لأن التدوير يتطلب تغيير الملاحظة الأولى.
  • يحدث فقدان البيانات من خلال إضافة الفترات الزمنية لأن كل تأخر ينشئ صفوف NaN. ستفقد مجموعة البيانات المكونة من 100 صف 30% من بياناتها لأن 30 تأخرًا يتطلب إنشاء 30 صفًا من NaN.
  • تتطلب العملية تجارب منفصلة لحجم النافذة لأن الخصائص المختلفة تحتاج إلى أحجام نوافذ مختلفة. وتتطلب العملية اختبار النوافذ القصيرة التي تتراوح من 3 إلى 5، والنوافذ الطويلة التي تتراوح من 14 إلى 30.
  • تتطلب بيئة الإنتاج منك حساب ميزات التدحرج والتأخير من البيانات التاريخية الفعلية، والتي ستستخدمها أثناء وقت الاستدلال بدلاً من استخدام بيانات التدريب الخاصة بك.

متى يتم استخدام ميزات التأخر مقابل ميزات التدحرج

حالة الاستخدام الميزات الموصى بها
الارتباط التلقائي القوي في البيانات ميزات التأخر (تأخر 1، تأخر 7)
إشارة صاخبة، تحتاج إلى تجانس المتداول يعني
الأنماط الموسمية (أسبوعيًا) فريق 7، فريق 14، فريق 28
كشف الاتجاه المتداول يعني على النوافذ الطويلة
كشف الشذوذ الانحراف عن المتداول يعني
التقاط التقلبات / المخاطر المتداول الانحراف المعياري، نطاق المتداول

خاتمة

تستخدم البنية التحتية للتعلم الآلي للسلسلة الزمنية ميزات التأخير والميزات المتداولة كمكونات أساسية لها. تنشئ الطريقتان مسارًا من البيانات التسلسلية غير المعالجة إلى تنسيق البيانات المنظم الذي تتطلبه نماذج التعلم الآلي لعملية التدريب الخاصة بها. تصبح الأساليب عامل التأثير الأعلى لدقة التنبؤ عندما ينفذها المستخدمون من خلال معالجة البيانات الدقيقة وطرق اختيار النوافذ، وفهمهم السياقي لحقل معين.

أفضل جزء؟ أنها توفر تفسيرات واضحة تتطلب الحد الأدنى من موارد الحوسبة وتعمل مع أي نموذج للتعلم الآلي. ستفيدك هذه الميزات بغض النظر عما إذا كنت تستخدم XGBoost للتنبؤ بالطلب، أو LSTM للكشف عن الحالات الشاذة، أو الانحدار الخطي للنماذج الأساسية.

ريا بانسال.

متدرب في مجال الذكاء الاصطناعي في Analytics Vidhya
قسم علوم الحاسوب، معهد فيلور للتكنولوجيا، فيلور، الهند

أعمل حاليًا كمتدرب في مجال الذكاء الاصطناعي العام في Analytics Vidhya، حيث أساهم في الحلول المبتكرة المستندة إلى الذكاء الاصطناعي والتي تمكن الشركات من الاستفادة من البيانات بشكل فعال. باعتباري طالبًا في علوم الكمبيوتر في السنة النهائية في معهد فيلور للتكنولوجيا، أضع أساسًا متينًا في تطوير البرمجيات وتحليلات البيانات والتعلم الآلي في دوري.

لا تتردد في التواصل معي على (البريد الإلكتروني محمي)

قم بتسجيل الدخول لمواصلة القراءة والاستمتاع بالمحتوى الذي ينظمه الخبراء.


Source link

مقالات ذات صلة

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

زر الذهاب إلى الأعلى