Analiza wrażliwości służy do określenia wpływu zbioru niezależnych czynników na zmienną zależną w określonych warunkach.
Jest to dobre podejście do określenia, w jaki sposób dane wejściowe modelu wpływają na wyniki modelu w ujęciu ogólnym. W tym poście przedstawię krótki przegląd analizy wrażliwości przy użyciu SALib, darmowego pakietu do analizy wrażliwości Pythona.
Wartość liczbowa znana jako indeks czułości, często reprezentuje czułość każdego wejścia. Istnieje wiele rodzajów wskaźników wrażliwości:
- Wskaźniki pierwszego rzędu: oblicza wkład jednego modelu wejściowego do wariancji wyjściowej.
- Wskaźniki drugiego rzędu: oblicza udział dwóch danych wejściowych modelu w wariancji wyjściowej.
- Wskaźnik całkowitego rzędu: określa ilościowo wkład modelu wejściowego w wariancję wyjściową, obejmując zarówno efekty pierwszego rzędu (sam nakłady wahają się), jak i wszelkie interakcje wyższego rzędu.
Co to jest SALib?
SALib jest oparty na Pythonie open-source zestaw narzędzi do przeprowadzania ocen wrażliwości. Ma odłączony przepływ pracy, co oznacza, że nie wchodzi w bezpośrednią interakcję z modelem matematycznym lub obliczeniowym. Zamiast tego SALib odpowiada za tworzenie danych wejściowych modelu (poprzez jedną z funkcji próbki) i obliczanie wskaźników wrażliwości (poprzez jedną z funkcji analizy) na podstawie danych wyjściowych modelu.
Typowa analiza wrażliwości SALib składa się z czterech kroków:
- Określ wejścia modelu (parametry) i zakres próbki dla każdego.
- Aby utworzyć dane wejściowe modelu, uruchom funkcję sample.
- Oceń model za pomocą wygenerowanych danych wejściowych i zapisz wyniki modelu.
- Aby obliczyć wskaźniki czułości, użyj funkcji analizy na wyjściach.
Sobol, Morris i FAST to tylko niektóre z metod analizy wrażliwości dostarczanych przez SALib. Wiele czynników wpływa na to, które podejście jest najlepsze dla danej aplikacji, jak zobaczymy później. Na razie pamiętaj, że potrzebujesz tylko dwóch funkcji, próbkowania i analizy, niezależnie od zastosowanej techniki. Przeprowadzimy Cię przez podstawowy przykład, aby zilustrować, jak korzystać z SALib.
Przykład SALib – Analiza wrażliwości Sobola
W tym przykładzie zbadamy czułość Sobola funkcji Ishigami, jak pokazano poniżej. Ze względu na dużą nieliniowość i niemonotoniczność funkcja Ishigami jest szeroko stosowana do oceny metod analizy niepewności i wrażliwości.
Kroki przebiegają w następujący sposób:
1. Importowanie SALib
Pierwszym krokiem jest dodanie wymaganych bibliotek. Funkcje próbkowania i analizy SALib są utrzymywane w odrębnych modułach Pythona. Poniżej przedstawiono na przykład import próbki satelity i funkcje analizy Sobola.
Używamy również funkcji Ishigami, która jest dostępna jako funkcja testowa w SALib. Na koniec importujemy NumPy, ponieważ SALib używa go do przechowywania danych wejściowych i wyjściowych modelu w macierzy.
2. Wprowadzanie modelu
Następnie należy zdefiniować dane wejściowe modelu. Funkcja Ishigami akceptuje trzy wejścia: x1, x2 i x3. W SALib tworzymy dyktat, który określa liczbę wejść, ich nazwy i limity dla każdego wejścia, jak pokazano poniżej.
3. Wygeneruj próbki i model
Następnie generowane są próbki. Musimy utworzyć próbki za pomocą próbnika Saltelli, ponieważ przeprowadzamy analizę wrażliwości Sobola. W tym przypadku wartości param są macierzą NumPy. Możemy zaobserwować, że macierz ma wielkość 8000 na 3, uruchamiając param values.shape. Za pomocą próbnika Saltelli utworzono 8000 próbek. Sampler Saltelli tworzy próbki, gdzie N to 1024 (podany przez nas parametr), a D to 3. (liczba wejść modelu).
Jak wspomniano wcześniej, SALib nie zajmuje się oceną modeli matematycznych ani obliczeniowych. Jeśli model jest napisany w Pythonie, zwykle przejdziesz przez każde przykładowe wejście i ocenisz model:
Próbki można zapisać do pliku tekstowego, jeśli model nie jest opracowany w Pythonie:
Każdy wiersz w param values.txt reprezentuje jedno wejście modelu. Wynik modelu powinien zostać zapisany do innego pliku w podobnym stylu, z jednym wyjściem w każdym wierszu. Następnie wyjścia mogą zostać załadowane:
W tym przykładzie użyjemy funkcji Ishigami z SALib. Te funkcje testowe można ocenić w następujący sposób:
4. Wykonaj analizę
Możemy wreszcie obliczyć wskaźniki wrażliwości po załadowaniu wyników modelu do Pythona. W tym przykładzie użyjemy sobol.analyze do obliczenia pierwszego, drugiego i całkowitego indeksu rzędu.
Si to słownik Pythona zawierający klawisze „S1,”, „S2,”, „ST”, „S1 conf”, „S2 conf” i „ST conf”. Klucze _conf zawierają powiązane przedziały ufności, które zazwyczaj są ustawione na 95 procent. Aby wyprowadzić wszystkie indeksy, użyj parametru słowa kluczowego print do console=True. Alternatywnie, jak pokazano poniżej, możemy wydrukować poszczególne wartości z Si.
Widzimy, że x1 i x2 mają wrażliwość pierwszego rzędu, ale x3 nie wydaje się mieć żadnego wpływu pierwszego rzędu.
Jeśli wskaźniki całkowitego rzędu są znacznie większe niż wskaźniki pierwszego rzędu, z pewnością zachodzą interakcje wyższego rzędu. Możemy zobaczyć te interakcje wyższego rzędu, patrząc na wskaźniki drugiego rzędu:
Możemy zaobserwować, że x1 i x3 mają znaczące interakcje. Następnie wynik można przekształcić w Pandas DataFrame do dalszych badań.
5. Wykreślanie
Dla Twojej wygody dostępne są podstawowe urządzenia do tworzenia wykresów. Funkcja plot() tworzy obiekty osi matplotlib do późniejszej manipulacji.
Wnioski
SALib to zaawansowany zestaw narzędzi do analizy wrażliwości. Inne techniki w SALib obejmują test czułości amplitudy Fouriera (FAST), metodę Morrisa i niezależny pomiar momentu delta. Chociaż jest to biblioteka Pythona, jest przeznaczona do pracy z dowolnymi modelami.
SALib oferuje łatwy w użyciu interfejs wiersza poleceń do tworzenia danych wejściowych modelu i oceny wyników modelu. Kasy Dokumentacja SALib uczyć się więcej.
Dodaj komentarz