initial commit FESurrogateModelTutorial

This commit is contained in:
김경종
2026-05-21 17:03:51 +09:00
parent 93665d9ee6
commit 43b86669fa
122 changed files with 7929 additions and 0 deletions
@@ -0,0 +1,77 @@
# Response Surface Methodology
## 핵심 아이디어
Response Surface Methodology(RSM)는 입력 변수와 응답 사이의 관계를 낮은 차수 다항식으로 근사한다. 구조해석 surrogate에서는 물리 응답이 충분히 매끄럽고 입력 범위가 좁을 때 강력한 기준선이 된다.
기본 2차 response surface는 다음 형태다.
```text
y = beta_0 + sum beta_i x_i + sum beta_ii x_i^2 + sum beta_ij x_i x_j + epsilon
```
- `x_i`: scaling된 설계변수.
- `beta`: 회귀 계수.
- `x_i x_j`: 변수 상호작용.
- `epsilon`: 모델이 설명하지 못한 잔차.
## FEM surrogate에서의 의미
Beam 문제에서는 `I = b h^3 / 12` 때문에 응답이 입력 변수에 대해 비선형이다. 낮은 차수 다항식은 이 관계를 완벽히 재현하지 못할 수 있지만, 다음 장점이 있다.
- 빠르다.
- 계수 해석이 가능하다.
- 적은 데이터에서도 안정적이다.
- 복잡한 모델의 baseline으로 적합하다.
RSM은 특히 설계변수 범위가 좁고 응답이 단조롭고 매끄러울 때 유용하다.
## 구현 선택
이 튜토리얼에서는 scikit-learn의 `PolynomialFeatures``Ridge`를 조합한다.
```text
StandardScaler
-> PolynomialFeatures(degree=2, include_bias=False)
-> Ridge(alpha=...)
```
`PolynomialFeatures`는 입력 변수의 다항 조합을 만들고, `Ridge`는 L2 regularization으로 계수 크기를 제어한다. 일반 선형회귀 대신 Ridge를 쓰는 이유는 다항 feature가 늘어나면 feature 간 상관성이 커지고 계수가 불안정해질 수 있기 때문이다.
## Notebook 실습 포인트
`notebooks/01_response_surface_surrogate.ipynb`는 다음을 보여준다.
1. 동일 FEM dataset 로드.
2. target `tip_uy_m` 선택.
3. degree 1, 2, 3 비교.
4. Ridge `alpha` 변화에 따른 train/test error 비교.
5. parity plot과 residual plot.
6. 다항 feature 이름과 계수 크기 해석.
## 장점
- 학습과 예측이 매우 빠르다.
- 작은 데이터에서 baseline으로 좋다.
- 변수 간 interaction을 명시적으로 볼 수 있다.
- extrapolation이 tree model보다 연속적이다.
## 한계와 실패 모드
- 실제 응답이 강하게 비선형이면 낮은 차수 다항식으로 부족하다.
- 높은 차수는 과적합과 수치 불안정을 만든다.
- 입력 scaling 없이 다항 feature를 만들면 큰 단위의 변수가 학습을 지배할 수 있다.
- 설계공간 경계 밖에서는 다항식이 물리적으로 말이 안 되는 큰 값을 낼 수 있다.
## 구조해석 해석 기준
RSM이 좋은 선택인 경우:
- 설계변수 수가 적다.
- 입력 범위가 좁다.
- 응답이 매끄럽고 단조적이다.
- 설명 가능한 surrogate가 중요하다.
RSM을 피해야 하는 경우:
- 응답에 threshold, discontinuity, contact-like behavior가 있다.
- 입력 범위가 넓고 상호작용이 복잡하다.
- 국소 응력 peak처럼 고차 비선형성이 크다.
## References
- Box, G. E. P. and Wilson, K. B. (1951), "On the Experimental Attainment of Optimum Conditions", Journal of the Royal Statistical Society Series B. https://doi.org/10.1111/j.2517-6161.1951.tb00067.x
- scikit-learn `PolynomialFeatures` documentation. https://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.PolynomialFeatures.html
- scikit-learn `Ridge` documentation. https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.Ridge.html