본문 바로가기
AI/Machine Learning

선형 회귀 모델의 데이터 변환

by comflex 2025. 4. 7.
728x90
반응형

Data transformation for Linear Regression


선형 회귀(Linear Regression)는 데이터 분석에서 가장 기본적이면서도 강력한 기법 중 하나입니다.
하지만 현실의 데이터는 반드시 선형적인 형태를 가지지 않기 때문에, 단순한 선형 모델만으로는 적절한 예측이 어려울 수 있습니다.

이때 유용하게 사용되는 것이 바로 데이터 변환(Data Transformation)입니다.
이번 글에서는 선형 회귀에서 자주 사용되는 변환 기법들을 소개하고, 그 목적과 효과를 함께 알아보겠습니다.


1. 왜 데이터를 변환할까?

  • 선형성을 만족시키기 위해
    회귀 모델은 입력 변수와 출력 변수 사이에 선형 관계가 있다고 가정합니다.
    실제 데이터가 이 가정을 만족하지 않으면 모델의 성능이 떨어집니다.
  • 이상치(Outlier)의 영향 최소화
    스케일이 크거나 이상치가 있는 데이터를 변환하면 안정적인 회귀 결과를 얻을 수 있습니다.
  • 정규성(Normality) 및 등분산성(Homoscedasticity) 확보
    선형 회귀의 여러 가정들(잔차의 정규성, 분산의 일정함)을 만족시키기 위해 데이터 변환이 필요합니다.

2. 자주 사용되는 데이터 변환 기법

① 로그 변환 (Log Transformation)

$$
y′=log(y)
$$

  • 양수 값에서만 사용 가능
  • 기하급수적 증가 데이터를 직선적으로 만들기 좋음
  • 분포가 한쪽으로 치우친 경우 유용

예시: 주택 가격, 수익, 인구 등


② 제곱근 변환 (Square Root)

$$
y' = \sqrt{y}​
$$

  • 약간의 왜곡만 줄이고 싶은 경우에 사용
  • 특히 Poisson 분포 기반 데이터에서 효과적

③ 다항 변환 (Polynomial Features)

$$
y = \beta_0 + \beta_1 x + \beta_2 x^2 + \ldots + \beta_n x^n
$$

  • 비선형 관계를 선형 모델 안에서 표현할 수 있게 해줌
  • 고차항 추가로 더 유연한 곡선을 만들 수 있음
  • 과적합 위험이 있으므로 적절한 차수 선택 필요

반응형
728x90

④ Box-Cox 변환

  • 여러 변환 방식을 하나의 프레임워크로 통합한 방식
  • 데이터가 정규분포에 가까워지도록 자동으로 변환
  • 사이킷런이나 scipy에서 간단히 구현 가능

3. 파이썬 예제 (로그 변환 vs. 원본 데이터)

import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression

# 예제 데이터 생성
X = np.linspace(1, 100, 100).reshape(-1, 1)
y = np.exp(0.05 * X).ravel()  # 지수 함수 형태

# 로그 변환
y_log = np.log(y)

# 선형 회귀 (변환 전)
model1 = LinearRegression().fit(X, y)
pred1 = model1.predict(X)

# 선형 회귀 (로그 변환 후)
model2 = LinearRegression().fit(X, y_log)
pred2 = np.exp(model2.predict(X))  # 다시 복원

# 시각화
plt.figure(figsize=(10, 5))
plt.plot(X, y, label="Original Data", color="gray")
plt.plot(X, pred1, label="Linear Fit (Original)", linestyle="--", color="red")
plt.plot(X, pred2, label="Linear Fit (Log-Transformed)", linestyle="--", color="green")
plt.legend()
plt.title("로그 변환 전후 회귀 비교")
plt.grid(True)
plt.show()


4. 주의할 점

  • 변환은 항상 해석력을 떨어뜨릴 수 있음
    예: 로그를 취하면 모델의 예측값도 로그 스케일이 되므로 복원(log⁻¹)이 필요
  • 음수나 0 값은 처리 주의
    로그/제곱근 변환은 음수나 0에서 정의되지 않음
  • 변환 후 항상 성능 확인
    RMSE, R² 등으로 평가

마무리

데이터 변환은 단순한 전처리 이상의 의미를 가집니다.
모델 성능 향상, 가정 만족, 노이즈 감소 등 다양한 이유로 사용되며,
선형 회귀 모델이 현실 세계의 데이터를 보다 잘 설명할 수 있게 도와줍니다.

728x90
반응형