Definition
- Input과 output으로 target을 예측하는 방법
- 어떻게 예측하는가?
- 최적의 $w$와 $\epsilon$값을 가지는 일차방정식으로 target을 예측
- Simple linear regression: $y= w·input+\epsilon$
- Multiple linear regression: $y_i = w_1·input_1+w_2·input_2+ \cdots+w_i·input_i+ \epsilon$
- $w$는 weight(coefficient), $\epsilon$은 intercept
Loss function
- 최적의 $w$와 $\epsilon$를 찾아 target을 정확하게 예측하기 위한 방법 (정확하게 예측하기 위해서는 loss를 줄이는 것이 필요)
- 어떻게 loss를 줄이는가?
- MSE(Mean Squared Error): $\frac{1}{n} \sum_{i=0}^{n} (y_i-r_i)^2$ → 0에 가까울 수록 실제값과 비슷함 but 제곱 때문에 outlier에 민감
- 어떻게 loss를 0에 가깝게 만드는가?
- gradient를 global optimization될 때까지 학습
- Normal Equation: MSE를 미분한 값 = 기울기 = $(X^T·X)^{-1}·X^T·y$자
- 장점: 메모리 공간이 충분하다면 효율적으로 처리
- 단점: 행렬 연산이기 때문에 데이터가 많을 수록 구현 속도가 느림
- 데이터가 많다면 어떻게 효율적으로 처리하는가? → Gradient Descent
- Gradient Descent
- $W_{new} = W_{old}-\alpha·MSE_{derivative}$
- $\alpha$ = hyperparameter = learning rate (너무 작으면 local optimum, 너무 크면 do not convergence)
- 만약 데이터 크기가 커지면 학습 시간이 길어지기 때문에 균일한 학습 시간을 위해 Standard Normal Distribution(평균0+표준편차1)을 사용
- Type
- BGD(Batch GD): MSE값을 모든 점들의 합에 대해 계산하여 한번에 업데이트
- 장점: 모든 점들의 합을 구하기 때문에 데이터가 많으면 느림
- 단점: 정규방정식보다 빠름
- SGD(Stochastic GD): MSE값을 모든 점에서 shuffle하고 계산하여 한번씩 업데이트
- 장점: 데이터가 많으면 빠르게 처리 가능
- 단점: shuffle때문에 안정적으로 convergence 하지 않음 (Learning schedule을 사용하면 안정적으로 처리 가능. Learning schedule이란 Learning rate를 점진적으로 감소시키는 것)
- MSGD(Mini-batch SGD): BGD + SGD를 합친 hybrid 방법
- 장점: Mini-batch가 큰 경우 SGD보다 덜 안정적으로 움직임
- 단점: SGD보다 local optimum에 빠지기 쉬움
Multiple Linear Regression
- 비선형 데이터를 선형 모델로 학습하기 위한 방법
- 기존 특성(input)에 basis function(e.g., log or exp)을 적용하여 확장된 특성을 포함한 형태로 변형한 뒤 학습
- 파이프 라인?
- Overfit: model이 실제 분포보다 training dataset 분포에 더 근접하게 학습하는 현상 → testing dataset에 정확도는 좋지 않은 경우
- solution: regularization → loss function에 새로운 term을 추가
- LASSO: MSE + L1-Norm(penalty)
- L1-Norm: MSE, penalty 합이 최소가 되게 하는 weight와 intercept를 찾기 위함 = MSE(W) + $\alpha$ * $\sum{W_i}$ , $\alpha$=penalty의 weight (사용자가 cross-validation을 통해 설정)