Az érzékenységi elemzést arra használják, hogy meghatározzák a független tényezők gyűjteményének hatását egy függő változóra bizonyos feltételek mellett.
Ez egy erős megközelítés annak meghatározására, hogy a modell kimenetére hogyan hatnak a modell bemenetei általánosságban. Ebben a bejegyzésben egy gyors áttekintést adok az érzékenységelemzésről a SALib, egy ingyenes Python érzékenységelemző csomag használatával.
Az érzékenységi indexként ismert számérték gyakran az egyes bemenetek érzékenységét jelenti. Az érzékenységi indexeknek számos típusa létezik:
- Elsőrendű indexek: kiszámítja egyetlen modell bemenetének hozzájárulását a kimeneti varianciához.
- Másodrendű indexek: kiszámítja a modell két bemenetének hozzájárulását a kimeneti varianciához.
- Teljes sorrendű index: a modell bemenetének a kimeneti varianciához való hozzájárulását számszerűsíti, amely magában foglalja az elsőrendű hatásokat (a bemenet önmagában ingadozik) és a magasabb rendű interakciókat egyaránt.
Mi az a SALib?
SALib Python alapú nyílt forráskódú eszköztár az érzékenység felméréséhez. Leválasztott munkafolyamattal rendelkezik, ami azt jelenti, hogy nem működik közvetlenül a matematikai vagy számítási modellel. Ehelyett a SALib feladata a modell bemeneteinek előállítása (az egyik mintafüggvényen keresztül) és az érzékenységi indexek kiszámítása (az egyik elemző függvényen keresztül) a modell kimeneteiből.
Egy tipikus SALib érzékenységi elemzés négy lépésből áll:
- Határozza meg mindegyik modell bemeneteit (paramétereit) és a mintatartományt.
- Modell bemenetek létrehozásához futtassa a mintafüggvényt.
- A generált bemenetek segítségével értékelje ki a modellt, és mentse el a modell eredményeit.
- Az érzékenységi indexek kiszámításához használja az elemzés funkciót a kimeneteken.
A Sobol, a Morris és a FAST csak néhány a SALib által biztosított érzékenységelemzési módszerek közül. Számos tényező befolyásolja, hogy egy adott alkalmazáshoz melyik megközelítés a legmegfelelőbb, amint azt később látni fogjuk. Egyelőre ne feledje, hogy csak két funkciót kell használnia, a mintát és az elemzést, függetlenül attól, hogy milyen technikát alkalmaz. A SALib használatának bemutatására egy alapvető példán keresztül vezetjük végig.
SALib példa – Sobol' érzékenységi elemzés
Ebben a példában megvizsgáljuk az Ishigami függvény Sobol' érzékenységét, az alábbiak szerint. Magas nemlinearitása és nem monotonitása miatt az Ishigami-függvényt széles körben használják a bizonytalanság- és érzékenységelemzési módszerek értékelésére.
A lépések a következők szerint zajlanak:
1. SALib importálása
Az első lépés a szükséges könyvtárak hozzáadása. A SALib minta- és elemzési funkciói a Python modulokban különállóak. Az alábbiakban látható például a műholdminta és a Sobol elemző funkciók importálása.
Használjuk az Ishigami függvényt is, amely tesztfunkcióként érhető el a SALibben. Végül importáljuk a NumPy-t, mivel a SALib a modell bemeneteinek és kimeneteinek mátrixban való tárolására használja.
2. Modell bemenet
Ezután meg kell határozni a modell bemeneteit. Az Ishigami függvény három bemenetet fogad: x1, x2 és x3. A SALib-ben létrehozunk egy diktátumot, amely megadja a bemenetek számát, nevét és az egyes bemenetek korlátait, amint az alább látható.
3. Generáljon mintákat és modellt
Ezután a minták előállításra kerülnek. A Saltelli mintavevővel kell mintákat készítenünk, mivel Sobol érzékenységi elemzést végzünk. Ebben az esetben a param értékek egy NumPy mátrix. Megfigyelhetjük, hogy a mátrix 8000 x 3 a param values.shape futtatásával. 8000 mintát hoztak létre a Saltelli mintavevővel. A Saltelli mintavevő mintákat hoz létre, ahol N értéke 1024 (az általunk megadott paraméter) és D értéke 3. (a modell bemeneteinek száma).
Amint azt korábban említettük, a SALib nem foglalkozik matematikai vagy számítási modellértékeléssel. Ha a modell Pythonban van írva, akkor általában végig kell nézni az egyes mintabemeneteket, és értékelni kell a modellt:
A minták szöveges fájlba menthetők, ha a modellt nem Pythonban fejlesztették ki:
A param values.txt fájl minden sora egy modellbemenetet jelent. A modell kimenetét egy másik, hasonló stílusú fájlba kell menteni, minden soron egy kimenettel. Ezt követően a kimenetek betölthetők:
Ebben a példában a SALib Ishigami függvényét fogjuk használni. Ezek a tesztfüggvények a következőképpen értékelhetők:
4. Végezze el az elemzést
A modelleredmények Pythonba való betöltése után végre kiszámolhatjuk az érzékenységi indexeket. Ebben a példában a sobol.analyze-t használjuk az első, második és teljes sorrendű indexek kiszámításához.
Az Si egy Python szótár, amelynek kulcsai „S1”, „S2”, „ST”, „S1 conf”, „S2 conf” és „ST conf”. A _conf kulcsok tartalmazzák a kapcsolódó konfidencia intervallumokat, amelyek általában 95 százalékra vannak állítva. Az összes index kimenetéhez használja a print to console=True kulcsszóparamétert. Alternatív megoldásként az alábbiakban bemutatott módon kinyomtathatjuk az egyes értékeket Si-ből.
Láthatjuk, hogy x1 és x2 elsőrendű érzékenységgel rendelkezik, de úgy tűnik, hogy x3-nak nincs elsőrendű hatása.
Ha az összrendű indexek lényegesen nagyobbak, mint az elsőrendűek, akkor minden bizonnyal magasabb rendű kölcsönhatások mennek végbe. Ezeket a magasabb rendű interakciókat láthatjuk, ha megnézzük a másodrendű indexeket:
Megfigyelhetjük, hogy x1 és x3 jelentős kölcsönhatást mutat. Ezt követően az eredmény átalakítható egy Pandas DataFrame-re további tanulmányozás céljából.
5. Ábrázolás
Az Ön kényelme érdekében alapvető térképezési lehetőségeket biztosítunk. A plot() függvény matplotlib tengely objektumokat hoz létre a későbbi manipulációkhoz.
Következtetés
A SALib egy kifinomult érzékenységelemző eszközkészlet. A SALib egyéb technikái közé tartozik a Fourier-amplitúdó-érzékenységi teszt (FAST), a Morris-módszer és a Delta-Moment Independent Measure. Noha ez egy Python-könyvtár, bármilyen modellel használható.
A SALib egy könnyen használható parancssori felületet kínál a modellbemenetek létrehozásához és a modellkimenetek értékeléséhez. Nézze meg SALib dokumentáció és tudjon meg többet!
Hagy egy Válaszol