Evalml: AutoMLSearch: استدعاء البحث مرتين في نفس الحالة لا يعمل

تم إنشاؤها على ١١ نوفمبر ٢٠٢٠  ·  5تعليقات  ·  مصدر: alteryx/evalml

لست متأكدًا مما إذا كان هذا هو السلوك المقصود ، ولكن عندما اتصل automl.search(X, y) على نفس كائن automl ، فإن البحث الثاني سيجري الجولة الأساسية ثم يغادر لأن عدد التكرارات يبدأ من 6 (أو 1 + عدد التكرارات من البحث الأول):

image

bug

ال 5 كومينتر

@ angela97lin أعتقد أن الخطأ هو أننا قمنا بتسجيل خط الأساس في المرة الثانية ولكني أعتقد أنه من المفترض ألا يتم البحث عن خطوط أنابيب غير أساسية خلال المرة الثانية.

أعتقد أن النداء الثاني للبحث يجب أن يكون "no-op" لذا ربما يجب علينا إعادة بناء البحث لتسجيل خط الأساس في "الجولة" الأولى فقط. ما رأيك؟

freddyaboulton Hm ، أحب

على نطاق أوسع ، هل المقصود أن يكون المستخدم قادرًا على إعادة استخدام نفس كائن automl؟ أم يجب عليهم إنشاء كائن جديد في كل مرة يريدون إجراء البحث؟

نقطة عظيمة @ angela97lin ! أعتقد أن تصميمنا الحالي AutoMLSearch يفسح المجال لنموذج "كائن واحد لكل بحث" الذي ذكرته. استنتاجي هو أن الكثير من معلمات التكوين التي يحددها المستخدم عند إنشاء البحث خاصة بالمشكلة / مجموعة البيانات الموجودة ( problem_type ، allowed_pipelines ، objective ). من المحتمل أن تكون قيم هذه المعلمات معقولة لنوع واحد من X ، y لكن ليس أي نوع آخر معطى X ، y من نفس نوع المشكلة . علاوة على ذلك ، سيكون جدول rankings مضللًا إذا سمحنا للمستخدم بإجراء بحث على مجموعات بيانات منفصلة نظرًا لأن درجات السيرة الذاتية لن تكون قابلة للمقارنة بشكل مباشر.

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

يسعدنا التحدث عما إذا كان يجب علينا إعادة بناء / إعادة تصميم AutoMLSearch للسماح بالاتصال بـ search عدة مرات. ليس لدي رأي قوي حتى الآن حول ما سيكون أكثر فائدة لمستخدمينا النهائيين!

@ angela97linfreddyaboulton شكرا لتقديم ومناقشة كبيرة. أنا موافق!

كما ألمحت إلى كلاكما ، كنا نتحدث عن هذا التصاعدي ، أي "نظرًا لواجهة برمجة التطبيقات الحالية ، ما الذي يجب أن يكون عليه السلوك؟" ، ولكن يجب علينا أيضًا التفكير في هذا الأمر من أعلى إلى أسفل ، أي "ما الأشياء التي يريد المستخدمون القيام بها مع البحث الآلي؟ " أعتقد أننا إذا قررنا أننا نريد دعم سلوك مثل الإيقاف المؤقت واستئناف عمليات البحث ، فيجب أن نفكر في إنشاء واجهة برمجة تطبيقات مختلفة لذلك (# 1047) قبل أن نستثمر الوقت في تحديث AutoMLSearch أكثر.

مع وضع ذلك في الاعتبار ، فإن الخيارات لما يجب أن يحدث عندما نستدعي search مرة أخرى على مثيل AutoMLSearch بعد الاستدعاء الأول (ليس بالضرورة حصريًا بشكل متبادل):

  1. سلوك عربات التي تجرها الدواب الحالية
  2. خطأ: "إجراء البحث أكثر من مرة على مثيل AutoMLSearch غير مسموح به"
  3. No-op: لا شيء يحدث.
  4. أعد تشغيل البحث بالكامل من البداية. تتم الكتابة فوق كل الحالات التي تم إنشاؤها أثناء المكالمات السابقة search
  5. "متابعة" أو "استئناف" البحث من حيث توقف

أوافق على أن الخيار 0 (السلوك الحالي) به أخطاء ويجب علينا تغييره. في الوقت الحالي ، أحب الخيار 2 أو 3 أكثر من غيره. أعتقد أننا يجب أن نختار الخيار 3 في الوقت الحالي ، وإذا كان الأمر يبدو معقدًا للغاية بحيث لا يمكن بناؤه ، فيمكننا الرجوع إلى الخيار 2. على المدى الطويل ، أحب الخيار 4 (متابعة) أكثر من غيره ولكن أعتقد أنه يجب علينا أن نضغط على ذلك من أجل الآن.

dsherry @ angela97linfreddyaboulton الآن أن AutoMLSearch يأخذ في X_train و y_train من خلال تهيئة AutoMLSearch بدلا من وظيفة البحث، هو الخيار 3 لا يزال أفضل طريقة للمضي قدما ؟ نظرًا لأن بيانات X و y للبحث ستكون هي نفسها إذا تم استدعاء البحث ، فيمكننا فقط أن تكون المكالمة no-op بدلاً من تشغيل البحث من البداية؟ لكن بخلاف ذلك ، لا أعتقد أن هناك الكثير للقيام به بشأن هذه المسألة. دعني ارى آراءك!

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات