반응형

이상치에 강한 RANSAC과 곡선을 그리는 다항 회귀를 파이썬으로 구현합니다
시리즈: 머신러닝 실전 완전 정복
6편: 선형 회귀 기초 7편: RANSAC과 다항 회귀 8편: 규제 기법
1. RANSAC이란?
RANSAC(Random Sample Consensus)은 이상치(Outlier)에 강건한 회귀 방법입니다. 일반 선형 회귀는 이상치의 영향을 크게 받지만, RANSAC은 이를 자동으로 무시합니다.
RANSAC 작동 원리
- 무작위로 최소 샘플 선택
- 그 샘플로 모델 학습
- 전체 데이터에 대해 모델 적합도 계산
- 이상치 판정 (임계값 초과)
- 반복 후 최적 모델 선택
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
반응형
'정보 > IT 지식 정보' 카테고리의 다른 글
| Ridge vs LASSO vs ElasticNet — 과적합을 잡는 규제 기법 총정리 [8편] (0) | 2026.04.06 |
|---|---|
| K-Means 클러스터링이란? 엘보우 방법과 실루엣 분석까지 [9편] (0) | 2026.04.06 |
| 선형 회귀란? 경사 하강법으로 직접 구현하기 [6편] (0) | 2026.04.03 |
| 배깅 vs 부스팅 — 결정 트리의 과적합을 잡는 두 전략[5편] (0) | 2026.04.03 |
| 앙상블 학습이란? 보팅 분류기로 모델 성능 높이기 [4편] (0) | 2026.04.02 |
댓글