AI

أوبتونا لعمليات تعلم الآلة للسلاسل الزمنية

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

لماذا أوبتونا بدلاً من البحث الشبكي؟

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

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

إعداد البيئة

قبل الغوص في الكود، تأكد من تثبيت المكتبات اللازمة. سنستخدم pandas لمعالجة البيانات، وlightgbm لنموذج التنبؤ، وoptuna للتحسين. بالنسبة لبيئة الإنتاج، فكر في استخدام mlflow لتتبع التجارب جنباً إلى جنب مع أوبتونا.

!pip install optuna lightgbm pandas scikit-learn

تنفيذ دالة الهدف

جوهر دمج أوبتونا هو دالة الهدف. تحدد هذه الدالة ما نريد تحسينه. بالنسبة للتنبؤ بالسلاسل الزمنية، نقوم عادةً بتقليل الخطأ المعياري الجذر التربيعي (RMSE) على مجموعة التحقق. من الضروري التعامل مع تقسيمات السلاسل الزمنية بعناية لتجنب تسرب البيانات. سنستخدم نهج التحقق المتقدم البسيط داخل دالة الهدف.

import optuna
import lightgbm as lgb
import numpy as np
from sklearn.metrics import mean_squared_error

def objective(trial):
    # Define the search space
    params = {
        'objective': 'regression',
        'metric': 'rmse',
        'verbosity': -1,
        'boosting_type': 'gbdt',
        'num_leaves': trial.suggest_int('num_leaves', 2, 256),
        'learning_rate': trial.suggest_float('learning_rate', 0.01, 0.1, log=True),
        'feature_fraction': trial.suggest_float('feature_fraction', 0.4, 1.0),
        'bagging_fraction': trial.suggest_float('bagging_fraction', 0.4, 1.0),
        'bagging_freq': trial.suggest_int('bagging_freq', 1, 7)
    }
    
    # Assume X_train, y_train, X_val, y_val are pre-loaded
    # In production, these should be handled via a robust data pipeline
    
    train_data = lgb.Dataset(X_train, label=y_train)
    val_data = lgb.Dataset(X_val, label=y_val, reference=train_data)
    
    # Train the model with early stopping
    model = lgb.train(
        params,
        train_data,
        num_boost_round=1000,
        valid_sets=[val_data],
        callbacks=[lgb.early_stopping(50)]
    )
    
    # Predict and calculate RMSE
    predictions = model.predict(X_val)
    rmse = np.sqrt(mean_squared_error(y_val, predictions))
    
    return rmse

تشغيل التحسين مع التكامل مع عمليات تعلم الآلة

لجعل هذا جاهزاً للإنتاج، يجب علينا دمج تتبع التجارب. تدعم أوبتونا بشكل مدمج MLflow، مما يسمح لنا بتسجيل المعلمات والمقاييس وحتى عناصر نموذج التدريب. يضمن هذا إمكانية إعادة الإنتاج ويسهل نشر النموذج.

import mlflow

# Set up MLflow tracking
mlflow.set_tracking_uri("http://localhost:5000")
mlflow.set_experiment("TimeSeries_Optuna_Tuning")

# Create the study with pruning to discard poor trials
study = optuna.create_study(
    direction="minimize",
    sampler=optuna.samplers.TPESampler(seed=42),
    pruner=optuna.pruners.MedianPruner(n_startup_trials=5)
)

# Optimize
study.optimize(objective, n_trials=50)

# Get best hyperparameters
best_params = study.best_params
print(f"Best parameters: {best_params}")
print(f"Best RMSE: {study.best_value}")

الخاتمة

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

Share: