움직이는 교과서 · Interactive Textbook

머신러닝 회귀와 Feature Engineering

Choung, Simulation Tutorials for Computational Materials Science, Chapter 4. 슬라이더를 움직이면 그래프가 실시간으로 반응합니다.

Linear Regression Feature Engineering Overfitting Cross-Validation CO2RR

회귀 분석 기초

선형 회귀(linear regression)는 머신러닝의 가장 기본적인 방법입니다. 독립변수 $x$와 종속변수 $y$ 사이의 선형 관계 $\hat{y} = mx + b$를 찾아내는 것이 목표입니다.

최소자승법(OLS)은 잔차(residual) $y_i - \hat{y}_i$의 제곱합을 최소화하여 최적의 기울기 $m$과 절편 $b$를 결정합니다. 결정계수 $R^2$는 모델이 데이터 분산을 얼마나 설명하는지를 나타냅니다.

촉매 과학에서는 d-band center, electronegativity 같은 descriptor가 CO 흡착 에너지와 선형 관계를 보이는 경우가 많습니다. 이런 물리적 descriptor를 feature로 사용하면 해석 가능한 모델을 만들 수 있습니다.

$$\hat{y} = mx + b, \quad R^2 = 1 - \frac{\sum(y_i - \hat{y}_i)^2}{\sum(y_i - \bar{y})^2}$$
  • $m$: 기울기 (slope) — feature와 target 사이의 민감도
  • $b$: 절편 (intercept) — feature가 0일 때의 예측값
  • $R^2 = 1$이면 완벽한 예측, $R^2 = 0$이면 평균값만큼의 예측력
  • MAE (Mean Absolute Error): $\frac{1}{N}\sum|y_i - \hat{y}_i|$
Figure 4.1 Interactive Linear Regression
목표: R² ≥ 0.95 달성하기
R²가 0.95 이상이 되려면 noise σ를 얼마나 줄여야 할까요? 슬라이더를 조작하면서 찾아보세요.
현재: 슬라이더를 조작해보세요
Slope (m) 1.5
Intercept (b) -1.0
Noise (σ) 0.8
N points 30
MAE
RMSE
Fitted Slope
Noise와 R²의 관계
noise σ가 작을수록 데이터가 직선에 가까워져 R²가 1에 접근합니다. 실제 촉매 데이터에서는 DFT 계산 오차, 표면 구조 다양성 등이 noise 원인이 됩니다.

다항 회귀와 과적합

모델 복잡도(model complexity)를 높이면 training data에 더 잘 맞출 수 있지만, 새로운 데이터에 대한 예측력은 오히려 떨어질 수 있습니다. 이것이 과적합(overfitting) 문제입니다.

Bias-variance tradeoff는 머신러닝의 핵심 개념입니다. 단순한 모델은 bias가 크고(underfitting), 복잡한 모델은 variance가 큽니다(overfitting). 최적의 모델은 이 둘 사이의 균형점에 있습니다.

다항 회귀에서 degree를 높이면 training error는 계속 줄어들지만, test error는 U-자 곡선을 그립니다. 이 U-자 곡선의 최솟값이 최적의 모델 복잡도입니다.

$$\hat{y} = a_0 + a_1 x + a_2 x^2 + \cdots + a_d x^d$$
  • Underfitting (degree 1): 진짜 패턴을 놓침, 높은 bias
  • Just right (degree 3~4): 패턴을 포착하되 noise는 무시
  • Overfitting (degree 15): noise까지 학습, 높은 variance
  • Training error ≠ Test error — 반드시 별도 검증 필요
