본문 바로가기
정보/IT 지식 정보

RANSAC과 다항 회귀 — 이상치와 비선형 관계 다루기 [7편]

by 안다니. 2026. 4. 4.
반응형
RANSAC 다항회귀

 

 

이상치에 강한 RANSAC과 곡선을 그리는 다항 회귀를 파이썬으로 구현합니다

시리즈: 머신러닝 실전 완전 정복

6편: 선형 회귀 기초 7편: RANSAC과 다항 회귀 8편: 규제 기법

1. RANSAC이란?

RANSAC(Random Sample Consensus)은 이상치(Outlier)에 강건한 회귀 방법입니다. 일반 선형 회귀는 이상치의 영향을 크게 받지만, RANSAC은 이를 자동으로 무시합니다.

RANSAC 작동 원리

  1. 무작위로 최소 샘플 선택
  2. 그 샘플로 모델 학습
  3. 전체 데이터에 대해 모델 적합도 계산
  4. 이상치 판정 (임계값 초과)
  5. 반복 후 최적 모델 선택
from sklearn.linear_model import RANSACRegressor

ransac = RANSACRegressor(
    LinearRegression(),
    max_trials=100,
    min_samples=50,
    loss='absolute_error',
    residual_threshold=5.0,
    random_state=0
)
ransac.fit(X, y)

💡 팁: residual_threshold는 이상치 판정 기준입니다. 값이 작을수록 엄격하게 이상치를 판정합니다.

2. Inlier vs Outlier 분리

RANSAC 학습 후 어떤 데이터가 이상치로 분류되었는지 확인할 수 있습니다.

inlier_mask = ransac.inlier_mask_
outlier_mask = np.logical_not(inlier_mask)

print(f'Inlier 개수: {inlier_mask.sum()}')
print(f'Outlier 개수: {outlier_mask.sum()}')

3. 다항 회귀(Polynomial Regression)

데이터가 직선이 아닌 곡선을 따를 때 사용합니다. 원본 특성의 다항식(제곱, 세제곱 등)을 새 특성으로 추가합니다.

from sklearn.preprocessing import PolynomialFeatures

quadratic = PolynomialFeatures(degree=2)
X_quad = quadratic.fit_transform(X)

pr = LinearRegression()
pr.fit(X_quad, y)
y_quad_pred = pr.predict(X_quad)

PolynomialFeatures 동작

  • degree=2: x → [1, x, x²]
  • degree=3: x → [1, x, x², x³]
  • 다중 특성: x₁, x₂ → [1, x₁, x₂, x₁², x₁x₂, x₂²]

4. 선형 vs 다항 회귀 비교

같은 데이터에 선형, 이차, 삼차 다항 회귀를 적용하면 차수가 높을수록 복잡한 곡선을 그립니다.

# 각 차수별로 모델 생성
models = {}
for degree in [1, 2, 3]:
    poly = PolynomialFeatures(degree=degree)
    X_poly = poly.fit_transform(X)
    lr = LinearRegression()
    lr.fit(X_poly, y)
    models[degree] = lr
    r2 = lr.score(X_poly, y)
    print(f'차수 {degree} R²: {r2:.4f}')

⚠️ 주의: 높은 차수는 훈련 데이터에 과적합될 수 있습니다. 과적합을 피하려면 검증 데이터셋으로 평가해야 합니다.

5. 비선형 관계 처리 (데이터 변환)

다항식 외에도 로그, 제곱근 등 수학 함수로 변환하여 비선형 관계를 직선화할 수 있습니다.

# 로그 변환
X_log = np.log(X)

# 제곱근 변환
X_sqrt = np.sqrt(X)

# 역수 변환
X_inv = 1 / X

lr = LinearRegression()
lr.fit(X_log, y)

변환 선택 가이드

  • 로그 변환: 지수적 성장 데이터
  • 제곱근: 완만한 증가
  • 역수: 감소하는 관계
  • 다항식: 복잡한 곡선

✓ 핵심 정리

  • RANSAC은 이상치에 강건한 회귀 방법
  • 다항 회귀로 곡선 관계 모델링
  • 데이터 변환으로 비선형을 직선화
  • 과적합 주의 — 검증 데이터로 평가

다음 편에서는 과적합을 잡는 규제 기법들을 배웁니다: Ridge, LASSO, ElasticNet

반응형

댓글