728x90
반응형
선형 회귀(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
반응형
'AI > Machine Learning' 카테고리의 다른 글
데이터 변환 (0) | 2025.04.08 |
---|---|
로그(log)와 지수(exp)의 관계 (1) | 2025.04.08 |
Bias-Variance Trade-off in python (0) | 2025.04.07 |
Bias-Variance Trade-off (1) | 2025.04.07 |
다중 회귀(Multiple Regression)의 정규 방정식(Normal Equation) (0) | 2025.03.29 |