ניתוח רגישות משמש לקביעת ההשפעה של אוסף של גורמים בלתי תלויים על משתנה תלוי בתנאים מסוימים.
זוהי גישה חזקה לקביעה כיצד התפוקה של המודל מושפעת מהתשומות של המודל במונחים כלליים. בפוסט זה, אתן סקירה מהירה של ניתוח רגישות באמצעות SALib, חבילת ניתוח רגישות חינמית של Python.
ערך מספרי המכונה אינדקס הרגישות, מייצג לעתים קרובות את הרגישות של כל קלט. ישנם סוגים רבים של מדדי רגישות:
- מדדים מסדר ראשון: מחשב את התרומה של קלט מודל בודד לשונות התפוקה.
- מדדים מסדר שני: מחשב את התרומה של שתי תשומות מודל לשונות התפוקה.
- אינדקס הסדר הכולל: מכמת את התרומה של קלט מודל לשונות התפוקה, מקיף הן אפקטים מסדר ראשון (הקלט משתנה לבד) והן כל אינטראקציה מסדר גבוה יותר.
מה זה SALib?
SALib הוא מבוסס Python קוד פתוח ערכת כלים לביצוע הערכות רגישות. יש לו זרימת עבודה מנותקת, מה שאומר שהוא לא מקיים אינטראקציה ישירה עם המודל המתמטי או החישובי. במקום זאת, SALib אחראי על הפקת תשומות המודל (באמצעות אחת מפונקציות המדגם) ומחשוב מדדי הרגישות (באמצעות אחת מפונקציות הניתוח) מתפוקות המודל.
ניתוח רגישות טיפוסי של SALib מורכב מארבעה שלבים:
- קבע את כניסות המודל (פרמטרים) ואת טווח הדגימה עבור כל אחד מהם.
- כדי ליצור קלט מודל, הפעל את פונקציית המדגם.
- הערך את המודל באמצעות התשומות שנוצרו ושמור את תוצאות המודל.
- כדי לחשב את מדדי הרגישות, השתמש בפונקציית הניתוח של הפלטים.
Sobol, Morris ו-FAST הם רק חלק קטן משיטות ניתוח הרגישות שמספק SALib. גורמים רבים משפיעים על הגישה הטובה ביותר עבור יישום נתון, כפי שנראה בהמשך. לעת עתה, זכור שעליך להשתמש רק בשתי פונקציות, לדגום ולנתח, ללא קשר לאיזו טכניקה שתשתמש. אנו נדריך אותך דרך דוגמה בסיסית כדי להמחיש כיצד להשתמש ב- SALib.
דוגמה SALib – Sobol' Sensitivity Analysis
בדוגמה זו, נבחן את רגישות ה-Sobol' של פונקציית האישיגמי, כפי שמוצג להלן. בגלל האי-לינאריות והאי-מונוטוניות הגבוהה שלה, הפונקציה Ishigami נמצאת בשימוש נרחב להערכת מתודולוגיות של ניתוח אי-ודאות ורגישות.
השלבים הולכים כדלקמן:
1. ייבוא SALib
השלב הראשון הוא להוסיף את הספריות הנדרשות. פונקציות הדגימה והניתוח של SALib נשמרות בנפרד במודולי Python. ייבוא דגימת הלוויין ופונקציות ניתוח Sobol, למשל, מוצג להלן.
אנו משתמשים גם בפונקציית Ishigami, הזמינה כפונקציית בדיקה ב-SALib. לבסוף, אנו מייבאים את NumPy מכיוון ש- SALib משתמש בו כדי לאחסן תשומות ויציאות של מודלים במטריצה.
2. קלט דגם
לאחר מכן יש להגדיר את כניסות המודל. הפונקציה Ishigami מקבלת שלוש כניסות: x1, x2 ו-x3. ב-SALib, אנו בונים dict שמציין את מספר הכניסות, שמותיהם והמגבלות על כל קלט, כפי שניתן לראות להלן.
3. צור דגימות והמודל
לאחר מכן נוצרות הדגימות. עלינו ליצור דגימות באמצעות הדגימה של Saltelli מכיוון שאנו מבצעים ניתוח רגישות של סובול. במקרה זה, ערכי הפראם הם מטריצת NumPy. אנו יכולים לראות שהמטריקס הוא 8000 על 3 על ידי הפעלת param values.shape. 8000 דגימות נוצרו עם הדגימה של Saltelli. הסמפלר של Saltelli יוצר דגימות, כאשר N הוא 1024 (הפרמטר שסיפקנו) ו-D הוא 3. (מספר כניסות הדגם).
כפי שצוין קודם לכן, SALib אינו עוסק בהערכת מודלים מתמטיים או חישוביים. אם המודל כתוב ב-Python, בדרך כלל תבצע לולאה דרך כל קלט לדוגמה ותעריך את המודל:
ניתן לשמור את הדוגמאות בקובץ טקסט אם המודל לא פותח ב-Python:
כל שורה ב-param values.txt מייצגת קלט מודל אחד. יש לשמור את הפלט של הדגם בקובץ אחר בסגנון דומה, עם פלט אחד בכל שורה. לאחר מכן, ניתן לטעון את הפלטים עם:
בדוגמה זו, אנו הולכים להשתמש בפונקציה Ishigami מ- SALib. ניתן להעריך את פונקציות הבדיקה הללו באופן הבא:
4. בצע ניתוח
סוף סוף נוכל לחשב את מדדי הרגישות לאחר טעינת תוצאות המודל לפייתון. בדוגמה זו, נשתמש ב-sobol.analyze כדי לחשב את מדדי הסדר הראשון, השני והסה"כ.
Si הוא מילון Python הכולל את המפתחות "S1", "S2", "ST", "S1 conf", "S2 conf" ו-"ST conf." מקשי _conf מחזיקים את מרווחי הסמך המשויכים, המוגדרים בדרך כלל ל-95 אחוזים. כדי להוציא את כל המדדים, השתמש בפרמטר מילת המפתח הדפס כדי console=True. לחלופין, כפי שמוצג להלן, אנו עשויים להדפיס את הערכים הבודדים מ- Si.
אנו יכולים לראות של-x1 ו-x2 יש רגישות מסדר ראשון, אבל נראה של-x3 אין השפעות מסדר ראשון.
אם המדדים של הסדר הכולל גדולים משמעותית מהמדדים של הסדר הראשון, ללא ספק מתרחשות אינטראקציות מסדר גבוה יותר. אנו יכולים לראות את האינטראקציות הללו מסדר גבוה על ידי התבוננות במדדים מסדר שני:
אנו יכולים לראות שלx1 ו-x3 יש אינטראקציות משמעותיות. לאחר מכן, התוצאה עשויה להשתנות ל-Pandas DataFrame למחקר נוסף.
5. עלילה
לנוחיותכם, מסופקים מתקני תרשימים בסיסיים. הפונקציה plot() מייצרת אובייקטים בציר matplotlib למניפולציה שלאחר מכן.
סיכום
SALib הוא ערכת כלים מתוחכמת לניתוח רגישות. טכניקות אחרות ב-SALib כוללות את מבחן רגישות משרעת פורייה (FAST), שיטת מוריס ומדידת דלתא-מומנט עצמאית. אמנם מדובר בספריית Python, אך היא מיועדת לפעול עם דגמים מכל סוג.
SALib מציע ממשק שורת פקודה קל לשימוש ליצירת תשומות מודל והערכת פלטי מודל. לבדוק תיעוד SALib ללמוד 'יותר.
השאירו תגובה