[머신러닝] 다시 공부하는 머신러닝 2일차

junseokkim00·2023년 1월 25일
0

ML

목록 보기
2/3

목차

  1. Bias and Variance

1. Bias and Variance

Training data vs Test data

  • data는 학습 데이터평가 데이터로 나눌 수 있다.
    • 학습 데이터: 모델 학습에 사용됨
    • 평가 데이터: 오직 모델 평가를 위한 데이터 (절대로 모델 학습에 사용되면 안됨!!)

Test data
? 학습 데이터와 평가 데이터는 같은 분포를 가지는가?
? 평가 데이터는 어느 정도의 크기를 가지는가? \Rightarrow 10%~20% 정도

Bias and Variance Trade-off(1)

  • 모델이 비선형 모델일수록 복잡해진다. (복잡도 증가)
  • 모델이 복잡할수록 완벽하게 학습함

복잡할수록 좋다?

  1. overfitting: 데이터가 적은 상황 (과도하게 학습)
  2. underfitting: 데이터가 많은 상황 (심한 단순화)

Bias and Variance Trade-off(2)

MSE를 살펴볼 때, 결국 Error는 Bias와 Variance로 이루어져 있다.

MSE(θ^)=Eθ((θ^θ)2)=E(θ^E(θ^)+E(θ^)θ)2)=E((θ^E(θ^))2+2(θ^E(θ^))(E(θ^)θ)+(E(θ^)θ))2)=E((θ^E(θ^))2)+(E(θ^)θ)2=Varθ(θ^)+Biasθ(θ^,θ)2MSE(\hat{\theta}) = E_{\theta}((\hat{\theta}-\theta)^2) = E(\hat{\theta}-E(\hat{\theta})+E(\hat{\theta})-\theta)^2) = E((\hat{\theta}-E(\hat{\theta}))^2+2(\hat{\theta}-E(\hat{\theta}))(E(\hat{\theta})-\theta)+(E(\hat{\theta})-\theta))^2) = E((\hat{\theta}-E(\hat{\theta}))^2)+(E(\hat{\theta})-\theta)^2 = Var_{\theta}(\hat{\theta})+Bias_{\theta}(\hat{\theta},\theta)^2

여기서 Bias와 Variance를 잘 살펴봐야한다.

MSE(θ^)=Varθ(θ^)+Biasθ(θ^,θ)2MSE(\hat{\theta})= Var_{\theta}(\hat{\theta})+Bias_{\theta}(\hat{\theta},\theta)^2

  • Variance: 예측값들이 한 곳에 모여 있지 못하고 분산되어 있으면 Variance가 크다.
  • Bias: 예측값의 평균값이 θ\theta(실제 정답) 값에 가까우면 Bias가 작다.

Bias는 underfitting에 관련되어 있다!! (Bias가 너무 크면 underfitting의 가능성이 높아진다.)
Variance는 overfitting에 관련되어 있다!! (Variance가 크면 overfitting의 가능성이 높아짐)

그렇기에 둘 중 무조건 하나는 포기해야하는 양상을 가지고 있다.

(모델 복잡도 관련된 그래프 사진 첨부)

해결방안

  1. 검증 데이터셋
  2. K-fold cross validation
  3. 정규화 손실함수

1. 검증 데이터셋

기존 데이터 셋의 분리: train set + test set
검증 데이터 셋을 포함한 데이터 셋의 분리: train set + valid set + test set

valid set 이란?

  • 학습에 사용되지 않는 데이터
  • 테스트 시에도 사용되지 않는 데이터
  • 결국 학습 중간에 평가의 용도, 가장 성능이 좋은 파라미터를 저장해놓는다.

(검증 데이터셋 사용에 대한 사진 첨부)

LOOCV(Leave out one cross validation)

  • 랜덤으로 생성된 검증 데이터셋은 편향된 결과를 불러옴
  • 간단하게 모든 데이터셋 샘플 한개마다 검증을 진행하는 방식
  • 학습데이터가 nn개라고 가정할시, 총 nn번의 fitting을 진행하게 된다.

(LOOCV 관련 사진 첨부)

2. K-fold cross validation

앞선 LOOCV의 방식은 검증데이터가 1개이므로 학습 횟수가 매우 증가한다. 그렇기에 검증데이터 뭉텅이로 묶어서 검증을 진행하는 방식이다.

  • 총 K개의 덩어리로 나누기 때문에 한 덩어리에는 n/Kn/K만큼의 크기를 가지고 있다.
  • 총 K번의 fitting을 진행하면 된다.

(K-fold cross validation 사진 첨부)

K가 커지게 되면

  • 학습데이터수 \uparrow
  • Bias 에러값 \downarrow, Variance 에러값 \uparrow
  • 계산 비용 \uparrow

3. 정규화 손실함수

모델이 점점 복잡해지면 모델의 파라미터가 많아진다.
결국 overfitting이 일어날 확률이 높아지기 때문에,
중요한 파라미터만 학습시켜서 overfitting을 막을 수 있는 방법
(필요없는 파라미터를 0으로 만들어버림)

정규화 종류

  1. Ridge regression
  2. Lasso regression

Ridge regression

L=Σi=1n(yi(β0+Σj=1Dβjxij))2L = \Sigma_{i=1}^{n}(y_i-(\beta_0+\Sigma_{j=1}^D{\beta_jx_{ij}}))^2+ λΣj=1Dβj2\lambda\Sigma_{j=1}^{D}\beta_j^2

  • 정규화 식이 제곱의 합으로 표현됨
  • λ\lambda는 정규화의 영향을 조절하는 하이퍼파라미터
  • MSE 손실을 줄이지 못하면 페널티

Lasso regression

L=Σi=1n(yi(β0+Σj=1Dβjxij))2L = \Sigma_{i=1}^{n}(y_i-(\beta_0+\Sigma_{j=1}^D{\beta_jx_{ij}}))^2 + λΣj=1Dβj\lambda\Sigma_{j=1}^{D}|\beta_j|

  • 정규화 식을 절대값의 합으로 표현함
  • λ\lambda는 마찬가지로 정규화의 영향을 조절하는 하이퍼파라미터

결국
1. λ\lambda가 커지면, 모델의 파라미터가 많이 0으로 변함 \rightarrow 모델 복잡도 \downarrow
2. underfitting이 일어나는 시나리오 \rightarrow Bias error \uparrow, Variance error \downarrow
3. parameter의 희소성: Ridge 정규화 << Lasso 정규화

정규화 란, 모델의 복잡도를 높여 overfitting을 진행한 상태에서, 정규화 손실함수를 적용하여 일부 파라미터를 0으로 만들어 모델의 복잡도를 낮춰 overfitting을 방지하는 방법이다.

0개의 댓글