Figure 4.2 Overfitting Demo
Polynomial Degree 3
Degree3
Train RMSE
Test RMSE
과적합의 징후
degree가 너무 높으면 training data의 noise까지 학습합니다. 그래프에서 fitted curve가 data point 사이에서 격렬하게 흔들리는 것이 과적합의 전형적인 모습입니다.
  1. Degree = 1로 설정하세요. 직선이 sin 곡선을 전혀 따라가지 못합니다 (underfitting).
  2. Degree = 3으로 올려보세요. 곡선의 전체적인 형태를 잘 포착합니다.
  3. Degree = 7 이상으로 올려보세요. Training data에는 완벽하게 맞지만 곡선이 불안정해집니다.
  4. 아래 error plot을 관찰하세요. Test RMSE가 최소인 degree가 최적입니다.
Key Insight: Training error만 보면 항상 복잡한 모델이 좋아 보이지만, 실제 예측 성능(test error)은 적절한 복잡도에서 최적입니다. 이것이 cross-validation이 필요한 이유입니다.

Feature Engineering

Feature engineering은 ML 모델의 성능을 좌우하는 가장 중요한 단계입니다. CO2RR(이산화탄소 환원 반응) 촉매 연구에서는 다양한 물리/화학적 descriptor를 feature로 사용합니다.

d-band center는 전이금속 촉매의 CO 흡착 에너지를 예측하는 가장 강력한 descriptor입니다. Hammer-Nørskov d-band model에 따르면 d-band center가 Fermi level에 가까울수록 흡착이 강해집니다.

좋은 feature를 선택하면 적은 수의 descriptor로도 높은 예측력을 얻을 수 있습니다. 반대로 물리적 의미가 없는 feature는 noise만 학습하게 됩니다.

  • d-band center: 가장 중요한 descriptor, 전이금속의 반응성 결정
  • Electronegativity: 원소의 전자 끌어당기는 힘, 결합 극성 결정
  • Atomic radius: 원자 크기, 표면 구조와 흡착 사이트에 영향
  • Cohesive energy: 원자 간 결합력, 촉매 안정성 관련
  • Work function: 전자 방출에 필요한 에너지, 전하 이동 관련
Figure 4.3 Feature Importance (CO2RR)
Top N Features 7
Cumulative Importance
R² (Top N)
d-band center의 지배적 역할
d-band center가 CO 흡착 에너지의 가장 중요한 descriptor입니다. 상위 3개 feature만으로도 전체 importance의 70% 이상을 차지합니다.
만약 feature를 1개만 쓰면?
d-band center 하나로도 R²~0.6 정도는 나오지만, 다중 회귀가 훨씬 정확합니다. 하나의 descriptor로는 촉매 반응의 복잡한 관계를 완전히 설명할 수 없습니다.
클릭해서 확인 →
만약 training data가 10개뿐이면?
과적합 위험이 커지고, cross-validation의 fold당 sample이 너무 적어집니다. 일반적으로 feature 수의 5~10배 이상의 data가 필요합니다.
클릭해서 확인 →
만약 descriptor에 물리적 의미가 없으면?
noise를 학습하게 되어 일반화 성능이 떨어집니다. 물리 기반 descriptor가 중요합니다. random feature를 넣으면 training R²는 올라가도 test R²는 내려갑니다.
클릭해서 확인 →

Cross-Validation과 모델 평가

k-fold cross-validation은 데이터를 k개의 fold로 나누어 각각을 test set으로 사용하는 방법입니다. 매 fold에서 나머지 k-1개 fold를 training에 사용하므로, 모든 데이터가 한 번씩 test에 사용됩니다.

Cross-validation의 장점은 data를 낭비하지 않으면서도 모델의 일반화 성능을 추정할 수 있다는 점입니다. k가 클수록 training data가 많아지지만 fold 간 상관관계가 높아집니다.

모델 선택에서 가장 중요한 것은 mean R²뿐 아니라 R²의 표준편차(std)도 확인하는 것입니다. std가 크면 모델이 데이터 분할에 민감하다는 의미입니다.

  • k-fold CV: 데이터를 k등분, 각 fold를 돌아가며 test set으로 사용
  • Mean R²: 모든 fold의 R² 평균 — 일반화 성능의 추정치
  • Std R²: fold 간 편차 — 모델 안정성의 지표
  • k = 5 또는 10이 일반적으로 사용됩니다
