콘텐츠로 이동

선형 모델 (Linear Models)

난이도: 초급~중급
선수 지식: 기초 선형대수, 미적분, 확률/통계 기본 개념
관련 문서: 정규화 이론 | 손실 함수 | 경사 하강법 | 과적합과 과소적합


개요

선형 모델(Linear Models)은 머신러닝에서 가장 기본이 되는 모델 군이다. 입력 특성(feature)의 가중 합(weighted sum)으로 예측값을 만들며, 해석이 용이하고 수학적 성질이 잘 알려져 있어 모든 ML 실무자가 반드시 이해해야 하는 모델이다.

선형 모델은 크게 다음으로 나뉜다: - 선형 회귀 (Linear Regression): 연속값 예측 - 로지스틱 회귀 (Logistic Regression): 분류 문제 - 정규화된 변형 (Regularized variants): Ridge, Lasso, Elastic Net


핵심 개념

1. 선형 회귀 (Linear Regression)

모델 정의

\[\hat{y} = \mathbf{w}^T\mathbf{x} + b\]

목적 함수는 잔차 제곱합(RSS, Residual Sum of Squares)의 최소화이다:

\[\min_{\mathbf{w}} \sum_{i=1}^{n}(y_i - \hat{y}_i)^2\]

정규 방정식 (Normal Equation)

닫힌 형태 해(closed-form solution)가 존재한다:

\[\mathbf{w} = (\mathbf{X}^T\mathbf{X})^{-1}\mathbf{X}^T\mathbf{y}\]
  • 시간 복잡도: \(O(p^2n + p^3)\) (특성 수 \(p\), 샘플 수 \(n\))
  • \(\mathbf{X}^T\mathbf{X}\)가 특이(singular)하면 역행렬이 존재하지 않음 (다중공선성 문제)

Gauss-Markov 가정

선형 회귀가 BLUE(Best Linear Unbiased Estimator)가 되려면 다음 가정이 필요하다:

가정 설명 위반 시 대응
선형성 (Linearity) \(y\)\(\mathbf{x}\)의 관계가 선형 다항 특성, 비선형 변환
오차 독립성 (Independence) 오차항이 서로 독립 GLS (일반화 최소제곱)
등분산성 (Homoscedasticity) 오차의 분산이 일정 WLS (가중 최소제곱)
다중공선성 없음 특성 간 강한 상관 없음 정규화, PCA
정규성 (Normality) 오차가 정규분포 (추론 시 필요, 추정 시 불필요) 로버스트 표준오차

주요 평가 지표

  • \(R^2 = 1 - \frac{\text{SS}_{\text{res}}}{\text{SS}_{\text{tot}}}\): 설명된 분산 비율
  • 조정된 \(R^2\) (Adjusted \(R^2\)): 특성 수 증가에 대한 페널티 부여
  • RMSE, MAE: 예측 오차의 크기

진단 시각화

  • 잔차도 (Residual plot): 패턴이 보이면 가정 위반
  • Q-Q plot: 정규성 확인
  • 적합값 vs 실제값 (Fitted vs Actual): 45도 직선에 가까울수록 좋음

2. 로지스틱 회귀 (Logistic Regression)

모델 정의

\[P(y=1|\mathbf{x}) = \sigma(\mathbf{w}^T\mathbf{x} + b) = \frac{1}{1+e^{-(\mathbf{w}^T\mathbf{x} + b)}}\]

여기서 \(\sigma\)는 시그모이드(sigmoid) 함수이다.

손실 함수: 이진 교차 엔트로피 (Binary Cross-Entropy)

\[L = -\frac{1}{N}\sum_{i=1}^{N}\left[y_i\log\hat{y}_i + (1-y_i)\log(1-\hat{y}_i)\right]\]

결정 경계 (Decision Boundary)

  • 특성 공간에서 선형 초평면이다
  • \(\mathbf{w}^T\mathbf{x} + b = 0\)인 지점이 결정 경계

계수의 해석

  • 계수 \(w_j\)로그 오즈비(log-odds ratio)를 의미
  • 오즈비: \(e^{w_j}\) (해당 특성이 1 증가할 때 오즈가 \(e^{w_j}\)배 변화)

다중 클래스 확장

방법 설명 특징
OvR (One-vs-Rest) 각 클래스에 대해 이진 분류기 학습 \(K\)개 모델, 가장 일반적
OvO (One-vs-One) 모든 클래스 쌍에 대해 학습 \(K(K-1)/2\)개 모델
Softmax (Multinomial) 전체 클래스에 대해 동시 학습 단일 모델, 확률 합 = 1

최적화

  • 닫힌 형태 해가 존재하지 않음
  • 경사 하강법 또는 Newton-Raphson (IRLS: Iteratively Reweighted Least Squares) 사용
