다중 선형 회귀 분석과 경사하강법

YoungJae Kang·2025년 3월 23일
0

머신러닝 학습

목록 보기
3/14
post-thumbnail

1. 다중 선형 회귀의 개요

2. 다중 선형 회귀의 수학적 모델

  • 다중 선형 회귀는 여러 입력값을 각각의 가중치와 곱해 더한 후 편향값을 더하는 모델
  • 모델은 다음과 같이 정의됨:

일반 수식:

f(x)=wx+bf(\vec{x}) = \vec{w} \cdot \vec{x} + b

  • w=[w1,w2,...,wn]\vec{w} = [w_1, w_2, ..., w_n] : 가중치 벡터
  • x=[x1,x2,...,xn]\vec{x} = [x_1, x_2, ..., x_n] : 입력 특징 벡터
  • bb : 편향 (bias)
  • f(x)f(\vec{x}) : 예측 값

3. 다중 선형 회귀 모델의 예시

입력 특징 예시:

  • x1x_1: 집 크기 (평방피트)
  • x2x_2: 침실 수
  • x3x_3: 층 수
  • x4x_4: 주택의 연수 (나이)

모델 예시:

y^=0.1x1+4x2+10x32x4+80\hat{y} = 0.1x_1 + 4x_2 + 10x_3 - 2x_4 + 80

4. 벡터화 (Vectorization)

벡터화를 사용하면 연산을 효율적으로 처리할 수 있으며, 코드가 짧고 실행 속도가 빨라짐

4-1. 벡터화 전 (비효율적인 구현):

f = 0
for j in range(n):
    f += w[j] * x[j]
f += b

4-2. 벡터화 후 (효율적인 구현):

f = np.dot(w, x) + b

5. 다중 선형 회귀의 비용 함수

비용 함수는 예측값과 실제값 사이의 오차를 수치화

J(w,b)=12mi=1m(fw(x(i))y(i))2J(w, b) = \frac{1}{2m} \sum_{i=1}^{m} (f_w(x^{(i)}) - y^{(i)})^2

  • mm: 훈련 샘플 개수
  • x(i)x^{(i)}: ii번째 샘플의 입력 특징 벡터
  • y(i)y^{(i)}: ii번째 샘플의 실제 출력 값
  • fw(x(i))f_w(x^{(i)}): 예측 값

비용 함수는 기울기 하강법을 통해 최소화

6. 경사 하강법 (Gradient Descent)

모델의 가중치와 편향을 반복적으로 업데이트하여 비용 함수의 최소값을 찾는 최적화 알고리즘

6-1. 다중 특징일 때의 업데이트 식

wj:=wjα1mi=1m(fw(x(i))y(i))xj(i)w_j := w_j - \alpha \cdot \frac{1}{m} \sum_{i=1}^{m} (f_w(x^{(i)}) - y^{(i)}) \cdot x_j^{(i)}

b:=bα1mi=1m(fw(x(i))y(i))b := b - \alpha \cdot \frac{1}{m} \sum_{i=1}^{m} (f_w(x^{(i)}) - y^{(i)})

  • α\alpha: 학습률 (Learning Rate)

6-2. 벡터화된 형태

dw = (1/m) * np.dot(X.T, (y_pred - y_true))
db = (1/m) * np.sum(y_pred - y_true)

w = w - alpha * dw
b = b - alpha * db

7. 특징 스케일링 (Feature Scaling)

여러 특징의 값 범위가 크게 다를 경우, 경사 하강법의 수렴 속도가 느려질 수 있음

7-1. 스케일링 방법

(1) Min-Max Scaling:

xi:=ximin(x)max(x)min(x)x_i := \frac{x_i - \min(x)}{\max(x) - \min(x)}

(2) 평균 정규화 (Mean Normalization):

xi:=xiμmax(x)min(x)x_i := \frac{x_i - \mu}{\max(x) - \min(x)}

(3) Z-점수 정규화 (Z-score Normalization):

xi:=xiμσx_i := \frac{x_i - \mu}{\sigma}

  • μ\mu: 평균, σ\sigma: 표준편차

일반적으로 모든 특징이 -1 ~ 1 정도의 범위를 가지면 학습이 빠름

8. 학습률 선택 및 수렴 확인

수렴 확인 방법:

  • 반복 횟수에 따른 비용 함수 J(w,b)J(w,b)의 값 플로팅
  • 반복마다 JJ꾸준히 감소하면 수렴 중
  • 그래프가 평평해지면 수렴 완료

9. 특징 엔지니어링 (Feature Engineering)

원래의 특징을 조합하거나 변형하여 모델 성능을 높이기 위한 새로운 특징을 생성

예시:

  • x1x_1: 토지 너비
  • x2x_2: 토지 깊이
    x3=x1x2x_3 = x_1 \cdot x_2: 대지 면적

10. 다항 회귀 (Polynomial Regression)

단순 선형이 아닌 비선형 관계를 모델링

예시:

  • 입력 xx: 집 크기

모델:

y^=w1x+w2x2+w3x3+b\hat{y} = w_1x + w_2x^2 + w_3x^3 + b

또는

y^=w1x+b\hat{y} = w_1\sqrt{x} + b

주의: 다항 특징을 사용할 경우에도 스케일링이 매우 중요

11. 실습에서 사용하는 라이브러리

  • NumPy: 수치 계산 및 벡터화에 사용
  • Scikit-Learn: 선형 회귀 모델 구현에 자주 사용되는 오픈소스 라이브러리

실무에서도 Scikit-Learn의 LinearRegression 모델을 사용하여 간단하게 회귀 모델 학습 가능

profile
Data_Analyst

0개의 댓글