Figure 4.4 Cross-Validation Visualization
k (folds) 5
Noise (σ) 1.0
Mean R²
Std R²
Best Fold
Worst Fold
  1. k = 3으로 설정하세요. 각 fold의 test set(빨간 구간)이 전체의 1/3을 차지합니다.
  2. k = 10으로 올려보세요. 더 많은 fold, 더 작은 test set, 더 많은 training data.
  3. Noise를 높여보세요. fold 간 R² 편차(std)가 커지는 것을 관찰하세요.
  4. 낮은 noise에서는 k에 관계없이 안정적인 R²를 보입니다.
Key Insight: k가 클수록 training 데이터를 많이 쓰지만, 각 fold의 test set이 작아져 R² 추정의 분산이 커질 수 있습니다. k = 5~10이 실용적인 선택입니다.
Q: R² = 0.95인 모델은 반드시 좋은 모델인가요?
정답: B) Training set에서 R² = 0.95여도 test set에서는 훨씬 낮을 수 있습니다. 과적합된 모델은 training data만 잘 맞추기 때문입니다. 반드시 cross-validation으로 test set 성능을 확인해야 합니다.

Parity Plot — 예측 vs 실제

Parity plot은 모델의 예측값($\hat{y}$)을 실제값($y$)에 대해 그린 산점도입니다. 완벽한 모델이라면 모든 점이 $y = x$ 직선 위에 위치합니다.

잔차(residual) 분석을 통해 모델의 체계적 오차(systematic bias)를 파악할 수 있습니다. bias가 있으면 점들이 $y = x$ 직선에서 한쪽으로 치우칩니다.

촉매 연구에서는 ±0.2 eV 이내의 예측 오차를 "화학적 정확도"(chemical accuracy)로 봅니다. Parity plot에서 이 범위를 시각적으로 표시하면 모델의 실용성을 빠르게 판단할 수 있습니다.

  • Parity line ($y = x$): 이상적인 예측 기준선
  • ±0.2 eV band: 화학적 정확도의 기준
  • Systematic bias: 점들이 parity line 위/아래로 치우침
  • MAE < 0.1 eV: 매우 정확한 모델의 기준
Figure 4.5 Parity Plot
목표: MAE < 0.1 eV 달성하기
bias를 0으로, noise를 최소로 만들어 MAE < 0.1 eV을 달성해보세요.
현재: 슬라이더를 조작해보세요
Noise (σ) 0.30
Systematic Bias 0.00
N Points 40
MAE
RMSE
Max Error
Within 0.2 eV
Parity plot 읽는 법
점들이 y = x 직선에 밀집할수록 좋은 모델입니다. 파란 band(±0.2 eV) 안에 점이 많을수록 화학적으로 의미 있는 정확도를 갖는 모델입니다.
Q: Feature importance가 가장 높은 descriptor로만 모델을 만들면?
정답: B) 하나의 feature만으로는 복잡한 관계를 표현하기 어렵습니다. d-band center 하나로는 R² ~ 0.6 정도만 가능하며, 나머지 분산을 설명하려면 추가 descriptor가 필요합니다.

Chapter 4 핵심 메시지

01
과적합 경계
모델 복잡도를 높이면 training error는 줄지만 test error는 커질 수 있습니다. Bias-variance tradeoff를 항상 고려해야 합니다.
02
Feature가 핵심
물리적으로 의미 있는 descriptor가 데이터 양보다 중요합니다. d-band center 같은 물리 기반 feature가 모델의 해석성과 정확도를 모두 높입니다.
03
검증 필수
Cross-validation과 parity plot으로 반드시 모델을 검증해야 합니다. Training R²만으로는 모델의 일반화 성능을 알 수 없습니다.