graph LR
    A[입력 x] --> B["z = w^T x + b"]
    B --> C["σ(z) = 1/(1+e^{-z})"]
    C --> D{P ≥ 0.5?}
    D -->|Yes| E[클래스 1]
    D -->|No| F[클래스 0]

3. Ridge 회귀 (L2 정규화)

목적 함수

\[\min_{\mathbf{w}} \sum_{i=1}^{n}(y_i - \hat{y}_i)^2 + \lambda\|\mathbf{w}\|_2^2\]

닫힌 형태 해

\[\mathbf{w} = (\mathbf{X}^T\mathbf{X} + \lambda\mathbf{I})^{-1}\mathbf{X}^T\mathbf{y}\]
  • \(\lambda\mathbf{I}\)를 더함으로써 행렬이 항상 역행렬 가능해짐 (다중공선성 해결)

핵심 특성

  • 계수를 0에 가깝게 축소하지만, 정확히 0으로 만들지는 않음
  • 기하학적 해석: 가중치가 L2 ball (\(\|\mathbf{w}\|_2^2 \le t\)) 내에 있도록 제약
  • 베이지안 해석: 가중치에 대한 가우시안 사전분포 (Gaussian prior)

4. Lasso 회귀 (L1 정규화)

목적 함수

\[\min_{\mathbf{w}} \sum_{i=1}^{n}(y_i - \hat{y}_i)^2 + \lambda\|\mathbf{w}\|_1\]

핵심 특성

  • 희소한 해(sparse solution)를 만듦 --> 자동 특성 선택 (feature selection)
  • 닫힌 형태 해 없음; 좌표 하강법(Coordinate Descent) 또는 LARS 알고리즘으로 해결
  • 기하학적 해석: L1 ball (다이아몬드 형태)의 꼭짓점에서 해가 만들어짐
  • 베이지안 해석: 가중치에 대한 라플라스 사전분포 (Laplace prior)

한계

  • \(p > n\)일 때 최대 \(n\)개의 특성만 선택 가능
  • 상관된 특성들 중 하나만 임의로 선택 (불안정)

5. Elastic Net

목적 함수

\[\min_{\mathbf{w}} \sum_{i=1}^{n}(y_i - \hat{y}_i)^2 + \lambda_1\|\mathbf{w}\|_1 + \lambda_2\|\mathbf{w}\|_2^2\]

혼합 비율: \(\alpha = \frac{\lambda_1}{\lambda_1 + \lambda_2}\) (\(\alpha=1\)이면 Lasso, \(\alpha=0\)이면 Ridge)

핵심 특성

  • Lasso의 희소성 + Ridge의 안정성을 결합
  • 그룹 효과 (grouping effect): 상관된 특성들을 함께 선택/제거
  • 상관된 특성 그룹이 있고, 동시에 희소성이 필요할 때 최적

상세 비교: Ridge vs Lasso vs Elastic Net

속성 Ridge Lasso Elastic Net
희소성 없음 있음 있음
특성 선택 불가 가능 가능
상관된 특성 잘 처리 불안정 잘 처리
계산 방식 닫힌 형태 반복적 반복적
베이지안 사전분포 가우시안 라플라스 혼합
\(\lambda \to \infty\) \(\mathbf{w} \to 0\) \(\mathbf{w} = 0\) \(\mathbf{w} = 0\)
flowchart TD
    A[정규화 방법 선택] --> B{특성 선택이 필요한가?}
    B -->|아니오| C[Ridge]
    B -->|예| D{특성 간 상관관계가 높은가?}
    D -->|아니오| E[Lasso]
    D -->|예| F[Elastic Net]

L1 vs L2 기하학적 직관

L1 제약 영역은 다이아몬드(마름모) 형태이고, L2 제약 영역은 원 형태이다. 비용 함수의 등고선(contour)이 제약 영역과 만나는 점이 해가 된다.

  • L1: 등고선이 다이아몬드의 꼭짓점에서 접할 확률이 높음 --> 일부 가중치가 정확히 0
  • L2: 등고선이 원의 곡면에서 접함 --> 모든 가중치가 0이 아닌 작은 값

이것이 L1이 희소성을 만들고 L2는 만들지 못하는 근본적인 이유이다.


언제 사용하는가

상황 추천 모델
해석 가능성이 중요한 경우 선형 회귀, 로지스틱 회귀
특성 수가 매우 많은 경우 (\(p >> n\)) Lasso, Elastic Net
다중공선성이 있는 경우 Ridge, Elastic Net
기본 성능 베이스라인이 필요한 경우 로지스틱 회귀
확률 해석이 필요한 분류 로지스틱 회귀
빠른 학습/예측이 필요한 경우 모든 선형 모델
비선형 관계가 있는 경우 다항 특성 + 선형 모델, 또는 다른 모델 고려

