Duyarlılık analizi, belirli koşullar altında bağımsız faktörlerin bir bağımlı değişken üzerindeki etkisini belirlemek için kullanılır.
Modelin çıktısının, modelin girdilerinden genel anlamda nasıl etkilendiğini belirlemek için güçlü bir yaklaşımdır. Bu yazıda, ücretsiz bir Python duyarlılık analiz paketi olan SALib kullanarak duyarlılık analizine hızlı bir genel bakış sunacağım.
Duyarlılık indeksi olarak bilinen sayısal bir değer, sıklıkla her bir girdinin hassasiyetini temsil eder. Çok sayıda duyarlılık indeksi türü vardır:
- Birinci mertebeden endeksler: tek bir model girdisinin çıktı varyansına katkısını hesaplar.
- İkinci mertebeden endeksler: iki model girdisinin çıktı varyansına katkısını hesaplar.
- Toplam mertebe indeksi: hem birinci mertebeden etkileri (girişin tek başına dalgalanması) hem de herhangi bir yüksek mertebeden etkileşimi kapsayan bir model girişinin çıkış varyansına katkısını ölçer.
SALİB nedir?
SAlib Python tabanlıdır açık kaynak duyarlılık değerlendirmeleri yapmak için araç seti. Ayrılmış bir iş akışına sahiptir, yani matematiksel veya hesaplamalı modelle doğrudan etkileşime girmez. Bunun yerine SALib, model girdilerini (örnek işlevlerden biri aracılığıyla) üretmekten ve model çıktılarından duyarlılık endekslerini (analiz işlevlerinden biri aracılığıyla) hesaplamaktan sorumludur.
Tipik bir SALib duyarlılık analizi dört adımdan oluşur:
- Model girişlerini (parametreleri) ve her biri için örnek aralığını belirleyin.
- Model girdileri oluşturmak için örnek işlevi çalıştırın.
- Oluşturulan girdileri kullanarak modeli değerlendirin ve model sonuçlarını kaydedin.
- Duyarlılık endekslerini hesaplamak için çıktılardaki analiz işlevini kullanın.
Sobol, Morris ve FAST, SALib tarafından sağlanan duyarlılık analizi yöntemlerinden sadece birkaçıdır. Daha sonra göreceğimiz gibi, belirli bir uygulama için hangi yaklaşımın en iyi olduğunu birçok faktör etkiler. Şu an için, hangi tekniği kullanırsanız kullanın, örnekleme ve analiz olmak üzere yalnızca iki işlevi kullanmanız gerektiğini unutmayın. SALib'in nasıl kullanılacağını göstermek için size temel bir örnek üzerinden rehberlik edeceğiz.
SALib Örneği – Sobol' Duyarlılık Analizi
Bu örnekte, aşağıda gösterildiği gibi Ishigami fonksiyonunun Sobol' duyarlılığını inceleyeceğiz. Yüksek doğrusalsızlığı ve monotonluğu nedeniyle, Ishigami işlevi, belirsizlik ve duyarlılık analizi metodolojilerini değerlendirmek için yaygın olarak kullanılmaktadır.
Adımlar şu şekilde ilerler:
1. SALib'i İçe Aktarma
İlk adım, gerekli kitaplıkları eklemektir. SALib'in örnek ve analiz fonksiyonları Python modüllerinde ayrı tutulur. Örneğin, uydu örneğinin ve Sobol analiz işlevlerinin içe aktarılması aşağıda gösterilmiştir.
Ayrıca SALib'de test fonksiyonu olarak bulunan Ishigami fonksiyonunu da kullanıyoruz. Son olarak, SALib'in model girdilerini ve çıktılarını bir matriste depolamak için kullandığı için NumPy'yi içe aktarıyoruz.
2. Model Girişi
Model girdileri daha sonra tanımlanmalıdır. Ishigami işlevi üç girişi kabul eder: x1, x2 ve x3. SALib'de, aşağıda görüldüğü gibi girişlerin sayısını, adlarını ve her bir giriş üzerindeki sınırları belirten bir dikte oluşturuyoruz.
3. Örnekler ve Model Oluşturun
Numuneler daha sonra oluşturulur. Sobol duyarlılık analizi yaptığımız için Saltelli örnekleyiciyi kullanarak örnekler oluşturmamız gerekiyor. Bu durumda, param değerleri bir NumPy matrisidir. Matrisin 8000'e 3 olduğunu param value.shape çalıştırarak görebiliriz. Saltelli örnekleyici ile 8000 örnek oluşturuldu. Saltelli örnekleyici, N'nin 1024 (sağladığımız parametre) ve D'nin 3 (model girişlerinin sayısı) olduğu örnekler oluşturur.
Daha önce belirtildiği gibi, SALib matematiksel veya hesaplamalı model değerlendirmesiyle meşgul değildir. Model Python'da yazılmışsa, tipik olarak her bir örnek girişi arasında döngü yapar ve modeli değerlendirirsiniz:
Model Python'da geliştirilmediyse örnekler bir metin dosyasına kaydedilebilir:
Param değerleri.txt içindeki her satır bir model girdisini temsil eder. Modelin çıktısı, her satırda bir çıktı olacak şekilde benzer bir tarzda başka bir dosyaya kaydedilmelidir. Bundan sonra, çıktılar aşağıdakilerle yüklenebilir:
Bu örnekte, SALib'den Ishigami işlevini kullanacağız. Bu test fonksiyonları aşağıdaki gibi değerlendirilebilir:
4. Analizi Gerçekleştirin
Model sonuçlarını Python'a yükledikten sonra nihayet duyarlılık indekslerini hesaplayabiliriz. Bu örnekte, birinci, ikinci ve toplam sipariş endekslerini hesaplamak için sobol.analyze kullanacağız.
Si, “S1”, “S2”, “ST”, “S1 conf”, “S2 conf” ve “ST conf” tuşlarına sahip bir Python sözlüğüdür. _conf anahtarları, genellikle yüzde 95'e ayarlanan ilişkili güven aralıklarını tutar. Tüm dizinlerin çıktısını almak için print to console=True anahtar kelime parametresini kullanın. Alternatif olarak, aşağıda gösterildiği gibi, bireysel değerleri Si'den yazdırabiliriz.
x1 ve x2'nin birinci dereceden duyarlılığa sahip olduğunu görebiliriz, ancak x3'ün birinci dereceden etkileri yok gibi görünüyor.
Eğer toplam mertebe indisleri birinci mertebeden indislerden önemli ölçüde büyükse, kesinlikle daha yüksek mertebeden etkileşimler meydana gelmektedir. Bu yüksek mertebeden etkileşimleri ikinci mertebeden indekslere bakarak görebiliriz:
x1 ve x3'ün önemli etkileşimleri olduğunu gözlemleyebiliriz. Bundan sonra sonuç, daha fazla çalışma için bir Pandas DataFrame'e dönüştürülebilir.
5. Çizim
Size kolaylık sağlamak için, temel grafik oluşturma olanakları sağlanmaktadır. plot() işlevi, sonraki manipülasyon için matplotlib eksen nesneleri üretir.
Sonuç
SALib, gelişmiş bir duyarlılık analizi araç takımıdır. SALib'deki diğer teknikler arasında Fourier Genlik Duyarlılık Testi (FAST), Morris Metodu ve Delta-Moment Bağımsız Ölçüm bulunur. Bir Python kütüphanesi olmasına rağmen, her türlü modelle çalışması amaçlanmıştır.
SALib, model girdileri oluşturmak ve model çıktılarını değerlendirmek için kullanımı kolay bir komut satırı arabirimi sunar. Çıkış yapmak SALib belgeleri daha fazla öğrenmek için.
Yorum bırak