# 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