흔한 오해와 함정

1. "로지스틱 회귀는 회귀 모델이다"

  • 이름에 "회귀"가 들어가지만 분류 모델이다. 이름의 유래는 로지스틱 함수를 사용하기 때문이다.

2. "로지스틱 회귀는 이진 분류만 가능하다"

  • Multinomial(Softmax) 변형을 통해 다중 클래스 분류도 가능하다.

3. "선형 모델은 비선형 결정 경계를 만들 수 없다"

  • 다항 특성(polynomial features)이나 특성 교차(feature interaction)를 추가하면 원래 특성 공간에서는 비선형 경계를 만들 수 있다.

4. "L1이 L2보다 항상 낫다"

  • 모든 특성이 관련 있는 경우 Ridge가 Lasso보다 나은 성능을 보인다. 어떤 정규화가 좋은지는 데이터의 특성에 따라 다르다.

5. "\(R^2\)가 높으면 좋은 모델이다"

  • \(R^2\)는 특성을 추가할수록 항상 증가한다. 반드시 Adjusted \(R^2\)나 검증 세트 성능을 확인해야 한다.

6. "선형 회귀로 분류를 해도 된다"

  • 이론적으로 가능하지만, 예측값이 [0, 1] 범위를 벗어날 수 있고 이상치에 매우 민감하다. 분류에는 로지스틱 회귀를 사용해야 한다.

다른 주제와의 연결

  • 정규화 이론: Ridge/Lasso/Elastic Net은 정규화의 대표적 사례
  • 손실 함수: MSE, Cross-Entropy 등 선형 모델의 손실 함수
  • 경사 하강법: 로지스틱 회귀의 최적화 방법
  • SVM: 선형 SVM은 힌지 손실을 사용하는 선형 모델의 변형
  • 차원 축소: PCA와의 연결 (다중공선성 해결), LDA와의 비교
  • 앙상블 방법: 선형 모델은 스태킹의 메타 학습기로 자주 사용됨

자주 묻는 면접 질문

  1. 왜 L1은 희소성을 만들고 L2는 만들지 않는가?
  2. 기하학적 논증: L1 ball의 꼭짓점이 축 위에 있어 등고선이 꼭짓점에서 접할 확률이 높음

  3. Ridge와 Lasso 중 어떤 것을 선택해야 하는가?

  4. 모든 특성이 관련 있으면 Ridge, 일부만 관련 있으면 Lasso, 상관된 특성 그룹이 있으면 Elastic Net

  5. \(\lambda \to \infty\)일 때 Ridge 회귀에서 무슨 일이 일어나는가?

  6. \(\mathbf{w} \to 0\) (모든 가중치가 0에 수렴)

  7. 로지스틱 회귀가 선형 모델인 이유는?

  8. 출력이 비선형(시그모이드)이지만, 결정 경계는 특성 공간에서 선형 초평면이다

  9. 선형 회귀를 분류에 사용할 수 있는가?

  10. 가능하지만 부적절하다. LDA와의 연결점이 있으나, 예측 범위 제한 없음, 이상치 민감성 등의 문제가 있다.

코드 예시

from sklearn.linear_model import (
    LinearRegression, LogisticRegression,
    Ridge, Lasso, ElasticNet
)

# 선형 회귀
lr = LinearRegression()
lr.fit(X_train, y_train)

# 로지스틱 회귀
log_reg = LogisticRegression(penalty='l2', C=1.0)  # C = 1/lambda
log_reg.fit(X_train, y_train)

# Ridge 회귀
ridge = Ridge(alpha=1.0)  # alpha = lambda
ridge.fit(X_train, y_train)

# Lasso 회귀
lasso = Lasso(alpha=1.0)
lasso.fit(X_train, y_train)

# Elastic Net
elastic = ElasticNet(alpha=1.0, l1_ratio=0.5)  # l1_ratio = alpha (혼합 비율)
elastic.fit(X_train, y_train)

용어 정리

영어 한국어
Linear Regression 선형 회귀
Logistic Regression 로지스틱 회귀
Ridge Regression 릿지 회귀
Lasso Regression 라쏘 회귀
Elastic Net 엘라스틱 넷
Normal Equation 정규 방정식
Regularization 정규화
Feature Selection 특성 선택
Multicollinearity 다중공선성
Odds Ratio 오즈비
Decision Boundary 결정 경계
Sparsity 희소성

참고 자료

  • Hastie, Tibshirani, Friedman - The Elements of Statistical Learning (Ch. 3, 4)
  • Bishop - Pattern Recognition and Machine Learning (Ch. 3, 4)
  • Tibshirani (1996) - "Regression Shrinkage and Selection via the Lasso"
  • Zou & Hastie (2005) - "Regularization and Variable Selection via the Elastic Net"