كيفية حساب فترات الثقة لمقاييس الأداء في التعلم الآلي باستخدام طريقة التشغيل التلقائي

عقدة المصدر: 1178501

كيفية حساب فترات الثقة لمقاييس الأداء في التعلم الآلي باستخدام طريقة التشغيل التلقائي

هل قياسات أداء النموذج الخاص بك دقيقة للغاية بسبب مجموعة اختبار "كبيرة"، أو غير مؤكدة للغاية بسبب مجموعة اختبار "صغيرة" أو غير متوازنة؟


By ديفيد بي روزين (دكتوراه)، عالم البيانات الرئيسي لاعتماد الائتمان الآلي في IBM Global Financing



يُظهر الخط البرتقالي 89.7% كحد أدنى لفاصل الثقة للدقة المتوازنة، والأخضر للدقة المتوازنة الأصلية المرصودة = 92.4% (تقدير النقطة)، والأحمر للحد الأعلى البالغ 94.7%. (هذه وجميع الصور من قبل المؤلف ما لم يذكر خلاف ذلك.)

المُقدّمة

 
 
إذا قمت بالإبلاغ عن أداء المصنف الخاص بك على أنه دقة = 94.8% وF1 = 92.3% في مجموعة اختبار، فهذا لا يعني الكثير دون معرفة شيء عن حجم مجموعة الاختبار وتكوينها. سيختلف هامش الخطأ في قياسات الأداء هذه كثيرًا اعتمادًا على حجم مجموعة الاختبار، أو بالنسبة لمجموعة بيانات غير متوازنة، اعتمادًا بشكل أساسي على عدد الحالات المستقلة من أقلية الفئة التي يحتوي عليها (المزيد من النسخ من نفس الحالات من الإفراط في أخذ العينات لا يساعد في تحقيق هذا الغرض).

إذا تمكنت من جمع مجموعة اختبار مستقلة أخرى من أصل مماثل، فمن غير المرجح أن تكون الدقة وF1 لنموذجك في مجموعة البيانات هذه متماثلتين، ولكن ما مدى الاختلاف المعقول بينهما؟ يتم الرد على سؤال مشابه لهذا في الإحصائيات باسم فاصل الثقة من القياس.

إذا أردنا استخلاص العديد من مجموعات بيانات العينات المستقلة من المجموعة السكانية الأساسية، فبالنسبة لـ 95% من مجموعات البيانات هذه، ستكون القيمة السكانية الأساسية الحقيقية للمقياس ضمن فاصل الثقة 95% الذي سنحسبه لمجموعة بيانات العينة المحددة هذه.

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

إذا كنت تريد فقط معرفة كيفية استدعاء هذا الرمز لحساب فترات الثقة، فانتقل إلى القسم "احسب النتائج!" أسفل أدناه.

منهجية التمهيد

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

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

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

• المئين منهجية bootstrap لتقدير فاصل الثقة هي كما يلي:

  1. توليد nboots مجموعات بيانات "عينة التمهيد"، كل منها بنفس حجم مجموعة الاختبار الأصلية. يتم الحصول على كل مجموعة بيانات نموذجية عن طريق رسم مثيلات عشوائيًا من مجموعة الاختبار مع الاستبدال.
  2. في كل مجموعة من مجموعات البيانات النموذجية، قم بحساب المقياس وحفظه.
  3. يتم إعطاء فاصل الثقة 95٪ بواسطة 2.5th إلى شنومكسth المئوية بين nboots القيم المحسوبة للمقياس. لو nboots=1001 وقمت بفرز القيم في سلسلة/مصفوفة/قائمة X الطول 1001، 0th النسبة المئوية X[0] و 100th النسبة المئوية X[1000]، لذلك سيتم إعطاء فاصل الثقة بواسطة X[25] ل X[975].

بالطبع يمكنك حساب أي عدد تريده من المقاييس لكل مجموعة بيانات نموذجية في الخطوة 2، ولكن في الخطوة 3 ستجد النسب المئوية لكل مقياس على حدة.

مجموعة البيانات النموذجية ونتائج فاصل الثقة

 
 
سوف نستخدم نتائج هذه المقالة السابقة كمثال: كيفية التعامل مع التصنيف غير المتوازن ، دون إعادة موازنة البياناتقبل التفكير في المبالغة في البيانات المنحرفة، حاول تعديل حد قرار التصنيف الخاص بك.

