민감도 분석을 수행했더니, 어떤 변수의 상관계수가 거의 0으로 나왔다. “이 변수는 결과에 영향이 없구나”라고 판단하고 설계 변수에서 제외했다.
그런데 나중에 보니, 그 변수는 다른 변수와 함께 변할 때만 결과를 크게 바꾸는 변수였다. 혼자서는 효과가 작지만, 두 변수가 동시에 변할 때 비선형적으로 결과를 끌어올리고 있었던 것이다.
상관 기반 민감도 분석은 변수 하나와 결과 사이의 관계를 빠르게 파악하는 데 유용하다. 하지만 비선형 효과나 변수 간 상호작용을 분리해서 보기는 어렵다.
이 빈틈을 메우는 방법이 분산 기반 민감도 분석이고, 그 대표적인 지표가 Sobol 민감도 지수다.
Sobol 지수란 — 출력의 분산을 변수별로 쪼갠다
Sobol 민감도 분석의 출발점은 단순한 질문이다.
출력값이 흔들리는 정도, 즉 분산 중에서 각 입력 변수가 책임지는 몫은 얼마인가?
출력의 전체 분산을 100%라고 할 때, 그 분산을 각 변수의 기여로 분해하는 것이 Sobol 지수다.
직선 관계든 곡선 관계든, 출력의 분산에 기여하기만 하면 그 영향을 포착할 수 있다. 그래서 Sobol 지수는 비선형 응답에도 적용할 수 있는 민감도 분석 방법이다.
Sobol 지수는 주로 두 가지 값으로 해석한다.
S₁ — 1차 효과 (First-Order Index)
S₁은 해당 변수가 단독으로 출력 분산에 기여하는 비율이다.
다른 변수와의 상호작용은 제외하고, 그 변수 하나만 변할 때 출력이 얼마나 달라지는지를 나타낸다.
Sₜ — 전체 효과 (Total-Effect Index)
Sₜ는 해당 변수가 출력 분산에 기여하는 전체 비율이다.
여기에는 해당 변수의 단독 효과뿐 아니라, 다른 변수들과의 상호작용을 통해 발생하는 효과까지 포함된다.
이 두 값의 차이를 보는 것이 Sobol 분석의 핵심이다.
S₁과 Sₜ의 차이가 상호작용을 보여준다
Sₜ − S₁은 해당 변수가 다른 변수들과 함께 작용하면서 만들어내는 상호작용 기여를 나타낸다.
-
Sₜ ≈ S₁ 이 변수는 주로 단독으로 작용한다. 다른 변수와의 상호작용은 크지 않다.
-
Sₜ ≫ S₁ 이 변수는 단독 효과는 작더라도, 다른 변수와의 상호작용을 통해 결과에 크게 기여한다.
앞에서 언급한 “상관계수는 낮지만 실제로 중요했던 변수”가 바로 두 번째 경우다. S₁은 작아도 Sₜ가 크다면, 그 변수는 쉽게 제외해서는 안 된다.
여기서 한 가지 유용한 판단 기준이 나온다.
모든 변수의 S₁ 합이 1에 가깝다면, 출력은 변수들의 단독 효과만으로 대부분 설명된다. 즉, 모델이 비교적 가산적(additive)이라는 뜻이다.
반대로 S₁의 합이 1보다 충분히 작다면, 그 차이만큼 변수 간 상호작용이 출력 분산에 기여하고 있다는 의미로 볼 수 있다.
상호작용을 더 구체적으로 보고 싶다면 2차 지수(S₂)를 계산한다. S₂는 어떤 두 변수 조합이 특히 강하게 얽혀 있는지를 변수 쌍(pair) 단위로 보여준다.
왜 “메타모델 위에서” 계산하는가
Sobol 지수에는 한 가지 현실적인 장벽이 있다.
계산에 매우 많은 함수 평가가 필요하다.
변수가 d개일 때, S₁과 Sₜ만 계산해도 대략 N × (d + 2)회의 출력 평가가 필요하다. 2차 지수(S₂)까지 계산하면 필요한 평가 수는 더 늘어난다.
예를 들어 표본 수 N을 1,024로 잡고 변수가 5개라면 수천 번 이상의 평가가 필요하다. N을 4,096으로 올리면 평가 횟수는 수만 번 수준으로 증가한다.
이 횟수만큼 실제 CFD/FEM 해석을 수행하는 것은 현실적이지 않다. 해석 한 번에 수십 분이 걸린다면 수백 일의 계산 시간이 필요할 수 있다.
그래서 Sobol 분석은 일반적으로 메타모델 위에서 수행한다.
앞서 학습한 메타모델은 예측 한 번에 매우 짧은 시간이 걸리기 때문에, 수만 번의 평가도 몇 초 안에 끝낼 수 있다.
이것이 메타모델과 Sobol 분석이 함께 사용되는 이유다. 메타모델이 “비싼 해석을 빠른 함수로 바꾼” 덕분에, 분산 기반 민감도 분석이 현실적인 도구가 된다.
Valentis에서 Sobol 분석하기
Valentis에서 Sobol 지수는 Sensitivity(민감도) 탭 안에서 사용할 수 있다. 분석 방식을 Correlation에서 Sobol로 전환하면 된다.
전제 조건은 하나다.
메타모델이 먼저 학습되어 있어야 한다.
설정 항목은 간단하다.
- Output Parameter — 분석할 출력 선택
- N (samples) — 표본 수 선택. 1024 / 2048 / 4096 중 선택
- 2nd-order interaction (S₂) — 2차 상호작용까지 계산할지 여부
Run Sobol을 실행하면, Valentis는 저불일치(low-discrepancy) Halton 준난수로 표본을 생성하고, Jansen 추정량을 사용해 S₁과 Sₜ를 계산한다. 옵션을 켜면 S₂도 함께 계산한다.
결과는 다음과 같이 제공된다.
S₁ / Sₜ 막대 그래프
변수별 1차 효과와 전체 효과를 나란히 막대로 보여준다.
Sₜ가 큰 순서로 정렬되기 때문에, 어떤 변수가 출력 분산에 가장 크게 기여하는지 한눈에 확인할 수 있다.
상호작용 히트맵 (S₂)
2차 지수를 계산한 경우, 변수 쌍 간의 상호작용 강도를 히트맵으로 표시한다.
어떤 두 변수가 함께 변할 때 출력에 큰 영향을 주는지 색상으로 확인할 수 있다.
해석 테이블과 요약
각 변수에 대해 S₁, Sₜ, Gap(Sₜ − S₁), 그리고 해석 결과를 표로 정리한다.
예를 들어 다음과 같이 구분할 수 있다.
- 지배적 변수
- 상호작용이 큰 변수
- 영향이 미미한 변수
또한 모든 S₁의 합을 기준으로, 모델이 비교적 가산적인지 또는 상호작용이 큰 구조인지 자동으로 요약해준다.
분석 결과는 CSV와 HTML 보고서로 내보낼 수 있다. 보고서에는 전체 출력 기준 영향도 순위, 출력별 상세 지수, 상호작용 표가 함께 정리된다.
주의 — 메타모델이 부실하면 Sobol도 부실하다
Sobol 지수는 메타모델의 예측값을 반복 평가해 계산된다.
따라서 메타모델 자체가 부정확하면, 그 위에서 계산한 민감도 지수도 신뢰하기 어렵다.
Valentis는 이 위험을 명시적으로 알려준다. 선택한 출력의 메타모델 CoP가 0.7 미만이면 경고를 표시한다. 해당 출력에 대한 메타모델 정확도가 낮으므로, Sobol 결과를 그대로 해석하지 말라는 신호다.
이 경우에는 Sobol 결과를 해석하기 전에 먼저 메타모델 품질을 끌어올려야 한다.
방법은 두 가지다.
- 시나리오를 보강한다. 이때 적응형 샘플링이 유용하다.
- 더 적합한 메타모델로 교체해 CoP를 개선한다.
분산 기반 민감도 분석은 강력하지만, 그 토대가 되는 메타모델의 품질을 넘어설 수는 없다.
마무리
상관 기반 민감도 분석이 변수와 출력 사이의 관계를 빠르게 보여준다면, Sobol 민감도 분석은 출력의 분산을 누가 얼마나 책임지는가를 보여준다.
그 덕분에 비선형 효과와 변수 간 상호작용까지 정량적으로 분리할 수 있다.
- S₁(1차 효과) — 변수의 단독 기여
- Sₜ(전체 효과) — 단독 효과와 상호작용을 포함한 총 기여
- Sₜ − S₁ — 해당 변수와 관련된 상호작용의 크기
- S₂ — 어떤 두 변수가 함께 얽혀 있는지
“혼자서는 영향이 없어 보이지만, 함께 움직이면 결과를 바꾸는 변수”를 찾아내는 것.
이것이 분산 기반 민감도 분석이 상관 분석을 넘어서는 지점이다. 그리고 메타모델이 있기에, 수만 번의 평가가 필요한 이 분석을 현실적인 시간 안에 수행할 수 있다.
어떤 변수를 고정하고, 어떤 변수를 계속 열어둘 것인가. Sobol 지수는 그 결정을 분산이라는 객관적 근거 위에 올려놓는다.
키워드: Sobol 민감도, 분산 기반 민감도, 1차 효과, 전체 효과, 상호작용 분석, Sobol 지수, Total-Effect Index, 메타모델 민감도, Variance-based sensitivity, CAE 설계 변수, 데이터 기반 설계