How to choose a predictive model after k-fold cross-validation?
Pattern Recognition 2016. 11. 23. 15:46
I am wondering how to choose a predictive model after doing -fold cross-validation.
This may be awkwardly phrased, so let me explain in more detail: whenever I run -fold cross-validation, I use different sets of training data, and end up with different models.
I would like to know how to choose one of these models, so that I can present it to someone and say "this is the best classifier that we can come up with."
Is it OK to pick any one of the models? Or is there some kind of best practice that is involved, such as picking the model that achieves the median test error?
I think you are missing something still in your understanding of the purpose of cross-validation.
Let's get some terminology straight, generally when we say 'a model' we refer to a particular method for describing how some input data relates to what we are trying to predict. We don't generally refer to particular instances of that method as different models. So you might say 'I have a linear regression model' but you wouldn't call two different sets of the trained coefficients different models. At least not in the context of model selection.
So, when you do K-fold cross validation, you are testing how well your model is able to get trained by some data and then predict data it hasn't seen. We use cross validation for this because if you train using all the data you have, you have non left for testing. You could do this once, say by using 80% of the data to train and 20% to test, but what if the 20% you happened to pick to test happens to contain a bunch of points that are particularly easy (or particularly hard) to predict? We will not have come up with the best estimate possible of the models ability to learn and predict.
We want to use all of the data. So to continue the above example of an 80/20 split, we would do 5-fold cross validation by training the model 5 times on 80% of the data and testing on 20%. We ensure that each data point ends up in the 20% test set exactly once. We've therefore used every data point we have to contribute to an understanding of how well our model performs the task of learning from some data and predicting some new data.
But the purpose of cross-validation is not to come up with our final model. We don't use these 5 instances of our trained model to do any real prediction. For that we want to use all the data we have to come up with the best model possible. The purpose of cross-validation is model checking, not model building.
Now, say we have two models, say a linear regression model and a neural network. How can we say which model is better? We can do K-fold cross-validation and see which one proves better at predicting the test set points. But once we have used cross-validation to select the better performing model, we train that model (whether it be the linear regression or the neural network) on all the data. We don't use the actual model instances (trained model in cv) we trained during cross-validation for our final predictive model.
Note that there is a technique called bootstrap aggregation (usually shortened to 'bagging') that does in a way use model instances produced in a way similar to cross-validation to build up an ensemble model, but that is an advanced technique beyond the scope of your question here.
(난 당신이 cross 유효성 확인의 목적을 이해하는데 여전히 뭔가를 놓치고 있다고 생각합니다.
몇 가지 용어를 직선적으로 살펴 보도록하겠습니다. 일반적으로 '모델'이라고 할 때 입력 데이터가 우리가 예측하려고하는 것과 관련되는 방식을 설명하는 특정 방법을 말합니다. 우리는 일반적으로 그 방법의 특정 인스턴스를 다른 모델로 언급하지 않습니다. 따라서 '선형 회귀 모델이 있습니다.'라고 말할 수도 있지만 훈련 된 계수의 서로 다른 두 세트를 다른 모델이라고 부르지는 않습니다. 최소한 모델 선택이라는 맥락에서는 그렇지 않습니다.
따라서 K-fold 교차 유효성 검사를 수행하면 모델이 일부 데이터로 얼마나 잘 훈련 받았는지 테스트 한 후 보지 못한 데이터를 예측할 수 있습니다. 보유하고있는 모든 데이터를 사용하여 교육을하면 테스트 할 권한이 없으므로 교차 검증을 사용합니다. 이 작업은 한 번만 할 수 있습니다. 예를 들어, 훈련을 위해 80 %의 데이터를 사용하고 테스트를 위해 20 %의 데이터를 사용하는 경우가 있습니다.하지만 테스트를 위해 선택한 20 %의 경우에 특히 쉬운 (또는 특히 어려운) 예측하기? 우리는 모델을 배우고 예측할 수있는 최선의 가능성을 내놓지 않을 것입니다.
우리는 모든 데이터를 사용하고자합니다. 따라서 위의 80/20 분할 예제를 계속 진행하려면 데이터의 80 %에서 모델을 5 번 연습하고 20 %에서 테스트하여 5 배 교차 유효성 검사를 수행합니다. 각 데이터 포인트는 정확히 한 번 20 % 테스트 세트로 끝납니다. 따라서 우리는 모델이 어떤 데이터를 통해 학습하는 작업을 얼마나 잘 수행하고 새로운 데이터를 예측하는지에 대한 이해에 기여해야하는 모든 데이터 요소를 사용했습니다.
그러나 교차 검증의 목적은 우리의 최종 모델을 제시하는 것이 아닙니다. 우리는 실제 예측을하기 위해 훈련 된 모델의 5 가지 사례를 사용하지 않습니다. 이를 위해 가능한 최상의 모델을 찾기 위해 필요한 모든 데이터를 사용하고자합니다. 교차 유효성 확인의 목적은 모델 작성이 아니라 모델 확인입니다.
이제 선형 회귀 모형과 신경망이라는 두 가지 모델이 있다고 가정 해 보겠습니다. 어떤 모델이 더 좋은지 어떻게 말할 수 있습니까? K- 폴 교차 유효성 검사를 수행하고 테스트 세트 포인트를 예측할 때 어느 것이 더 나은지 확인하십시오. 그러나 교차 검증을 통해보다 우수한 성능의 모델을 선택하면 모든 데이터에 대해 해당 모델을 선형 회귀 또는 신경망으로 모델링합니다. 우리는 최종 예측 모델의 교차 검증 과정에서 훈련 한 실제 모델 인스턴스를 사용하지 않습니다.
부트 스트랩 집계 (일반적으로 'bagging'으로 단축)라는 기술이 있는데,이 방법은 교차 검증과 유사한 방식으로 생성 된 모델 인스턴스를 사용하여 앙상블 모델을 구축하지만 범위를 벗어나는 고급 기술입니다 여기에 귀하의 질문입니다.)
'Pattern Recognition' 카테고리의 다른 글
How do I evaluate a model? (0) | 2016.11.23 |
---|---|
Model evaluation, model selection, and algorithm selection in machine learning (0) | 2016.11.23 |
Fuzzy C-means (FCM) algorithm (0) | 2016.11.22 |
Pattern recognition lab, an image classification toolbox using Knn classifier and corss-validation. (0) | 2016.10.05 |
Generative model VS Discriminative model (0) | 2013.08.21 |