Evalml: لبعض الأهداف حيث كان خط الأساس 0 ، "نسبة مئوية أفضل من خط الأساس" هو نان

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

{'F1': nan,
 'MCC Binary': nan,
 'Log Loss Binary': 93.29789549298991,
 'AUC': 58.36492736629537,
 'Precision': nan,
 'Balanced Accuracy Binary': 63.46659876071641,
 'Accuracy Binary': 12.876088314169193}

لقد قمت بإنشاء دفتر ملاحظات Jupyter يقوم بإعادة إنتاج هذه المشكلة في evalml ، وقمت بإرفاقه وملف البيانات المرتبط بمؤشر ترابط في Slack.

enhancement

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

مثل. :-)

ال 9 كومينتر

الناسخ

import evalml
import pandas as pd
X = pd.read_csv('~/Downloads/fraud_500_data.csv').drop(['id', 'expiration_date'], axis=1)
y = X.pop('fraud')
automl = evalml.automl.AutoMLSearch(problem_type="binary", objective="f1")
automl.search(X, y)
# note that all percent_better_than_baseline values are nan in the rankings table
print(automl.rankings)
# can also check the scores of any pipeline other than the baseline pipeline, which should have id 0
print(automl.results['pipeline_results'][1]['percent_better_than_baseline_all_objectives'])

مجموعة البيانات هنا

dsherryrpeck هذا هو السلوك المتوقع لأن خط الأنابيب الأساسي يحصل على درجة 0 على الأهداف مع NaN ( F1 ، MCCBinary ، Precision ). كانت هناك مناقشات حول تعيين القسمة على 0 لتكون إما لانهائية أو لا شيء في هذه الطريقة ولكننا لم نقرر أبدًا أنها أفضل من NaN لأنه إذا سجل خط الأساس أسوأ نتيجة ممكنة لأي هدف ، فعندئذٍ مقارنة "النسبة المئوية أفضل" على ذلك الهدف لا يفيد كثيرًا ويمكن نقله باستخدام None أو NaN أو ما لا نهاية.

ومع ذلك ، قد تكون هناك أسباب أخرى لاختيار أحد هذه الخيارات بدلاً من NaN!

freddyaboulton آه ، هذا منطقي! سأغير الاختبار لتخطي أي هدف حيث يكون خط الأساس 0. شكرًا!

شكرا لك freddyaboulton ! rpeck آسف لم أفهم هذا عندما كنت تسألني عنها بالأمس.

ترك هذا الموضوع مفتوحًا للمناقشة: هل يجب تغيير السلوك في هذه الحالة؟

freddyaboulton لذا فإن F1 و MCCBinary و Precision كلها مقاييس حيث يكون الأكبر هو الأفضل ويتم تقييدها في النطاق [-1 ، 1] (corr) أو [0 ، 1]. هل يمكننا تغيير تحسين نسبة pct لحساب الفرق المطلق من 0 واستخدام ذلك كتحسين النسبة المئوية للنسبة المئوية؟ وإذا كان هذا هو ما نقوم به حاليًا ، فلن أتوقع أن يؤدي خط أساس قدره 0 إلى تحسين nan pct لهذه المقاييس.

dsherry لقد اقترحنا حساب الاختلاف المطلق للأهداف المقيدة بـ [0 ، 1] في مرحلة التصميم ولكننا قررنا أن وجود حسابين مختلفين سيكون أمرًا محيرًا. ومع ذلك ، ربما ينبغي علينا إعادة النظر في أنه نظرًا لأن خط الأنابيب الأساسي مصمم تقريبًا لتسجيل النتيجة 0 على تلك الأهداف. تجدر الإشارة إلى أنه عندما اتخذنا هذا القرار لأول مرة ، كنا نحسب فقط النسبة المئوية الأفضل للهدف الأساسي (وهو ليس أحد هذه الأهداف المحددة باستثناء الانحدار).

