Η ανάλυση ευαισθησίας χρησιμοποιείται για τον προσδιορισμό της επίδρασης μιας συλλογής ανεξάρτητων παραγόντων σε μια εξαρτημένη μεταβλητή υπό ορισμένες συνθήκες.
Είναι μια ισχυρή προσέγγιση για τον προσδιορισμό του τρόπου με τον οποίο η παραγωγή του μοντέλου επηρεάζεται από τις εισροές του μοντέλου σε γενικούς όρους. Σε αυτήν την ανάρτηση, θα δώσω μια γρήγορη επισκόπηση της ανάλυσης ευαισθησίας χρησιμοποιώντας το SALib, ένα δωρεάν πακέτο ανάλυσης ευαισθησίας Python.
Μια αριθμητική τιμή γνωστή ως δείκτης ευαισθησίας, αντιπροσωπεύει συχνά την ευαισθησία κάθε εισόδου. Υπάρχουν πολλοί τύποι δεικτών ευαισθησίας:
- Δείκτες πρώτης τάξης: υπολογίζει τη συμβολή μιας μεμονωμένης εισόδου μοντέλου στη διακύμανση εξόδου.
- Δείκτες δεύτερης τάξης: υπολογίζει τη συμβολή δύο εισόδων μοντέλου στη διακύμανση εξόδου.
- Δείκτης συνολικής τάξης: ποσοτικοποιεί τη συνεισφορά ενός μοντέλου εισόδου στη διακύμανση εξόδου, που περιλαμβάνει τόσο τα εφέ πρώτης τάξης (η είσοδος κυμαίνεται μόνη της) όσο και τυχόν αλληλεπιδράσεις υψηλότερης τάξης.
Τι είναι το SALib;
SALib βασίζεται σε Python ανοικτού κώδικα εργαλειοθήκη για την πραγματοποίηση αξιολογήσεων ευαισθησίας. Έχει αποκομμένη ροή εργασίας, πράγμα που σημαίνει ότι δεν αλληλεπιδρά άμεσα με το μαθηματικό ή το υπολογιστικό μοντέλο. Αντίθετα, το SALib είναι υπεύθυνο για την παραγωγή των εισόδων του μοντέλου (μέσω μιας από τις συναρτήσεις του δείγματος) και τον υπολογισμό των δεικτών ευαισθησίας (μέσω μιας από τις συναρτήσεις ανάλυσης) από τις εξόδους του μοντέλου.
Μια τυπική ανάλυση ευαισθησίας SALib αποτελείται από τέσσερα βήματα:
- Προσδιορίστε τις εισόδους του μοντέλου (παραμέτρους) και το εύρος δειγμάτων για το καθένα.
- Για να δημιουργήσετε εισόδους μοντέλου, εκτελέστε τη συνάρτηση δείγματος.
- Αξιολογήστε το μοντέλο χρησιμοποιώντας τις δημιουργούμενες εισόδους και αποθηκεύστε τα αποτελέσματα του μοντέλου.
- Για να υπολογίσετε τους δείκτες ευαισθησίας, χρησιμοποιήστε τη συνάρτηση ανάλυσης στις εξόδους.
Το Sobol, το Morris και το FAST είναι μερικές μόνο από τις μεθόδους ανάλυσης ευαισθησίας που παρέχονται από το SALib. Πολλοί παράγοντες επηρεάζουν ποια προσέγγιση είναι η καλύτερη για μια δεδομένη εφαρμογή, όπως θα δούμε αργότερα. Προς το παρόν, να έχετε κατά νου ότι χρειάζεται να χρησιμοποιήσετε μόνο δύο λειτουργίες, τη δειγματοληψία και την ανάλυση, ανεξάρτητα από την τεχνική που χρησιμοποιείτε. Θα σας καθοδηγήσουμε σε ένα βασικό παράδειγμα για να δείξουμε πώς να χρησιμοποιήσετε το SALib.
Παράδειγμα SALib – Ανάλυση ευαισθησίας Sobol
Σε αυτό το παράδειγμα, θα εξετάσουμε την ευαισθησία Sobol' της συνάρτησης Ishigami, όπως φαίνεται παρακάτω. Λόγω της υψηλής μη γραμμικότητας και μη μονοτονικότητας της, η συνάρτηση Ishigami χρησιμοποιείται ευρέως για την αξιολόγηση μεθοδολογιών ανάλυσης αβεβαιότητας και ευαισθησίας.
Τα βήματα έχουν ως εξής:
1. Εισαγωγή SALib
Το πρώτο βήμα είναι να προσθέσετε τις απαιτούμενες βιβλιοθήκες. Οι συναρτήσεις δειγματοληψίας και ανάλυσης του SALib διατηρούνται διακριτές στις λειτουργικές μονάδες Python. Η εισαγωγή του δορυφορικού δείγματος και των λειτουργιών ανάλυσης Sobol, για παράδειγμα, φαίνεται παρακάτω.
Χρησιμοποιούμε επίσης τη λειτουργία Ishigami, η οποία είναι διαθέσιμη ως δοκιμαστική λειτουργία στο SALib. Τέλος, εισάγουμε το NumPy καθώς το SALib το χρησιμοποιεί για να αποθηκεύει τις εισόδους και τις εξόδους του μοντέλου σε έναν πίνακα.
2. Είσοδος μοντέλου
Στη συνέχεια, πρέπει να καθοριστούν οι είσοδοι του μοντέλου. Η συνάρτηση Ishigami δέχεται τρεις εισόδους: x1, x2 και x3. Στο SALib, κατασκευάζουμε μια εντολή που καθορίζει τον αριθμό των εισόδων, τα ονόματά τους και τα όρια σε κάθε είσοδο, όπως φαίνεται παρακάτω.
3. Δημιουργήστε δείγματα και το μοντέλο
Στη συνέχεια παράγονται τα δείγματα. Πρέπει να δημιουργήσουμε δείγματα χρησιμοποιώντας τον δειγματολήπτη Saltelli, καθώς κάνουμε ανάλυση ευαισθησίας Sobol. Σε αυτήν την περίπτωση, οι τιμές παραμέτρων είναι ένας πίνακας NumPy. Μπορούμε να παρατηρήσουμε ότι ο πίνακας είναι 8000 επί 3 εκτελώντας τις τιμές παραμέτρων.shape. Με τον δειγματολήπτη Saltelli δημιουργήθηκαν 8000 δείγματα. Ο δειγματολήπτης Saltelli δημιουργεί δείγματα, όπου το N είναι 1024 (η παράμετρος που δώσαμε) και το D είναι 3. (ο αριθμός των εισόδων του μοντέλου).
Όπως αναφέρθηκε προηγουμένως, το SALib δεν ασχολείται με την αξιολόγηση μαθηματικών ή υπολογιστικών μοντέλων. Εάν το μοντέλο είναι γραμμένο σε Python, συνήθως θα κάνετε βρόχο σε κάθε είσοδο δείγματος και θα αξιολογήσετε το μοντέλο:
Τα δείγματα μπορούν να αποθηκευτούν σε ένα αρχείο κειμένου εάν το μοντέλο δεν έχει αναπτυχθεί σε Python:
Κάθε γραμμή στο param values.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 για επακόλουθο χειρισμό.
Συμπέρασμα
Το SALib είναι μια εξελιγμένη εργαλειοθήκη ανάλυσης ευαισθησίας. Άλλες τεχνικές στο SALib περιλαμβάνουν τη δοκιμή ευαισθησίας πλάτους Fourier (FAST), τη μέθοδο Morris και τη μέτρηση ανεξάρτητης ροπής δέλτα. Ενώ είναι βιβλιοθήκη Python, προορίζεται να λειτουργεί με μοντέλα κάθε είδους.
Το SALib προσφέρει μια εύχρηστη διεπαφή γραμμής εντολών για τη δημιουργία εισόδων μοντέλων και την αξιολόγηση των εξόδων του μοντέλου. Ολοκλήρωση αγοράς Τεκμηρίωση SALib για να μάθετε περισσότερα.
Αφήστε μια απάντηση