Blog › Valentis

Sobol 민감도 지수
— 메타모델 위에서 변수의 분산 기여와 상호작용 분리

블로그 목록으로

민감도 분석을 수행했더니, 어떤 변수의 상관계수가 거의 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₁ 합이 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로 전환하면 된다.

전제 조건은 하나다.

메타모델이 먼저 학습되어 있어야 한다.

설정 항목은 간단하다.

Run Sobol을 실행하면, Valentis는 저불일치(low-discrepancy) Halton 준난수로 표본을 생성하고, Jansen 추정량을 사용해 S₁과 Sₜ를 계산한다. 옵션을 켜면 S₂도 함께 계산한다.

결과는 다음과 같이 제공된다.


S₁ / Sₜ 막대 그래프

변수별 1차 효과와 전체 효과를 나란히 막대로 보여준다.

Sₜ가 큰 순서로 정렬되기 때문에, 어떤 변수가 출력 분산에 가장 크게 기여하는지 한눈에 확인할 수 있다.


상호작용 히트맵 (S₂)

2차 지수를 계산한 경우, 변수 쌍 간의 상호작용 강도를 히트맵으로 표시한다.

어떤 두 변수가 함께 변할 때 출력에 큰 영향을 주는지 색상으로 확인할 수 있다.


해석 테이블과 요약

각 변수에 대해 S₁, Sₜ, Gap(Sₜ − S₁), 그리고 해석 결과를 표로 정리한다.

예를 들어 다음과 같이 구분할 수 있다.

또한 모든 S₁의 합을 기준으로, 모델이 비교적 가산적인지 또는 상호작용이 큰 구조인지 자동으로 요약해준다.

분석 결과는 CSVHTML 보고서로 내보낼 수 있다. 보고서에는 전체 출력 기준 영향도 순위, 출력별 상세 지수, 상호작용 표가 함께 정리된다.


주의 — 메타모델이 부실하면 Sobol도 부실하다

Sobol 지수는 메타모델의 예측값을 반복 평가해 계산된다.

따라서 메타모델 자체가 부정확하면, 그 위에서 계산한 민감도 지수도 신뢰하기 어렵다.

Valentis는 이 위험을 명시적으로 알려준다. 선택한 출력의 메타모델 CoP가 0.7 미만이면 경고를 표시한다. 해당 출력에 대한 메타모델 정확도가 낮으므로, Sobol 결과를 그대로 해석하지 말라는 신호다.

이 경우에는 Sobol 결과를 해석하기 전에 먼저 메타모델 품질을 끌어올려야 한다.

방법은 두 가지다.

분산 기반 민감도 분석은 강력하지만, 그 토대가 되는 메타모델의 품질을 넘어설 수는 없다.


마무리

상관 기반 민감도 분석이 변수와 출력 사이의 관계를 빠르게 보여준다면, Sobol 민감도 분석은 출력의 분산을 누가 얼마나 책임지는가를 보여준다.

그 덕분에 비선형 효과와 변수 간 상호작용까지 정량적으로 분리할 수 있다.

“혼자서는 영향이 없어 보이지만, 함께 움직이면 결과를 바꾸는 변수”를 찾아내는 것.

이것이 분산 기반 민감도 분석이 상관 분석을 넘어서는 지점이다. 그리고 메타모델이 있기에, 수만 번의 평가가 필요한 이 분석을 현실적인 시간 안에 수행할 수 있다.

어떤 변수를 고정하고, 어떤 변수를 계속 열어둘 것인가. Sobol 지수는 그 결정을 분산이라는 객관적 근거 위에 올려놓는다.


키워드: Sobol 민감도, 분산 기반 민감도, 1차 효과, 전체 효과, 상호작용 분석, Sobol 지수, Total-Effect Index, 메타모델 민감도, Variance-based sensitivity, CAE 설계 변수, 데이터 기반 설계

VerusLab (베루스랩) — 웹스시스템코리아 R&D 연구소
← 이전 글 Valentis 메타모델 — 적응형 샘플링부터 전체 출력 예측까지
다음 글 → 정적 구조해석 따라하기 — 기본 워크플로우
블로그 목록으로