회귀변수를 진행할 때는 학습(training)을 위한 데이터 집합이 필요하다. 이 학습 데이터 집합의 종속 변수값을 얼마나 잘 예측하였는지를 나타내는 성능을 표본내 성능 검증(in-sample testing)이라고 한다.
그런데 회귀분석 모형을 만드는 목적 중 하나는 종속 변수의 값을 아직 알지 못하고 따라서 학습에 사용하지 않은 표본의 대해 종속 변수의 값을 알아내고자 하는 것, 즉 예측(prediction)이다. 이렇게 학습에 쓰이지 않는 표본 데이터 집합의 종속 변수 값을 얼마나 잘 예측하는가를 검사하는 것을 표본외 성능 검증(out-of-sample testing) 혹은 교차검증(cross validation)이라고 한다. - (데이터 사이언스 스쿨 발췌)
K겹 교차 검증이란
K-fold란 데이터를 K개의 data fold로 나누고 각각의 데이터들을 train, test 데이터로 나누어 검증하는 방법이다. 일반적으로 모델을 구성할 때 7:3 혹은 8:2로 train test 데이터를 나눕니다. train 데이터로 모델을 설계하고 test 데이터에 적용을 시킵니다. 그런데, 이 7의 비율인 train 데이터로만 모델을 돌리게 되면 데이터가 고정되어 있기 때문에 결국 그 모델은 train 데이터에서만 잘 동작하나 test 데이터에서는 성능이 꽝인 모델이 산출되게 됩니다. 이를 과적합(Overfitting)이라고 합니다. 이를 해결하기 위해서 나온 것이 교차 검증(Cross Validation)입니다.
Learning the parameters of a prediction function and testing it on the same data is a methodological mistake: a model that would just repeat the labels of the samples that it has just seen would have a perfect score but would fail to predict anything useful on yet-unseen data. This situation is called overfitting.
그럼 train 데이터만 고정하지 않으면 해결될 문제입니다. 이 방법이 교차 검증입니다. 하이퍼 파라미터 튜닝을 통해 최적의 성능을 발휘하는 파라미터를 찾을 수 있습니다. 각각의 subset은 모두 크기가 같아야 합니다. 단점은 반복 횟수가 많아 오래 걸립니다.
Cross Validation Score
score = cross_val_score(model, X, y, cv)
- model = 학습을 시킬 모델
- X = 학습시킬 훈련 데이터 세트, 독립변수
- y = 학습시킬 훈련 데이터 세트의 label, 종속변수
- cv = int 혹은 k-fold, fold의 수
datascienceschool.net/view-notebook/266d699d748847b3a3aa7b9805b846ae/
scikit-learn.org/stable/modules/cross_validation.html
'데이터 분석' 카테고리의 다른 글
SQL) Mysql에서 데이터 BLOB으로 나올 때 해지방법 (0) | 2021.12.13 |
---|---|
SQL) Safe Update 모드 끄기 (0) | 2021.09.30 |