في تلك المقالة استخدمنا جدا- كاجل غير متوازن من فئتين مجموعة بيانات تحديد هوية الاحتيال على بطاقة الائتمان. لقد اخترنا استخدام حد تصنيف مختلف تمامًا عن الحد الافتراضي 0.5 المضمن في استخدام طريقة التنبؤ ()، مما يجعل من غير الضروري موازنة البيانات. يُطلق على هذا النهج أحيانًا اسم عتبة تتحرك، حيث يقوم المصنف الخاص بنا بتعيين الفئة من خلال تطبيق العتبة المختارة على احتمالية الفئة المتوقعة التي يوفرها التوقع_proba() طريقة.

سنقصر نطاق هذه المقالة (والرمز) على التصنيف الثنائي: الفئتان 0 و1، حيث تكون الفئة 1 حسب الاتفاقية هي الفئة "الإيجابية" وتحديدًا فئة الأقلية للبيانات غير المتوازنة، على الرغم من أن الكود يجب أن يعمل من أجل الانحدار (فردي) هدف مستمر) كذلك.

إنشاء مجموعة بيانات نموذج تمهيد واحدة

 
 
على الرغم من أن كود فاصل الثقة الخاص بنا يمكنه التعامل مع أعداد مختلفة من وسيطات البيانات التي سيتم تمريرها إلى الدوال المترية، فإننا سنركز على مقاييس نمط sklearn، التي تقبل دائمًا وسيطتي بيانات، y_true وy_pred، حيث ستكون y_pred إما تنبؤات فئة ثنائية (0 أو 1)، أو احتمالات الفئة المستمرة أو تنبؤات دالة القرار، أو حتى تنبؤات الانحدار المستمر إذا كانت y_true مستمرة أيضًا. تقوم الوظيفة التالية بإنشاء مجموعة بيانات نموذج تمهيد واحدة. إنه يقبل أي data_args ولكن في حالتنا ستكون هذه الوسائط ytest(اختبارنا الفعلي/الحقيقي يحدد القيم المستهدفة في ملف المادة السابقة) و hardpredtst_tuned_thresh (الفئة المتوقعة). يحتوي كلاهما على أصفار وواحدات للإشارة إلى الفئة الحقيقية أو المتوقعة لكل مثيل.

تخصيص المقياس المخصص () ووظائف الأداة المساعدة

 
 
سنحدد وظيفة قياس مخصصة للخصوصية، وهي مجرد اسم آخر لاستدعاء سلبي الفئة (الفئة 0). توجد أيضًا وظيفة calc_metrics التي تطبق سلسلة من المقاييس ذات الأهمية على بياناتنا، بالإضافة إلى وظيفتين مفيدتين لها:

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

met=[ metrics.recall_score, specificity_score, metrics.balanced_accuracy_score ]
calc_metrics(met, ytest, hardpredtst_tuned_thresh)



إنشاء مجموعة بيانات لكل نموذج تمهيد وحساب المقاييس الخاصة بها

 
 
في ()raw_metric_samples سنقوم بإنشاء مجموعات بيانات متعددة واحدة تلو الأخرى ونحفظ مقاييس كل منها:

يمكنك إعطاء Raw_metric_samples() قائمة بالمقاييس (أو مقياس واحد فقط) محل الاهتمام بالإضافة إلى بيانات الفئة الحقيقية والمتوقعة، وتحصل على مجموعات بيانات عينة nboots وترجع إطار بيانات بقيم المقاييس المحسوبة من كل مجموعة بيانات فقط. من خلال _boot_generator() فإنه يستدعي one_boot() واحدًا تلو الآخر في تعبير المولد بدلاً من تخزين كافة مجموعات البيانات مرة واحدة كاحتمال -ضخم قائمة.

انظر إلى المقاييس في 7 مجموعات بيانات لنماذج التمهيد

 
 
لقد قمنا بإعداد قائمة الوظائف المترية الخاصة بنا واستدعاء Raw_metric_samples() للحصول على النتائج لمجموعات بيانات مكونة من 7 نماذج فقط. نحن نستدعي Raw_metric_samples() هنا للفهم - ليس من الضروري الحصول على فترات ثقة باستخدام ci_auto() أدناه، على الرغم من تحديد قائمة المقاييس (أو مقياس واحد فقط) لـ ci_auto() is ضروري.

np.random.seed(13)
raw_metric_samples(met, ytest, hardpredtst_tuned_thresh, nboots=7).style.format('{:.2%}') #optional #style



يحتوي كل عمود أعلاه على المقاييس المحسوبة من مجموعة بيانات عينة تمهيد واحدة (مرقمة من 0 إلى 6)، وبالتالي تختلف قيم المقاييس المحسوبة بسبب أخذ العينات العشوائية.

