انتقل إلى المحتوى الرئيسي

الوحدة 6 — AutoML: استعمالات مناسبة وحدود

بنينا في الوحدة السابقة تدريبًا يدويًّا لنموذج تنبّؤ الطلب مع مسح للمعاملات الفائقة. Azure ML يعرض بديلًا يبدو أقوى: AutoML يجرّب عشرات النماذج والتحويلات لك تلقائيًّا. الوحدة الحالية تحسم متى يستحقّ هذا الاختيار ومتى يُهدر الوقت والمال.

ما يفعله AutoML فعلًا

AutoML على Azure ليس صندوقًا سحريًّا. هو خطّ معالجة آليّ ينفّذ خمس مراحل:

  1. الاستكشاف الأوّلي: قراءة البيانات، اكتشاف الأنواع، رصد القيم الناقصة.
  2. الهندسة التلقائية للمتغيّرات (Featurization): تشفير الفئات، معالجة النصّ، ملء القيم الناقصة، وللسلاسل الزمنية اشتقاق متغيّرات موسمية.
  3. تجريب النماذج: xgboost، lightgbm، غابة عشوائية، جار متوسّط، شبكات عصبية للسلاسل، إلخ.
  4. ضبط المعاملات الفائقة: مسح داخلي لكلّ نموذج.
  5. التركيب (Ensembling): تركيب أفضل النماذج في مجموعة تُصوّت.

النتيجة أفضل تجربة (best_trial) مع نموذج جاهز للتسجيل والنشر.

تنبّؤ السلاسل الزمنية على متاجرنا

لسلسلة متاجرنا، AutoML مناسب: مسألة تنبّؤ متعدّدة السلاسل (متجر × منتج) مع موسمية أسبوعية وسنوية. تعريف المهمّة:

$schema: https://azuremlschemas.azureedge.net/latest/autoMLJob.schema.json
experiment_name: forecast-automl
task: forecasting
primary_metric: normalized_root_mean_squared_error
compute: azureml:cpu-cluster
training_data:
type: mltable
path: azureml:sales_table:2026.36
target_column_name: units_sold
forecasting:
time_column_name: week
time_series_id_column_names: [store_id, product_id]
forecast_horizon: 4
frequency: W
limits:
timeout_minutes: 120
max_trials: 40
max_concurrent_trials: 8
featurization:
mode: auto

نقاط أساسية:

  • time_series_id_column_names: يُخبر AutoML أنّ لدينا سلاسل متعدّدة يجب معاملتها بشكل منفصل، لا سلسلة واحدة عملاقة.
  • forecast_horizon: 4: نتنبّأ بأربعة أسابيع قادمة.
  • timeout_minutes: 120: الحدّ الأهمّ. بدونه قد يعمل AutoML لأيّام، ويرفع الفاتورة إلى مئات اليوروهات.
  • primary_metric: NRMSE مناسب للتنبّؤ عبر سلاسل مختلفة الحجم.

متى يتفوّق AutoML على اليدوي

خمس حالات AutoML فيها الخيار الصحيح:

  1. خطّ أساس سريع: قبل استثمار أسبوعين في نموذج يدوي، ساعتان من AutoML تعطي رقمًا مرجعيًّا. لو نموذجك اليدوي بعد أسبوعين لا يفوق AutoML، فمشكلة البيانات لا المعمارية.
  2. قصور الوقت والخبرة: فريق تحليل يحتاج توقّعًا مقبولًا لعرض تجاري خلال يومين، دون خبير تعلّم آلة.
  3. تعدّد السلاسل الكبير: 500 متجر × 200 منتج = 100 ألف سلسلة. AutoML مبنيّ لذلك، والنمذجة اليدوية لكلّ سلسلة كارثية.
  4. مسائل قياسية: تنبّؤ بمبيعات، تصنيف عملاء، انحدار عقارات. المسائل التي تجرّى عليها التقنيات كلّها لسنوات.
  5. تسريع الاستكشاف: AutoML يكشف بسرعة إن كان الإشارة موجودة أصلًا في البيانات، أو إن كانت المسألة بلا حلّ.

متى يفشل AutoML

خمس حالات لا ينبغي فيها استعماله:

  1. بيانات صغيرة (أقلّ من 1000 مثال لكلّ سلسلة): يفرط في التخصّص بسرعة، والتركيب لا ينقذ شيئًا.
  2. متطلّبات تفسير صارمة: نموذج تركيبي مركّب لا يُشرَح للسلطة التنظيمية أو للمسؤول الوظيفي. نموذج انحدار خطّي يدوي يُفهَم.
  3. متغيّرات خاصّة بالمجال: هندسة المتغيّرات التي تعلم أنّها المفتاح (سعر متجر منافس، طقس محلّي، حدث محلّي) لا يخترعها AutoML. تُبنى يدويًّا وتُغذَّى.
  4. الأداء الحرج: NRMSE = 0.14 مع AutoML مقابل 0.11 مع نموذج مصمَّم بعناية — ثلاث نقاط قد تعني نصف مليون يورو مخزون فائض في السنة.
  5. الشرح مطلوب على مستوى التنبّؤ: AutoML يعطي شرحًا عبر SHAP لكن التركيب يُعقّده. النموذج البسيط أفضل.

تفسير النماذج المُنتَجة

Azure AutoML يوفّر تفسيرًا آليًّا عبر SHAP. تصل إليه من صفحة best_trial تحت Model explanations. تحصل على:

  • الأهمّية الإجمالية لكلّ متغيّر
  • توزيع تأثير قيمة متغيّر واحد على التنبّؤ
  • تفسير محلّي لتنبّؤ فردي

هذا الجانب يجب استغلاله دائمًا: نموذج AutoML أفضل من اليدوي بأربع نقاط، لكنّه يعتمد على متغيّر مشبوه (تسريب بيانات مثلًا)، سيسقط في الإنتاج بعد أسبوع.

التكلفة الحقيقية

مسح AutoML لمدّة ساعتين على 8 عقد Standard_DS3_v2 = 16 ساعة حوسبة × نحو 0.20 يورو = 3.2 يورو. مقبول لتجربة واحدة. لكن إطلاقه يوميًّا بلا سبب يعطي ألف يورو في السنة لنموذج ربّما لم يتغيّر شيء فيه.

القاعدة العملية:

  • AutoML مرّة أو مرّتين في بداية المشروع لإنشاء الأساس
  • بعد ذلك، تدريب يدوي شهري أو أسبوعي على النموذج المختار
  • إعادة AutoML ربع سنوي للتحقّق من أنّ المعمارية ما زالت الأفضل
AutoML كصدفة سحرية

الإغراء الشائع: إطلاق AutoML، أخذ best_trial، نشره دون قراءة التفسير أو فحص المتغيّرات. بعد شهر يتّضح أنّ AutoML التقط عمودًا يحوي مستقبلًا خبيثًا (كتاريخ يُحسَب لاحقًا) وأنّ التنبّؤ في الإنتاج بلا معنى. دائمًا افحص المتغيّرات المستعملة في best_trial قبل النشر.

الخلاصة

  • AutoML خطّ معالجة آليّ يجرّب النماذج والتحويلات والتركيبات في وقت محدود.
  • مناسب لـخطّ أساس سريع ولـتعدّد سلاسل كبير ولحالات نقص الوقت أو الخبرة.
  • لا يناسب البيانات الصغيرة ولا متطلّبات التفسير الصارمة ولا الأداء الحرج.
  • ينبغي دائمًا فحص متغيّرات best_trial وتفسيره قبل النشر لكشف التسريبات.
  • حدّد timeout_minutes لضبط الفاتورة، ولا تُطلق AutoML يوميًّا بلا مسوّغ.

الوحدة التالية: سجلّ النماذج — كيف نُصدر النموذج المختار ونتتبّع نسبه بين المساحات.