민감도 분석은 특정 조건에서 종속 변수에 대한 독립 요인 모음의 영향을 결정하는 데 사용됩니다.
이는 모델의 출력이 일반적으로 모델의 입력에 의해 영향을 받는 방식을 결정하기 위한 강력한 접근 방식입니다. 이 게시물에서는 무료 Python 민감도 분석 패키지인 SALib를 사용한 민감도 분석에 대해 간략히 설명하겠습니다.
감도 지수로 알려진 숫자 값은 종종 각 입력의 감도를 나타냅니다. 민감도 지수에는 다음과 같은 다양한 유형이 있습니다.
- XNUMX차 지수: 출력 분산에 대한 단일 모델 입력의 기여도를 계산합니다.
- XNUMX차 지수: 출력 분산에 대한 두 모델 입력의 기여도를 계산합니다.
- 총차 지수: XNUMX차 효과(입력만 변동)와 고차 상호작용을 모두 포함하는 출력 분산에 대한 모델 입력의 기여도를 수량화합니다.
SALib이란 무엇입니까?
살리브 파이썬 기반이다 오픈 소스 민감도 평가를 위한 툴킷. 분리된 워크플로가 있습니다. 즉, 수학적 또는 계산 모델과 직접 상호 작용하지 않습니다. 대신 SALib는 모델 입력을 생성하고(샘플 기능 중 하나를 통해) 모델 출력에서 민감도 지수를 계산합니다(분석 기능 중 하나를 통해).
일반적인 SALib 민감도 분석은 XNUMX단계로 구성됩니다.
- 모델 입력(매개변수)과 각각에 대한 샘플 범위를 결정합니다.
- 모델 입력을 생성하려면 샘플 함수를 실행하십시오.
- 생성된 입력을 사용하여 모델을 평가하고 모델 결과를 저장합니다.
- 민감도 지수를 계산하려면 출력에서 분석 기능을 사용하십시오.
Sobol, Morris 및 FAST는 SALib에서 제공하는 민감도 분석 방법의 일부일 뿐입니다. 나중에 살펴보겠지만 많은 요인이 주어진 애플리케이션에 가장 적합한 접근 방식에 영향을 미칩니다. 당분간은 어떤 기술을 사용하든지 샘플과 분석이라는 두 가지 기능만 활용하면 됩니다. SALib 활용 방법을 설명하기 위해 기본 예제를 통해 안내합니다.
SALib 예제 – Sobol' 민감도 분석
이 예에서는 아래와 같이 Ishigami 함수의 Sobol '감도를 조사합니다. Ishigami 함수는 높은 비선형성 및 비단조성으로 인해 불확실성 및 민감도 분석 방법론을 평가하는 데 널리 사용됩니다.
단계는 다음과 같습니다.
1. SALib 가져오기
첫 번째 단계는 필요한 라이브러리를 추가하는 것입니다. SALib의 샘플 및 분석 기능은 Python 모듈에서 구별됩니다. 예를 들어 위성 샘플 가져오기 및 Sobol 분석 기능은 다음과 같습니다.
또한 SALib에서 테스트 기능으로 사용할 수 있는 Ishigami 기능을 사용합니다. 마지막으로 SALib가 모델 입력 및 출력을 행렬에 저장하는 데 사용하므로 NumPy를 가져옵니다.
2. 모델 입력
그런 다음 모델 입력을 정의해야 합니다. Ishigami 함수는 x1, x2 및 x3의 세 가지 입력을 받습니다. SALib에서는 아래와 같이 입력 수, 입력 이름 및 각 입력에 대한 제한을 지정하는 사전을 구성합니다.
3. 샘플 및 모델 생성
그런 다음 샘플이 생성됩니다. Sobol 민감도 분석을 하기 때문에 Saltelli 샘플러를 사용하여 샘플을 생성해야 합니다. 이 경우 매개변수 값은 NumPy 행렬입니다. param values.shape를 실행하여 행렬이 8000 x 3임을 알 수 있습니다. 8000개의 샘플이 Saltelli 샘플러로 생성되었습니다. Saltelli 샘플러는 샘플을 생성합니다. 여기서 N은 1024(우리가 제공한 매개변수)이고 D는 3(모델 입력의 수)입니다.
앞서 언급했듯이 SALib는 수학적 또는 계산적 모델 평가에 관여하지 않습니다. 모델이 Python으로 작성된 경우 일반적으로 각 샘플 입력을 반복하고 모델을 평가합니다.
모델이 Python으로 개발되지 않은 경우 샘플을 텍스트 파일에 저장할 수 있습니다.
param values.txt의 각 줄은 하나의 모델 입력을 나타냅니다. 모델의 출력은 각 라인에 하나의 출력과 함께 유사한 스타일의 다른 파일에 저장되어야 합니다. 그 후 출력은 다음과 같이 로드될 수 있습니다.
이 예에서는 SALib의 Ishigami 함수를 사용할 것입니다. 이러한 테스트 기능은 다음과 같이 평가할 수 있습니다.
4. 분석 수행
모델 결과를 Python에 로드한 후 마침내 민감도 지수를 계산할 수 있습니다. 이 예에서는 sobol.analyze를 사용하여 첫 번째, 두 번째 및 총 주문 지수를 계산합니다.
Si는 "S1", "S2", "ST", "S1 conf", "S2 conf", "ST conf" 키가 있는 Python 사전입니다. _conf 키는 일반적으로 95%로 설정되는 관련 신뢰 구간을 유지합니다. 모든 인덱스를 출력하려면 키워드 매개변수 print를 console=True로 사용하십시오. 또는 아래 그림과 같이 Si에서 개별 값을 인쇄할 수 있습니다.
x1과 x2는 3차 민감도를 갖지만 xXNUMX은 XNUMX차 영향을 미치지 않는 것으로 보입니다.
전체 차수 지수가 XNUMX차 지수보다 훨씬 크면 고차 상호 작용이 가장 확실하게 발생합니다. XNUMX차 지수를 보면 다음과 같은 고차 상호작용을 볼 수 있습니다.
우리는 x1과 x3이 상당한 상호작용을 가지고 있음을 관찰할 수 있습니다. 그 후 결과는 추가 연구를 위해 Pandas DataFrame으로 변환될 수 있습니다.
5. 플로팅
편의를 위해 기본 차트 기능이 제공됩니다. plot() 함수는 후속 조작을 위해 matplotlib 축 객체를 생성합니다.
결론
SALib는 정교한 민감도 분석 도구입니다. SALib의 다른 기술에는 FAST(푸리에 진폭 감도 테스트), Morris 방법 및 Delta-Moment 독립 측정이 포함됩니다. Python 라이브러리이지만 모든 종류의 모델과 함께 작동하도록 되어 있습니다.
SALib는 모델 입력을 생성하고 모델 출력을 평가하기 위한 사용하기 쉬운 명령줄 인터페이스를 제공합니다. 체크 아웃 SALib 문서 드리겠습니다.
댓글을 남겨주세요.