데이터분석데브코스 8/이론

8주차 9. 선형 회귀와 선형 분류

DataJ 2025. 5. 22. 18:39

1. 선형이란 무엇인가?

✅ 개념 정의

  • 선형관계: 독립변수의 변화가 종속변수에 일정한 비율로 영향을 주는 관계
  • 과자 (일가용: 1500원) + 우유 (1200원)을 고르면:
TotalCost = num_과자 × 1500 + num_우유 × 1200

▶️ 시간에 따라 과자와 우유의 수량이 TotalCost에 일정한 비율로 영향을 주면 "선형관계"라 부릅니다.

✅ 선형 모델 (Linear Model)

▶️ 기본 수식

  • 변수:
y = w₁x₁ + w₂x₂ + ... + wₙxₙ
  • 사용자 입력 값(x)과 파라미터(w)를 곱해 계산
  • 이 모델은 다음과 같이 시각화됨:
    • 2D: 직선
    • 3D: 평면
    • 고차원: 초평면 (Hyperplane)

2. 선형 회귀 (Linear Regression)

✅ 회귀 모델 수식

  • ŷ = w₀ + w₁x₁ + w₂x₂ + ... + wₙxₙ
  • → 편향(bias, w₀) 포함

✅ 비용 함수 (Loss Function)

  • 평균 제곱 오차 (MSE):
  • J(w) = (1/n) ∑(y - ŷ)²
  • 회귀에서는 이 오차를 최소화하는 w 값을 찾는 것이 목표

▶️ 손실 함수: MSE (Mean Squared Error)

  • 각 포인트에서 예측값과 실제값의 차이를 제곱해 평균
J(w) = (1/n) Σ (yᵢ - ŷᵢ)²

✅ 최적화 방법

  1. 정규방정식 (Normal Equation)
    • 해를 직접 계산
    • w = (XᵀX)⁻¹Xᵀy
  2. 경사하강법 (Gradient Descent)
    • 반복적으로 기울기 방향으로 파라미터를 업데이트
    • 학습률(learning rate) 설정이 중요

▶️ 예외 상황: 단순 선형 관계가 아닐 경우, 특이값 분해(SVD) 방식으로 해결 가능

✅ 확률적 경사하강법 (SGD)

  • 전체 데이터가 너무 클 경우 일부 샘플을 사용해 학습
  • 빠르게 수렴 가능, 특히 n ≫ p 상황에서 유리

3. 다중공선성 (Multicollinearity)

✅ 문제점

  • 독립 변수 간 높은 상관관계 → 모델 불안정
  • XᵀX가 역행렬을 가질 수 없음 → 정규방정식 사용 불가

✅ 해결책: SVD-OLS

  • 특이값 분해(SVD)를 통해 역행렬 없이 해 구하기
  • 수식: w = VΣ⁻¹Uᵀy

4. 규제가 있는 회귀 모델

✅ 과적합 방지

  • 파라미터 w가 너무 커지는 것을 억제

✅ 라쏘 회귀 (Lasso, L1 규제)

  • 비용 함수: J(w) + α‖w‖₁
  • 변수 중 일부를 0으로 만들어 불필요한 변수 제거

✅ 릿지 회귀 (Ridge, L2 규제)

  • 비용 함수: J(w) + α‖w‖²
  • 변수의 크기를 줄이되 0에는 도달하지 않음

5. 로지스틱 회귀/ 선형 분류 (Logistic Regression)

✅ 개요

  • 이진 분류 문제 해결에 사용
  • 확률 예측 기반 분류 (예: 0.7 → Positive, 0.3 → Negative)

✅ 모델 수식

  • logit = w₀ + w₁x₁ + ... + wₙxₙ

  • 확률 변환 함수 (시그모이드 함수):→ 항상 0~1 사이 확률 반환
  • σ(x) = 1 / (1 + exp(−x))

✅ 비용 함수

▶️ 손실 함수: Log Loss

J(w) = - [ y * log(p̂) + (1 - y) * log(1 - p̂) ]
  • 전체 데이터에 대한 평균:
J(w) = (1/n) Σ - [ yᵢ log(p̂ᵢ) + (1 - yᵢ) log(1 - p̂ᵢ) ]

▶️ 파라미터 업데이트 (Gradient Descent):

w ← w - lr * (p̂ - y) * x
  • Chain Rule을 사용해 계산

✅ 최적화

  • 경사하강법으로 파라미터 w 업데이트→ 미분 결과: ∂J/∂w = (p̂ − y) x
  • w ← w − lr × ∇J(w)

✅ 분류 확장

  • 다중 클래스 분류 시:
    • OvO (One-vs-One)
    • OvR (One-vs-Rest)
    • Softmax Regression 사용 가능

✅ OvO (One-vs-One, 일대일 분류)

  • 아이디어: 모든 클래스 쌍에 대해 각각 이진 분류기를 학습시킵니다.
  • 예: 클래스 A, B, C가 있다면 → A vs B, A vs C, B vs C (총 3개 분류기)
  • 예측 시: 다수결로 클래스 결정

📌 장점: 각 분류기가 적은 데이터를 다루므로 빠를 수 있음

📌 단점: 클래스 수가 많아질수록 분류기 수도 급증 (n(n-1)/2)


✅ OvR (One-vs-Rest, 일대다 분류)

  • 아이디어: 각 클래스를 하나의 분류기로 설정하고, 나머지 클래스를 모두 "그 외"로 둡니다.
  • 예: A vs (B, C), B vs (A, C), C vs (A, B) → 총 3개 분류기
  • 예측 시: 가장 높은 확률을 출력한 분류기의 클래스를 선택

📌 장점: 구현이 간단하고 직관적

📌 단점: 클래스 불균형에 민감할 수 있음


✅ Softmax Regression (다중 클래스 로지스틱 회귀)

  • 아이디어: 여러 클래스를 동시에 처리할 수 있는 일반화된 로지스틱 회귀
  • 모든 클래스에 대해 확률을 출력하고, 총합이 1이 되도록 정규화
  • 수식:
  • P(class_i) = exp(zᵢ) / Σ exp(zⱼ)
  • 보통 딥러닝에서도 출력층에서 사용되는 방식

📌 장점: 확률적으로 해석 가능, 하나의 모델로 처리

📌 단점: 수학적으로 복잡하고 계산량 많음


💡 예시로 정리

클래스 OvO OvR Softmax

A, B, C A vs B, A vs C, B vs C A vs (B+C), B vs (A+C), C vs (A+B) 하나의 모델로 A/B/C 확률 모두 계산