미해결
[개정판] 파이썬 머신러닝 완벽 가이드
Cross Validation 로 검증한 모델을 예측 모델로 사용할 때에 대한 질문
좋은 강의 감사드립니다! 책을 구매해서 강의와 같이 보고 있는데, 책 + 강의 내용 모두 정말 알차고, 마치 off line 에서 받은 것과 같은 교육 내용을 저렴한 가격에 제공해 주셔서 정말 감사드립니다. ^^
KFold 나 StratifiedKFold, cross_val_score 등의 방법으로 모델을 검증하고나서, 해당 모델로 신규 데이터에 대한 예측을 하는 경우에 대한 질문입니다.
예를 들어 3개 그룹으로 KFold 를 했고 정확도가 [0.98 0.92 0.96] 와 같이 나왔다면, 각 정확도를 내뱉는 모델들은 각각 다른 weight 를 가지는 각기 다른 모델들일 텐데, 최종적으로 어떤 파라메터가 해당 모델에 저장이 되어 예측시 사용되는 것인지요? 아니면 KFold 를 한 k 개의 모델을 모두 저장했다가 예측시 평균값이나 가장 많이 예측하는 클래스로 예측값을 주는 방식을 사용하는 것인지 궁금합니다.
예를들어 만약 선형회귀식을 만들 때도 KFold 를 사용한다면, k개 만큼의 weight vector 가 만들어질 텐데, 어떤 weight vector를 사용하는 것이 좋은 방법이 될 지요?
1) k 개의 선형회귀 모델을 다 사용하되 앙상블 처럼 각 모델에서 주는 output 들의 평균값을 사용함.
2) k 개의 선형회귀 모델 중에 추정력이 가장 좋은 모델의 weight vector 를 선택해서 향후 예측모델로 사용함.
3) KFold cross validation 결과가 안정적으로 나와 준다면 해당 data 분석에 선형회귀모델 방법이 적합하다고 판단하고, KFold 를 하지 않고 모든 데이터를 그냥 전부 사용해서 최종 선형회귀모델을 만들어서 추후 예측모델로 사용함. (모든 데이터를 training set 으로 사용해 버림)
위 두 가지 중에 어떤 방식이 좋은 방법이 될지요? 아니면 다른 더 좋은 접근 방법이 있을지 문의드립니다.
그리고 덧붙임 질문이지만.... kFold 와 같은 cross validation 부류의 기법을 사용할 때, fold 개수 만큼 (cross validation 을 사용할 때는 데이터개수 만큼) 생성되는 예측모델을 구성하는 weights 들이 유사한지를 tracking 해서 모델의 안정성을 평가해 보는 것이 의미가 있을지... 혹은 그런 접근 방법도 있는지.... 궁금합니다!
(Y 의 실측값 vs. Y 의 예측값을 비교해 보는 것이 아닌, 각 모델들의 weights 들이 유사한지를 비교해 보는 것이 의미가 있을지...)