عدد مجموعات بيانات التمهيد، مع الإعداد الافتراضي المحسوب

 
 
في تنفيذنا، بشكل افتراضي عدد مجموعات بيانات التمهيد nboots سيتم حسابها تلقائيًا من مستوى الثقة المطلوب (على سبيل المثال 95%) وذلك لتلبية التوصية الشمال وكيرتس والشام للحصول على الحد الأدنى لعدد نتائج التمهيد في كل ذيل للتوزيع. (في الواقع تنطبق هذه التوصية على p-القيم وبالتالي اختبار الفرضيات مناطق القبول، لكن فترات الثقة متشابهة بدرجة كافية مع تلك التي تستخدم هذا كقاعدة عامة.) على الرغم من أن هؤلاء المؤلفين يوصون بما لا يقل عن 10 نتائج تمهيد في الذيل، ديفيدسون وماكينون نوصي بما لا يقل عن 399 حذاءًا للحصول على ثقة بنسبة 95%، وهو ما يتطلب 11 حذاءًا في الذيل، لذلك نستخدم هذه التوصية الأكثر تحفظًا.

نحدد ألفا وهو 1 – مستوى الثقة. على سبيل المثال، تصبح الثقة 95% 0.95 وألفا = 0.05. إذا قمت بتحديد عدد واضح من الأحذية (ربما أصغر nboots لأنك تريد نتائج أسرع) ولكنها لا تكفي للألفا المطلوبة، سيتم اختيار ألفا أعلى تلقائيًا للحصول على فاصل ثقة دقيق لهذا العدد من عمليات التمهيد. سيتم استخدام ما لا يقل عن 51 حذاءًا لأن أي عدد أقل من ذلك لا يمكن إلا أن يحسب بدقة مستويات الثقة الصغيرة جدًا (مثل ثقة 40% التي تعطي فاصلًا زمنيًا من 30th النسبة المئوية إلى 70th المئوية، التي تحتوي على 40% داخل الفاصل الزمني و60% خارجه) وليس من الواضح ما إذا كانت توصية الحد الأدنى من الأحذية قد فكرت في مثل هذه الحالة.

تعمل الدالة get_alpha_nboots() على تعيين nboots الافتراضي أو تعديل alpha وnboots المطلوبة كما هو مذكور أعلاه:

دعونا نعرض nboots الافتراضي لقيم ألفا المختلفة:

g = get_alpha_nboots pd.DataFrame( [ g(0.40), g(0.20, None), g(0.10), g(), g(alpha=0.02), g(alpha=0.01, nboots=None), g(0.005, nboots=None) ], columns=['alpha', 'default nboots'] ).set_index('alpha')



إليك ما يحدث إذا طلبنا nboots صريحًا:

req=[(0.01,3000), (0.01,401), (0.01,2)]
out=[get_alpha_nboots(*args) for args in req]
mydf = lambda x: pd.DataFrame(x, columns=['alpha', 'nboots'])
pd.concat([mydf(req),mydf(out)],axis=1, keys=('Requested','Using'))



زادت قيم nboots الصغيرة ألفا إلى 0.05 و0.40، وتم تغيير nboots=2 إلى الحد الأدنى وهو 51.

رسم بياني لمجموعات بيانات نماذج التمهيد يُظهر فاصل الثقة فقط من أجل الدقة المتوازنة

 
 
مرة أخرى، لا نحتاج إلى القيام بذلك للحصول على فترات الثقة أدناه عن طريق استدعاء ci_auto().

np.random.seed(13)
metric_boot_histogram (metrics.balanced_accuracy_score, ytest, hardpredtst_tuned_thresh)



يُظهر الخط البرتقالي 89.7% كحد أدنى لفاصل الثقة للدقة المتوازنة، والأخضر للدقة المتوازنة الأصلية المرصودة = 92.4% (تقدير النقطة)، والأحمر للحد الأعلى البالغ 94.7%. (تظهر نفس الصورة في أعلى هذه المقالة.)

كيفية حساب جميع فترات الثقة لقائمة المقاييس

 
 
فيما يلي الوظيفة الرئيسية التي تستدعي ما ورد أعلاه وتحسب فترات الثقة من النسب المئوية لنتائج القياس، وتدرج تقديرات النقاط كعمود أول في إطار بيانات النتائج الخاص بها.

احسب النتائج!

 
 
هذا هو كل ما يتعين علينا فعله حقًا: استدعاء ci_auto() كما يلي مع قائمة المقاييس (met المعينة أعلاه) للحصول على فترات الثقة الخاصة بهم. تنسيق النسبة المئوية اختياري:

