machine learning 분야에서 성능에 가장 중요한 영향을 끼치는 요소 중 하나가 데이터인 것에는 틀림이 없습니다.
train시에 input을 어떤 데이터로 구성하느냐에 따라 성능이 향상할지 감소할지가 결정되죠.
이때 주로 사용하게 되는 것이 CV(cross-validation)방법입니다.
test set을 제외하고 모든 데이터를 사용하여 학습을 시키게 되며 이 중 어느 부분은 validation set(Dev-set)으로 쪼개지게되어 성능을 검증하는데 사용하게 됩니다.
train_idx, val_idx = train_test_split(its, train_size = 0.8, random_state = 80)
하지만 여러가지 이유(시간 부족, 학습 환경 부실)로 인해 CV를 사용하기가 힘든 경우라면?
신경망을 한번 학습시키는데만 해도 엄청난 시간이 필요하며 한 cycle(큰 수의 epoch)을 돌리는데 시간 뿐만 아니라 학습 환경또한 벅찬 경우가 있습니다.
train set으로 학습시키고 validation set으로 검증한 뒤, test set을 사용하여 최종 결과물을 낸 model이 있습니다.
하지만 이 모델은 validation set으로 사용한 데이터를 한번도 보지 못했기때문에 아마(100% 확실하지 않기 떄문) 성능이 떨어질거라고 예상됩니다. 모델은 데이터를 많이 보면 볼수록 견고(robust)해지고, 최종적으로 일반적이게 되니까요.
그럼 우리는 최종 모델을 어떻게든 저장을 했을 겁니다. hdf5든 h5든 어떠한 형식으로든요. 다시 로드해서 이번엔 split 과정을 거치지 않습니다. 모델을 더욱 강화시키기 위해서 entire set으로 retrain시킵니다. 이때 당연한 사실이지만 반드시 test set은 건들지 말아야합니다.
이렇게 해서 새롭게 얻어진 모델로 inference를 하여 최종 성능을 얻을 수 있습니다.
이상적으로 CV를 통해 score를 얻을 수 있다면, 이를 이용해서 비교헀을때 성능이 유사함을 알 수 있습니다.
'# Machine Learning > 글 공부' 카테고리의 다른 글
Tensorflow 특정 gpu 사용하기 (0) | 2019.07.22 |
---|---|
(Ubuntu) Ndivia driver 삭제, cuda 삭제 (0) | 2019.07.11 |
Activation function에 맞는 initilization parameters (0) | 2019.05.20 |
릿지회귀, 라쏘회귀, 엘라스틱넷 (0) | 2019.03.19 |
Deep Neural Network에서의 bias, variance (0) | 2019.03.18 |