데이터 스터디/Stats\ML

07. 과적합(Overfitting)과 정규화(Regularization)

케이와이엠 2022. 3. 4. 20:18

07. 과적합(Overfitting)과 정규화(Regularization)

 

❕ 오버피팅을 조심하자 ❕ 

(feature 수가 너무 많아서와 같은 이유로) 모델이 복잡해 variance가 커진 것을 오버피팅 overfitting 이라고 부른다. 

우리가 모델링을 할 때 가장 두려워하는 것이 바로 오버피팅일 것이다. 

train set에만 정확하고 최종적인 목표인 test set에서는 성능이 낮게 나오면 말짱도루묵이기 때문이다. 

물론 train set에서 성능이 잘나오면 엄청나게 나쁜 모델이 탄생하진 않겠지만 그래도 우리의 목표는 test set에도 만족하는 일반화를 이루어내야한다는 점 !! 

구글 이미지

여기서 짚고 넘어가야 할 점은, 우리의 손실함수인 mse를 최소화하려고 할 때 bias와 variance 사이에 trade-off 관계가 발생한다는 것이다. 쉽게 말해 bias는 값들이 정답에서 얼마나 멀어져있느냐이고 / variance는 데이터들이 얼마나 퍼져있느냐 = 변동성이 크다를 의미한다. 이 둘을 한번에 꾀하긴 힘들다

따라서 BIAS와 VARIANCE 둘 중 하나라도 낮추면 좋은 모델이라 할 수 있다 !!

 

BIAS가 0인 unbiased estimator는 최소제곱법(LSE)로 구한 회귀계수 베타가 좋은 예시가 되겠고, 

그렇다면 bias를 조금 희생하더라도(즉, bias가 조금 크게 나오더라도) variance를 줄이기 위한 방법으로는 뭐가 있을까 ? 다시 말해 오버피팅을 막는 방법으로는 뭐가 있을까? 

 

 

오버피팅을 막는 방법으로는 다음이 있다. 

- 모델적 측면 : 
dropout, early stopping, learning rate조정, batch-normalization, L1-norm, L2-norm (=penalized model)

- 데이터 측면 : 
cross-validation, 데이터 증량

이번 시간은 모델적 측면에서의 정규화(Regularization) 방법들을 다뤄보도록 하겠다. 

 

❕ 정규화의 원리 ❕ 

정규화는 오버피팅을 예방하고 모델을 좀 더 일반적화하기 위한 일종의 패널티를 부여한 모델이라고 보면 된다. 

아래에선 람다(λ)를 사용해 제약을 준 것이라 보면 된다. 

(1)번 모델에서 과적합된 모델이 있는데 여기서 

- λ를 크게 지정한다면 : 언더피팅

- λ를 작게 지정한다면 : 오버피팅이 발생한다.  

적절히 조정해서 가장 적합한 (2)번 모델을 만들어야한다. 

정리하자면 오버피팅을 막음과 동시에 loss함수를 최소화하기 위해서,

우리는 베타에 대한 규제화를 통해서 불필요한 베타계수들을 제거해줄 수 있다.

(마치 통계학에서 '모수 베타 β = 0' 인지 아닌지 검정을 통해 해당 x를 제거하는 것과 같은 원리이다)