يستخدم تحليل الحساسية لتحديد تأثير مجموعة من العوامل المستقلة على متغير تابع في ظل ظروف معينة.
إنه نهج قوي لتحديد كيفية تأثر مخرجات النموذج بمدخلات النموذج بشكل عام. في هذا المنشور ، سأقدم نظرة عامة سريعة على تحليل الحساسية باستخدام SALib ، حزمة تحليل حساسية Python المجانية.
تمثل القيمة العددية المعروفة باسم مؤشر الحساسية في كثير من الأحيان حساسية كل مدخل. هناك أنواع عديدة من مؤشرات الحساسية:
- مؤشرات الدرجة الأولى: تحسب مساهمة إدخال نموذج واحد في تباين المخرجات.
- مؤشرات الدرجة الثانية: تحسب مساهمة نموذجين من المدخلات في تباين المخرجات.
- مؤشر الترتيب الإجمالي: يحدد مساهمة مدخلات النموذج في تباين المخرجات ، بما في ذلك تأثيرات الدرجة الأولى (يتأرجح الإدخال وحده) وأي تفاعلات ذات ترتيب أعلى.
ما هو صليب؟
صليب هو مستند إلى بايثون المصدر المفتوح مجموعة أدوات لإجراء تقييمات الحساسية. يحتوي على سير عمل منفصل ، مما يعني أنه لا يتفاعل بشكل مباشر مع النموذج الرياضي أو الحسابي. بدلاً من ذلك ، يكون SALib مسؤولاً عن إنتاج مدخلات النموذج (من خلال إحدى وظائف العينة) وحساب مؤشرات الحساسية (عبر إحدى وظائف التحليل) من مخرجات النموذج.
يتكون تحليل حساسية ساليب النموذجي من أربع خطوات:
- تحديد مدخلات النموذج (المعلمات) ونطاق العينة لكل منها.
- لإنشاء مدخلات النموذج ، قم بتشغيل دالة العينة.
- قم بتقييم النموذج باستخدام المدخلات التي تم إنشاؤها وحفظ نتائج النموذج.
- لحساب مؤشرات الحساسية ، استخدم وظيفة التحليل على المخرجات.
Sobol و Morris و FAST ليست سوى عدد قليل من طرق تحليل الحساسية التي يوفرها SALib. تؤثر العديد من العوامل على النهج الأفضل لتطبيق معين ، كما سنرى لاحقًا. في الوقت الحالي ، ضع في اعتبارك أنك تحتاج فقط إلى استخدام وظيفتين ، العينة والتحليل ، بغض النظر عن التقنية التي تستخدمها. سنوجهك من خلال مثال أساسي لتوضيح كيفية استخدام سالب.
مثال صليب - تحليل حساسية سوبول
في هذا المثال ، سوف نفحص حساسية Sobol لوظيفة Ishigami ، كما هو موضح أدناه. نظرًا لارتفاع مستوى اللاخطية وعدم التوتر ، تُستخدم وظيفة Ishigami على نطاق واسع لتقييم منهجيات تحليل عدم اليقين والحساسية.
الخطوات تسير على النحو التالي:
1. استيراد صليب
الخطوة الأولى هي إضافة المكتبات المطلوبة. يتم الاحتفاظ بوظائف العينة والتحليل الخاصة بـ SALib في وحدات Python النمطية. استيراد عينة القمر الصناعي ووظائف تحليل سوبول ، على سبيل المثال ، مبين أدناه.
نستخدم أيضًا وظيفة Ishigami ، المتوفرة كوظيفة اختبار في SALib. أخيرًا ، نقوم باستيراد NumPy حيث يستخدمه SALib لتخزين مدخلات ومخرجات النموذج في مصفوفة.
2. نموذج الإدخال
يجب بعد ذلك تحديد مدخلات النموذج. تقبل الدالة Ishigami ثلاثة مدخلات: x1 و x2 و x3. في سالب ، نقوم ببناء الأمر الذي يحدد عدد المدخلات وأسمائها وحدود كل مدخل ، كما هو موضح أدناه.
3. توليد العينات والنموذج
ثم يتم إنشاء العينات. نحتاج إلى إنشاء عينات باستخدام جهاز أخذ عينات Saltelli لأننا نقوم بتحليل حساسية Sobol. في هذه الحالة ، قيم المعلمات هي مصفوفة NumPy. يمكننا ملاحظة أن المصفوفة تساوي 8000 × 3 بتشغيل قيم المعلمات. تم إنشاء 8000 عينة باستخدام جهاز أخذ العينات Saltelli. يقوم جهاز أخذ العينات من Saltelli بإنشاء عينات ، حيث يكون N هو 1024 (المعلمة التي قدمناها) و D هو 3. (عدد مدخلات النموذج).
كما ذكرنا سابقًا ، لا تشارك ساليب في تقييم النموذج الرياضي أو الحسابي. إذا كان النموذج مكتوبًا بلغة Python ، فستقوم عادةً بإجراء حلقة من خلال كل إدخال عينة وتقييم النموذج:
يمكن حفظ العينات في ملف نصي إذا لم يتم تطوير النموذج في Python:
يمثل كل سطر في قيم المعلمات. txt إدخال نموذج واحد. يجب حفظ مخرجات النموذج في ملف آخر بنفس النمط ، مع إخراج واحد في كل سطر. بعد ذلك ، يمكن تحميل المخرجات بـ:
في هذا المثال ، سنستخدم دالة Ishigami من SALib. يمكن تقييم وظائف الاختبار هذه على النحو التالي:
4. إجراء التحليل
يمكننا أخيرًا حساب مؤشرات الحساسية بعد تحميل نتائج النموذج في Python. في هذا المثال ، سنستخدم sobol.analyze لحساب مؤشرات الترتيب الأول والثاني وإجمالي.
Si هو قاموس Python به المفاتيح "S1" و "S2" و "ST" و "S1 conf" و "S2 conf" و "ST conf." تحتفظ مفاتيح _conf بفواصل الثقة المرتبطة ، والتي يتم تعيينها بشكل عام على 95 بالمائة. لإخراج جميع الفهارس ، استخدم معلمة الكلمة الأساسية print to console = True. بدلاً من ذلك ، كما هو موضح أدناه ، قد نطبع القيم الفردية من Si.
يمكننا أن نرى أن x1 و x2 لديهما حساسية من الدرجة الأولى ، لكن لا يبدو أن لـ x3 أي تأثيرات من الدرجة الأولى.
إذا كانت مؤشرات الترتيب الإجمالي أكبر بكثير من مؤشرات الدرجة الأولى ، فمن المؤكد أن التفاعلات ذات الترتيب الأعلى تحدث. يمكننا أن نرى هذه التفاعلات عالية الترتيب من خلال النظر إلى مؤشرات الدرجة الثانية:
يمكننا أن نلاحظ أن x1 و x3 لهما تفاعلات مهمة. بعد ذلك ، قد يتم تحويل النتيجة إلى Pandas DataFrame لمزيد من الدراسة.
5. التآمر
لراحتك ، يتم توفير مرافق الرسوم البيانية الأساسية. تنتج الدالة plot () كائنات محور matplotlib لمعالجتها لاحقًا.
وفي الختام
ساليب عبارة عن مجموعة أدوات متطورة لتحليل الحساسية. تشمل التقنيات الأخرى في ساليب اختبار فورييه لحساسية السعة (FAST) ، وطريقة موريس ، والقياس المستقل لحظة دلتا. على الرغم من أنها مكتبة Python ، إلا أنها مصممة للعمل مع نماذج من أي نوع.
تقدم ساليب واجهة سطر أوامر سهلة الاستخدام لإنشاء مدخلات النموذج وتقييم مخرجات النموذج. الدفع توثيق صليب لتعلم المزيد.
اترك تعليق