validation set의 필요성 이해하기 재활

1. validation set은 왜 필요할까

 

1-1) 필요성

 

학습 후 test set에 적용하여 모델의 성능을 평가해야하는데

 

학습 과정에는 평가하기 위한 데이터가 없으니 제대로 학습을 하고는 있는 것인지 정확한 검증이 어려움

 

학습에 이용되지 않은 데이터로 모델이 학습을 잘 하고 있는지 중간 검증을 하고 있는 것은 분명히 필요함

 

일반화를 잘 하고 있는지 아닌지 판단이 가능

 

test set을 학습 중에 사용할 수는 없으니 train set의 일부로 validation set을 만들어

 

남은 train set으로 학습을 진행하고 validation set으로 중간 검증을 수행

 

data가 오히려 줄어드는 것이 아닌가?

 

train set으로부터 validation set을 만들면 데이터가 줄어들어서 오히려 bias가 되는 것은 아닐까?

 

그러면 validation set으로 학습에 이용한 train set을 사용한다면?

 

train set에 이미 fitting된 모델은 train set으로 평가한다고 해도 정답을 맞추기가 쉽다

 

일반화 되었다고 검증하기가 어렵다 이 말이다

 

 

1-2) 결론

 

학습에 이용하지 않은 분포가 필요하고 이것으로 기학습된 model이 얼마나 일반화 능력을 가질지 중간중간 평가하는 것은 중요하다.

 

데이터가 줄어들면 아쉬울 수는 있어도 train set의 일부를 train set과 validation set으로 나눠

 

train set으로만 학습을 진행하고 validation set으로 중간 평가를 한다.

 

일반화의 성능을 직접 높여준다는 생각보다는 일반화 능력이 있는지 아닌지 검증할 수 있는 절차라고 생각

 

test set은 학습 중에 웬만하면 전혀 건드리지 않는 것이 맞다

 

 

 

2. cross validation

 

training set중에서 학습에 사용하지 않은 validation set으로 train model을 평가함

 

그러나 안그래도 작은 train set인데 validation set을 굳이 나눠서 data 분포를 줄여서 data가 너무 아깝다

 

이런 validation set도 학습에 사용하는 방법이 없을까?

 

validation set을 다른 위치에서 가져온 model과 앙상블하는 방법

 

 

 

2-1) k-fold cross validation

 

만약 k=5이면 전체 training set중에서 20%를 validation set으로 해서 총 5개의 fold를 만든다

 

그러면 총 5개의 model을 만들 수 있는데

 

5개 model이 서로 다른 training set을 학습하면서 서로 다른 특색 있는 weight를 가지는 model이 된다

 

그러나 k에 대한 명확한 정답이 없어

 

보통은 5개임

 

그리고 validation을 random으로 뽑으므로 class가 imbalance한 경우 특정 class가 아예 없는 validation set도 생길 수 있음

 

 

 

2-2) stratified k-fold cross validation

 

class imbalance한 경우 각 fold들의 training set과 validation set들의 class별 data분포가 최대한 동일하게 가져가도록 set을 구성하는 방법

 

 

TAGS.

Comments