حتى لو قمنا بحساب الاختلاف المطلق ، فقد نرغب في التفكير في تغيير سلوك تقسيم Nan / None / inf على 0. إحدى الحالات المثيرة للاهتمام التي يجب أخذها في الاعتبار هي R2 ، نظرًا لأنه في معظم الحالات [0 ، 1] ولكنه تقنيًا (-inf ، 1]. لذلك قد لا يكون حساب الفرق المطلق سليمًا من الناحية الحسابية ولكن نظرًا لأنه الهدف الافتراضي للانحدار ، يجب أن نتوقع رؤية الكثير من خطوط الأساس تسجل 0.

للتلخيص ، هناك تغييران مستقلان يمكننا إجراؤهما ، مما يؤدي إلى أربع نتائج محتملة:

  1. لا تحسب الفرق المطلق للأهداف المحددة في [0 ، 1] ، فالقسمة على 0 هي نان. السلوك الحالي.
  2. لا تحسب الفرق المطلق للأهداف المحددة في [0 ، 1] ، فالقسمة على 0 هي inf.
  3. احسب الفروق المطلقة للأهداف المحددة في [0 ، 1] ، والقسمة على 0 هي نان.
  4. احسب الفروق المطلقة للأهداف المحددة في [0 ، 1] ، والقسمة على 0 هي inf.

على الرغم من أنني أفضل إرجاع NaN عندما نقسم على 0 ، فإن رد الفعل الداخلي للمستخدمين عندما يرون NaN كان هو افتراض حدوث شيء ما في automl. أعتقد أن عودة الوقود النووي المشع سيجعل الأمر أكثر وضوحًا أنه لم يتم كسر أي شيء وأن خط الأنابيب في الواقع أفضل من خط الأساس.

هذا يترك الخيارين 2 و 4.

أعتقد أن وجود عمليتين حسابيتين مختلفتين لـ "النسبة المئوية الأفضل" سيجعل من الصعب توصيل ما يتم حسابه للمستخدمين في الواقع لكل خط أنابيب. ومع ذلك ، تم تصميم خطوط الأنابيب الأساسية لدينا للحصول على درجة 0 للعديد من الأهداف (R2 ، F1 ، MCC) خاصة في المشكلات غير المتوازنة (نحن فقط نتوقع الوضع). هذا يجعل ميزة "النسبة المئوية أفضل" ليست مفيدة جدًا لمعظم المشاكل الواقعية لأن جميع خطوط الأنابيب ستكون "بلا حدود" أفضل من خط الأساس.

أعتقد أنني أميل بنسبة 55٪ للخيار 4 و 45٪ للخيار 2 ولكن أود أن أسمع وجهات نظر أخرى قبل إجراء هذا التغيير!

في وضع الاستعداد اليوم قررنا أن الوقت قد حان لتحديث سلوك "pct أفضل من خط الأساس". نحن نذهب مع الخيارين 2 و 4 أعلاه:

  • استخدم الاختلاف النسبي للأهداف بدون حدود (MSE ، فقدان السجل ، إلخ)
  • استخدم الاختلاف المطلق للأهداف ذات [0 ، 1] حدود (AUC ، R2 ، إلخ)
  • سيتعين علينا التعامل مع حالات الحافة مثل ارتباط بيرسون ([-1 ، 1])
  • قم بإرجاع inf بدلاً من nan إذا كان هناك خطأ قسمة على 0

freddyaboulton هل يتوافق هذا مع ما ناقشناه؟

مثل. :-)

علاوة على ذلك: أوافق على القرار. IMO ، إذا كان المقياس [عادةً ، على الأقل] 0..1 ، فإن الانتقال من 0 إلى 0.2 _ يشعر بأنه تحسن بنسبة 20٪ ، على الرغم من أنه ليس كذلك من الناحية الرياضية. بطريقة ما ، هذا يذكرني بكل تلك الصيغ التي تأخذ log من الكمية ، لكنها تضيف 1 أولاً بحيث لا تأخذ log من 0.

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