반응형

1. 왜 다항 회귀를 사용하는가
앞서 살펴본 일반 선형회귀(Linear Regression) 는 각 피처와 타깃 값 사이의 관계를 직선으로 가정합니다.
하지만 실제 데이터에서는 다음과 같은 문제가 자주 발생합니다.
- 피처와 타깃 간 관계가 곡선 형태
- 단순 직선으로는 패턴을 충분히 설명하지 못함
- 언더피팅(Underfitting) 발생
이때 사용하는 방법이 다항 회귀(Polynomial Regression) 입니다.
다항 회귀는
피처를 다항식 형태로 확장한 뒤, 선형 회귀 모델을 적용
하는 방식으로, 비선형 패턴을 보다 유연하게 학습할 수 있습니다.
2. 실습 데이터: 보스턴 주택가격 데이터
- 독립 변수(X) : 범죄율, 방 개수, 주택 노후도, 세금 등 13개 피처
- 종속 변수(y) : 주택 가격(PRICE)
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error, r2_score
from sklearn.preprocessing import PolynomialFeatures
from sklearn.linear_model import LinearRegression
from sklearn.pipeline import Pipeline
import numpy as np
3. 학습 / 테스트 데이터 분리
# 타깃 변수(PRICE)와 피처 분리
X_data = bostonDF.drop(['PRICE'], axis=1, inplace=False)
y_target = bostonDF['PRICE']
# 학습 데이터 70%, 테스트 데이터 30% 분리
X_train, X_test, y_train, y_test = train_test_split(
X_data,
y_target,
test_size=0.3,
random_state=156
)
핵심 포인트
- random_state 고정 → 결과 재현성 확보
- 다항 회귀 역시 학습/평가 분리 원칙은 동일
4. Pipeline을 이용한 다항 회귀 모델 구성
# 다항 피처 변환 + 선형 회귀를 하나의 파이프라인으로 구성
p_model = Pipeline([
('poly', PolynomialFeatures(
degree=2, # 2차 다항식 적용
include_bias=False # 절편 항(1)은 LinearRegression이 자동 처리
)),
('linear', LinearRegression())
])
왜 Pipeline을 사용하는가?
- 전처리 + 모델을 하나의 흐름으로 관리
- 코드 가독성 향상
- 교차검증, 하이퍼파라미터 튜닝 시 필수 구조
5. 모델 학습 및 예측
# 모델 학습
p_model.fit(X_train, y_train)
# 테스트 데이터 예측
y_preds = p_model.predict(X_test)
6. 회귀 성능 평가
# 평균 제곱 오차(MSE)
mse = mean_squared_error(y_test, y_preds)
# RMSE (MSE에 루트 적용)
rmse = np.sqrt(mse)
print(f'MSE : {mse}')
print(f'RMSE : {rmse}')
print(f'Variance Score(R^2) : {r2_score(y_test, y_preds)}')
MSE : 15.555752313191336
RMSE : 3.9440781322371565
Variance Score : 0.7816647162535606
해석
- RMSE ≈ 3.94
→ 예측 가격이 평균적으로 약 3.9만 달러 정도 오차 발생 - R² ≈ 0.78
→ 전체 주택 가격 변동성의 약 78% 설명
7. 다항 피처 확장 결과 확인
# 다항 피처 변환 결과 확인
X_train_poly = PolynomialFeatures(
degree=2,
include_bias=False
).fit_transform(X_train)
X_train_poly.shape, X_train.shape
((354, 104), (354, 13))
의미
- 원본 피처: 13개
- 2차 다항 변환 후 피처: 104개
👉 피처 수가 급격히 증가
8. 다항 회귀의 핵심 주의사항 (중요)
다항 회귀는 잘 쓰면 강력하지만, 잘못 쓰면 오버피팅의 지름길
- 차수(degree)가 커질수록
- 피처 수 폭발
- 모델 복잡도 증가
- 학습 데이터에 과도하게 적합
- 테스트 성능이 오히려 나빠질 수 있음
실무 권장 전략
- 낮은 차수(2~3차)부터 시작
- 반드시 교차검증(CV) 수행
- Ridge / Lasso와 함께 사용 고려
마무리 정리
- 다항 회귀는 선형 회귀의 표현력을 확장하는 기법
- PolynomialFeatures + LinearRegression 구조가 핵심
- Pipeline 사용은 사실상 필수
- 피처 수 증가 → 오버피팅 관리가 가장 중요
다음 단계로 이어가면 좋은 주제는 다음과 같습니다.
- 🔜 다항 회귀 + Ridge / Lasso 규제
- 🔜 차수별 성능 비교 (degree 1~3)
- 🔜 교차검증 기반 최적 차수 선택
반응형
'Programming' 카테고리의 다른 글
| 규제 선형회귀(Regularized Linear Regression)와 Ridge 회귀 실습 (1) | 2026.01.05 |
|---|---|
| 다항 회귀를 이용한 과소적합과 과적합 이해 (0) | 2026.01.05 |
| 다항 회귀(Polynomial Regression)의 이해와 실습 (0) | 2026.01.05 |
| LinearRegression 클래스와 보스턴 주택 가격 예측 실습 (0) | 2026.01.05 |
| LinearRegression 클래스와 선형 회귀 평가 지표 정리 (0) | 2026.01.02 |