Evalml: دعم معايير فحص البيانات ؛ لديك InvalidTargetDataCheck تحقق من صحة الهدف باستخدام نوع المشكلة

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

إصلاحات # 970.

وفقًا للمناقشة مع freddyaboulton في # 929 ، سيكون من الرائع أن نتمكن من تمرير معلومات إضافية إلى DataChecks. قد يتطلب ذلك تحديث DataCheck API والنظر في كيفية تفاعلها مع AutoML ، نظرًا لأننا لا نقوم بإنشاء مثيل من DataChecks ونمرر فقط فئة DataChecks كمعامل إلى search() .

enhancement

التعليق الأكثر فائدة

أنت تعرف ماذا ، @ angela97linfreddyaboulton ، فلنستخدم هذه المشكلة لتتبع كل من أ) تحديث automl و API للتحقق من البيانات لدعم المعلمات و ب) تحديث InvalidTargetDataCheck للتحقق من صحة الهدف ورفع الأخطاء الذكية ، لجميع الهدف أنواع ندعمها.

أذكر لأنني قدمت للتو خطأً رقم 970 وعند إلقاء نظرة فاحصة ، سيتم إصلاح المشكلة من خلال ما ورد أعلاه. لذلك هذا سوف يغلق # 970.

ال 6 كومينتر

@ angela97lin هل يمكنك وصف حالة الاستخدام لهذا من فضلك؟

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

بدلاً من ذلك ، يمكننا إنشاء فئات للتحقق من البيانات لكل نوع مشكلة ، مثل BinaryClassificationInvalidTargetDataCheck ولكن هذا قد يصبح مشعرًا جدًا أيضًا ، عند تحديد DefaultDataChecks التي يجب أن تتضمنها (أو يجب تقسيمها أيضًا إلى DefaultBinaryClassificationDataChecks؟)

ناقشنا للتو مع @ angela97linfreddyaboulton

نحب فكرة عكس النمط الذي نستخدمه لـ component_graph في خطوط الأنابيب:

  • يمكن تحديد قائمة عمليات التحقق من البيانات مبدئيًا للبحث التلقائي كقائمة من الفئات الفرعية DataCheck (أو نفسها ولكن داخل DataChecks ) ، وليس حالات
  • بمجرد أن يريد البحث الآلي تشغيل عمليات التحقق من البيانات ، يمكنه إنشاء مثيل لفئة DataChecks
  • في هذه المرحلة ، سنقوم بتمريرها data_check_parameters deb ، على غرار خط الأنابيب parameters ، والذي يحتوي على تكوين اختياري لفحص بيانات واحد أو أكثر.
  • إذا أراد المستخدمون استخدام DataChecks مباشرةً ، فيمكنهم اتباع نمط مماثل
  • يجب أن يكون data_check_parameters افتراضيًا هو None حتى لا يحتاج الناس إلى إنشاء ذلك إذا لم يكن مطلوبًا. ولكن إذا كانت الوسيطة المطلوبة مفقودة من فحص البيانات (مثل problem_type للبعض) ، فمن المفترض أن يؤدي ذلك إلى حدوث خطأ في التهيئة

فيما يلي رسم تخطيطي لكيفية ظهور ذلك في البحث التلقائي:

# today this helper standardizes the input to a list of `DataCheck` instances, and wraps that in a `DataChecks` instance
# after this work, this would standardize the input to a `DataChecks` class.
# if `data_checks` was already a `DataChecks` class, do nothing. else if `data_checks` is a list of `DataCheck` classes, define a `AutoMLDataChecks` class to wrap and return that
data_checks_class = self._validate_data_checks(data_checks)
# next we create the `DataChecks` instance by passing in data checks parameters
data_check_parameters = {'Target Datatype Data Check': {'problem_type': self.problem_type}}
data_checks = data_checks_class(data_check_parameters)
data_check_results = data_checks.validate(X, y)

سيبدو الاستخدام المباشر مشابهًا.

الخطوات التالية

  • @ angela97linfreddyaboulton يقوم الآخرون بمراجعة الرسم أعلاه والتحقق منه
  • سيقدم @ angela97lin ملفًا لتتبع إضافة فحص بيانات TargetDatatype (الاسم يتم تحديده لاحقًا) ، بناءً على مناقشتنا في # 960. سيتطلب فحص البيانات هذا تمرير معلمة problem_type
  • يجب على أي شخص يلتقط هذه المشكلة أن يلتقط مشكلة TargetDatatype هذه في نفس الوقت وبناء هذا! 🛠️ 😁

dsherry الخطة تبدو جيدة بالنسبة لي! الشيء الوحيد الذي أود إضافته هو أنني أفضل زيادة قيمة InvalidTargetDataCheck الموجودة بالفعل على إنشاء فحص بيانات جديد ولكن كلا الأسلوبين سيعملان معي. بغض النظر عن أي شخص يختار هذا ، يرجى التأكد من التحقق من أن الهدف يحتوي على قيمتين فريدتين فقط عندما يكون problem_type ثنائيًا. جاء ذلك في المراجعة لـ # 929.

if problem_type == "binary" and len(set(y)) != 2:
    # Warn that we do not have two unique values in y

أنت تعرف ماذا ، @ angela97linfreddyaboulton ، فلنستخدم هذه المشكلة لتتبع كل من أ) تحديث automl و API للتحقق من البيانات لدعم المعلمات و ب) تحديث InvalidTargetDataCheck للتحقق من صحة الهدف ورفع الأخطاء الذكية ، لجميع الهدف أنواع ندعمها.

أذكر لأنني قدمت للتو خطأً رقم 970 وعند إلقاء نظرة فاحصة ، سيتم إصلاح المشكلة من خلال ما ورد أعلاه. لذلك هذا سوف يغلق # 970.

dsherry كيف الوقت المناسب! هذا يبدو جيدًا بالنسبة لي 😊

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