Auto-ML — التوصية التكيفية بالنموذج

PythonScikit-learnRiverPandasFastAPIPlotly/Dash· 3 دقائق قراءة

خدمة Auto-ML تعمل باستمرار وتعيد تقييم عدة نماذج مرشحة بشكل متواصل على تدفق بيانات في الوقت الفعلي، وتنتقل إلى النموذج الأفضل أداءً في تلك اللحظة — دون تدخل بشري، حتى عندما يتغير توزيع البيانات الأساسي مع الوقت.

المشكلة والقيود

تتدهور النماذج الثابتة بصمت مع انجراف البيانات: نموذج تم تدريبه مرة واحدة على بيانات تاريخية يصبح تدريجيًا أقل دقة مع تغيّر الأنماط الحقيقية (الانجراف المفاهيمي) أو تباينها حسب الموسم. إعادة التدريب أو استبدال النماذج وفق جدول زمني ثابت أمر بطيء وأعمى في آنٍ واحد عن اللحظة الفعلية التي يحدث فيها التغيير. كان الهدف هو خدمة قادرة على اكتشاف الانجراف بنفسها وإعادة التحسين دون الحاجة لمراقبة لوحة تحكم.

النهج

  • كل بضع دقائق، تعيد الخدمة تقييم مجموعة من النماذج المرشحة (Hoeffding Tree، وk-NN، وSGD، وRandom Forest، من بين أخرى) على أحدث نافذة من التدفق الحي.
  • كاشفا انجراف — ADWIN وPage-Hinkley (عبر مكتبة river) — يراقبان معدل الخطأ ويُبلّغان عن تغيّر ذي دلالة إحصائية، مما يُفعّل إعادة تقييم خارج الجدول الزمني المعتاد.
  • يصبح النموذج الأفضل أداءً في كل فحص هو النموذج النشط؛ ويُسجَّل التبديل بحيث يكون السجل قابلًا للتدقيق وليس صامتًا.
  • تعرض لوحة تحكم في الوقت الفعلي (FastAPI + Plotly/Dash) المقاييس المهمة لبناء الثقة في النظام: الدقة/F1 المتحركة، وسجل تبديل النماذج، وزمن الاستدلال، واستخدام المعالج والذاكرة.
errorerrorflagflaglive streamactive modelpredicts + scoresADWINadaptive windowslower on abruptPage-Hinkleyfast on suddennoisy on gradualre-evaluationfixed candidate poolswap + logged

الوصف الكامل:

  1. live stream → active model — predicts + scores
  2. active model — predicts + scores → ADWIN — adaptive window — slower on abrupt (error)
  3. active model — predicts + scores → Page-Hinkley — fast on sudden — noisy on gradual (error)
  4. ADWIN — adaptive window — slower on abrupt → re-evaluation — fixed candidate pool — swap + logged (flag)
  5. Page-Hinkley — fast on sudden — noisy on gradual → re-evaluation — fixed candidate pool — swap + logged (flag)
الحلقة التي تُشغّلها الخدمة دون أن يراقبها أحد. الكاشفان مرسومان منفصلين لأن تشغيلهما معًا، بدل اختيار أحدهما، هو المفاضلة المذكورة أدناه. السهم الوحيد الذي لا يستطيع هذا العرض من اليسار إلى اليمين رسمه هو الاستبدال العائد إلى النموذج النشط — وهو ما يُغلق الحلقة.

اكتشاف الانجراف، في الوقت الحي

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

محاكاة تفاعلية — بيانات اصطناعية تُولَّد مباشرة في متصفحك، وليست مقاييس إنتاج حقيقية.

المفاضلات

Decision

ADWIN وPage-Hinkley معًا بدلًا من كاشف واحد: يُكيّف ADWIN حجم نافذته تلقائيًا لكنه يستجيب بشكل أبطأ للتغيّر المفاجئ؛ بينما يكتشف Page-Hinkley التغيّرات المفاجئة بشكل أسرع لكنه أكثر ضجيجًا مع الانجراف التدريجي. استخدام كليهما يغطي حالات فشل أكثر من أي منهما بمفرده، على حساب مزيد من عمليات إعادة التقييم الإيجابية الكاذبة التي يجب ضبطها.

Decision

مجموعة مرشحين ثابتة بدلًا من بحث نماذج غير محدود: مساحة بحث Auto-ML غير المقيّدة ستُبطئ دورة إعادة التقييم إلى درجة تفقدها صفة «الوقت الفعلي». مجموعة مختارة من النماذج السريعة والمفهومة جيدًا والملائمة للتعلم عبر الإنترنت أبقت إعادة التقييم خفيفة بما يكفي للعمل كل بضع دقائق.

النتائج

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

ما كنت سأفعله بشكل مختلف

صياغة فترة إعادة التقييم كمعامل قابل للضبط وحساس لشدة الانجراف بدلًا من فترة ثابتة — الاستجابة بشكل أسرع للانجراف الشديد وبشكل أقل حدة للضوضاء البسيطة من شأنها أن تقلل من تبديل النماذج غير الضروري.