선형 회귀: 데이터에서 최적화된 모델까지
선형 회귀는 예측 변수와 목표 변수 간의 선형 관계를 모델링합니다. 단순 선형 회귀의 경우 방정식은 y = b₀ + b₁ × x이며, 여기서 x는 예측 변수, y는 응답 변수, b₀는 절편, b₁은 기울기입니다. 계수는 평면에서 선의 위치를 결정합니다.
특징과 응답 변수가 포함된 표 형식의 데이터가 기초가 됩니다. 예: 아파트 가격과 방 개수 간의 관계. 모델 품질은 표본의 대표성에 달려있으며, '쓰레기를 넣으면 쓰레기가 나온다'는 원리가 결과를 지배합니다.
모델은 예측과 패턴 식별에 유용합니다. 표 형식의 데이터를 분석적 표현으로 변환하면 새로운 관측치에 대한 외삽이 가능합니다.
최소제곱법
OLS(최소제곱법)는 잔차 제곱합을 최소화합니다: ∑(y_i - ŷ_i)². 해석적 해: b₁ = Cov(x, y) / Var(x), b₀ = ȳ - b₁ × x̄.
# 계수 계산 예시
import numpy as np
x = np.array([1, 2, 3, 4, 5])
y = np.array([2, 4, 5, 4, 5])
b1 = np.cov(x, y)[0,1] / np.var(x)
b0 = np.mean(y) - b1 * np.mean(x)
print(f'b0: {b0:.2f}, b1: {b1:.2f}')
이 접근법은 비퇴화 데이터에 작동하지만, 다변량 경우에는 행렬 역행 (XᵀX)⁻¹이 필요합니다.
모델 품질 평가
시각적으로: 예측값 대 실제값의 산점도, 잔차 플롯. 지표:
- R² (결정 계수): 설명된 분산 비율, 0–1.
- RMSE: √(MSE), 응답 변수 단위.
- MAE: 평균 절대 오차.
- MAPE/SMAPE: 백분율 오차.
잔차 플롯은 이분산성이나 비선형성을 드러냅니다.
데이터 분할 및 검증
훈련/테스트 분할(80/20)은 과적합을 방지합니다. 교차 검증(k-겹)은 폴드 간 지표를 평균화합니다.
def train_test_split(X, y, test_size=0.2):
indices = np.arange(len(X))
np.random.shuffle(indices)
split = int(len(X) * (1 - test_size))
return X[indices[:split]], X[indices[split:]], y[indices[:split]], y[indices[split:]]
다변량 회귀
y = b₀ + b₁x₁ + ... + bₙxₙ로 확장됩니다. 행렬 형태: ŷ = Xβ, 해 β = (XᵀX)⁻¹Xᵀy. 전처리:
- 정규화: (x - 최소)/(최대 - 최소).
- 표준화: (x - μ)/σ.
- 범주형 특징의 원-핫 인코딩.
확률적 해석
모델은 오차의 정규 분포를 가정합니다: ε ~ N(0, σ²). 예측 구간: *ŷ ± t SE √(1 + 1/n + (x - x̄)² / SXX)*. 최대우도추정(MLE)은 로그 우도를 최적화합니다.
이상치 처리
탐지 방법:
- 마할라노비스 거리: 다변량 공간에서의 일반화된 거리.
- 쿡 거리: 관측치가 계수에 미치는 영향.
- LOF (지역 이상치 인자): 지역 밀도.
- RANSAC: 무작위 부분집합의 합의.
제거 또는 강건한 회귀기(Huber 손실).
경사 하강법과 정규화
대규모 데이터의 경우: 반복적 최적화 θ := θ - α ∇J(θ), 여기서 J는 비용 함수.
- L1 (라쏘): |β|, 희소성.
- L2 (릿지): β², 축소.
하이퍼파라미터 λ는 교차 검증으로 조정됩니다.
def gradient_descent(X, y, lr=0.01, epochs=1000):
theta = np.zeros(X.shape[1])
for _ in range(epochs):
pred = X @ theta
grad = X.T @ (pred - y) / len(y)
theta -= lr * grad
return theta
핵심 요약
- 선형 회귀는 선형 관계를 위한 기본 도구로, 다변량 작업으로 확장 가능합니다.
- OLS는 해석적 해를 제공하며, 경사 하강법은 대규모 데이터셋에 사용됩니다.
- R²와 RMSE 같은 지표로 품질을 평가하고, 잔차 플롯으로 문제를 진단합니다.
- 정규화(L1/L2)는 과적합과 다중공선성을 방지합니다.
- 전처리(스케일링, 이상치 제거)는 안정성에 중요합니다.
— Editorial Team
아직 댓글이 없습니다.