20.09.08 22:19 작성
·
943
0
GridSearchCV를 학습해보고 있습니다.
여러 모델 파라미터를 튜닝하며 하이퍼파리미터 튜닝을 해보고 있는데
GridSearchCV 에 cv= 횟수에 따라 스코어와 파라미터가 달라지는것을 확인했습니다.
그래서 최고의 스코어,
그 스코어가 나오는 모델, 파라미터, cv 횟수를 구했는데
모델과 파라미터는 적용했는데 cv 횟수는 그냥 참고용인가요?
모델에 적용할 수 있는 건데 제가 방법을 모르는건지 문의드립니다.
아래 이미지를 예로 들면 Logistic Regression에 cv=5 일때 스코어가 제일 좋아서
그 파라미터로 모델을 재설정했고 모델을 fit 하려고 보니 cv=5일때 적용이 가능한지가 궁금합니다.
# 모델 재설정
log = LogisticRegression(random_state=42, C=2.7825594022071245, max_iter=400, multi_class='auto', penalty='l2', solver='lbfgs')
# 모델 학습
log.fit(train[cols], target)
답변 2
2
2020. 09. 09. 19:17
안녕하십니까,
cv는 참고용으로만 하는게 일반적입니다만 꼭 이를 이용하시겠다면, Out Of Fold prediction으로 이를 활용해 볼수 있습니다.
먼저 CV로 하이퍼 파라미터 튜닝을 하는 이유는 Test 데이터 세트가 Train 데이터 세트와 일정 부분 다를 수 있기 때문에 여러번 CV를 해서 평균적인 결과를 반영한 최적 하이퍼 파라미터를 결정하는 방식입니다.
하지만 CV를 했다고 해서, 반드시 Test 데이터 세트로 평가한 결과와 반드시 유사하다고는 할 수 없습니다. CV 5로 평균을 취했기 때문에 비교적 Outlier성의 검증 데이터 세트로 인한 불균일한 평가 결과 보다는 좀 더 안정적인 결과를 나타낸다고 생각하면 좋을 것 같습니다.
꼭 CV와 결합된 하이퍼 파라미터를 사용하고자 하신다면 앞에서 말씀드린 Out Of Fold prediction 을 고려해 볼 수 있습니다. 하지만 일반적으로 OOF 는 연속된 실수값을 예측하는데 더 효과가 좋습니다(예를 들어 분류 확률값, 회귀 예측)
OOF는 CV로 지정된 Fold 세트 별로 iteration을 수행하면서 각각 학습을 합니다. 이렇게 개별 학습된 모델별로 테스트 데이터 세트를 예측하고 이러한 예측 결과를 평균하여 최종 예측합니다.
KFold 생성(CV=5)
5번 KFold iteration 수행 시작
학습 데이터와 검증 데이터 분리
분리된 학습 데이터와 검증 데이터를 기반으로 Estimator 학습 수행
학습된 Estimator를 기반으로 테스트 데이터에 예측
예측 결과값을 더한 후 각각 평균 적용.
end of Kfold iteration
감사합니다.
0
2020. 09. 09. 19:29
아 무슨 말씀이신지 알겠습니다.
지금은 분류 문제로 연습해보고 있어서 cv 는 참고 정도로만 사용하고
다음에 예측 문제를 풀때 알려주신 OOF 까지 고려해서 학습해 보도록 하겠습니다.
자세한 답변 감사합니다^^