np.random.seed(13)
ci_auto( met, ytest, hardpredtst_tuned_thresh ).style.format('{:.2%}')



مناقشة فترات الثقة الناتجة

 
 
ها هي مصفوفة الارتباك من المقال الأصلي. الفئة 0 هي السلبيات (فئة الأغلبية) والفئة 1 هي الإيجابيات (فئة نادرة جدًا)



يحتوي معدل الاستدعاء (المعدل الإيجابي الحقيقي) البالغ 134/(134+14) على أوسع فاصل ثقة لأن هذه نسبة ذات حدين تتضمن أعدادًا صغيرة.

الخصوصية (المعدل السلبي الحقيقي) هي 80,388/(80,388+4,907)، والتي تتضمن كثيرا ذات أعداد أكبر، لذلك فهي تتمتع بفاصل ثقة ضيق للغاية يبلغ [94.11% إلى 94.40%] فقط.

وبما أن الدقة المتوازنة يتم حسابها ببساطة على أنها متوسط ​​الاستدعاء والنوعية، فإن عرض فترة الثقة الخاصة بها يكون متوسطًا بين فترة الثقة الخاصة بهم.

عدم دقة القياس المتري بسبب الاختلافات في بيانات الاختبار، مقابل الاختلافات في بيانات القطار

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

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

استقلال الحالات الفردية

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

تريد أيضًا التأكد من عدم وجود مجموعات تم تقسيمها عبر مجموعة التدريب والاختبار، لأن مجموعة الاختبار ليست بالضرورة مستقلة وقد تتعرض لتجاوز غير مكتشف. على سبيل المثال، إذا كنت تستخدم المعاينة المفرطة، فيجب عليك عمومًا أن تفعل ذلك فقط بعد لقد تم فصله من مجموعة الاختبار، وليس قبل ذلك. وعادةً ما تقوم بتجاوز مجموعة التدريب وليس مجموعة الاختبار، نظرًا لأن مجموعة الاختبار يجب أن تظل ممثلة للمثيلات التي سيراها النموذج عند النشر المستقبلي. وللتحقق من الصحة، قد ترغب في استخدام scikit-learn model_selection.GroupKFold().

وفي الختام

 
 
يمكنك دائمًا حساب فترات الثقة لمقاييس (مقاييس) التقييم الخاصة بك لمعرفة مدى دقة بيانات الاختبار التي تمكنك من قياس أداء النموذج الخاص بك. أخطط لمقالة أخرى لتوضيح فترات الثقة للمقاييس التي تقيم التنبؤات الاحتمالية (أو درجات الثقة - لا علاقة لها بالثقة الإحصائية)، أي التصنيف البسيط، مثل Log Loss أو ROC AUC، بدلاً من المقاييس التي استخدمناها هنا والتي تقيم اختيار منفصل للفئة حسب النموذج (التصنيف الصعب). يعمل نفس الكود لكليهما، وكذلك للانحدار (التنبؤ بمتغير الهدف المستمر) - كل ما عليك فعله هو تمرير نوع مختلف من التنبؤ (ونوع مختلف من الأهداف الحقيقية في حالة الانحدار).

يتوفر دفتر jupyter هذا في جيثب: bootConfIntAutoV1o_standalone.ipynb

هل كانت هذه المقالة مفيدة و/أو مفيدة؟ يُرجى نشر تعليق أدناه إذا كانت لديك أي تعليقات أو أسئلة حول هذه المقالة أو حول فترات الثقة أو التمهيد أو عدد مرات التمهيد أو هذا التنفيذ أو مجموعة البيانات أو النموذج أو نقل العتبة أو النتائج.

بالإضافة إلى ما سبق المادة السابقة، قد تكون مهتمًا أيضًا بـ كيفية الكشف التلقائي عن أعمدة التاريخ / التاريخ والوقت وتعيين نوع البيانات الخاصة بهم عند قراءة ملف CSV في Pandas، على الرغم من أنها لا تتعلق مباشرة بالمقالة الحالية.

بعض الحقوق محفوظة

 
السيرة الذاتية: ديفيد بي روزين (دكتوراه) يشغل منصب كبير علماء البيانات في اعتماد الائتمان الآلي في شركة IBM Global Financing. يمكنك العثور على المزيد من كتابات ديفيد في dabruro.medium.com.

أصلي. تم إعادة النشر بإذن.

هذا الموضوع ذو علاقة بـ:

المصدر: https://www.kdnuggets.com/2021/10/calculate-confidence-intervals-performance-metrics-machine-learning.html

الطابع الزمني:

اكثر من KD nuggets