교차 유효성 검사 후 전체 데이터 세트를 사용한 교육?


139

교차 유효성 검사 후 전체 데이터 세트학습 하는 것이 항상 좋은 생각 입니까? 또 다른 방법으로 넣어, 그것은과 훈련 괜찮 모든 내 데이터 세트의 샘플 및 하지 이 특정 피팅 여부를 확인 할 수있는 overfits ?


문제에 대한 배경 지식 :

매개 변수화 된 모델 패밀리 가 있다고 가정하십시오 . 또한 데이터 포인트 세트가 있고 k- 겹 교차 검증을 통해 모델을 선택하여 데이터를 가장 일반화하는 모델을 선택한다고 가정하십시오. NαN

모델 선택의 경우, 각 후보에 대해 k- 폴드 교차 검증을 실행 하여 에서 검색 (예 : 그리드 검색)을 수행 할 수 있습니다 . 교차 검증의 각 접기에서 학습 된 모델 끝납니다 . βαα βα

교차 검증의 요점은 이러한 각 접힘에 대해 학습 된 모델이 "보이지 않는 데이터"에서 테스트하여 과적 합한지 여부를 확인할 수 있다는 것입니다. 결과 에 따라 그리드 검색에서 교차 검증 중에 가장 일반화 되는 매개 변수 대해 학습 된 모델을 선택할 수 있습니다 .α 최고βbestαbest

이제, 말 모델 선택 후 , 내가 사용하고자하는 모든 더 나은 모델을 배우고 잘하면 내 데이터 세트에서 포인트를합니다. 이를 위해 모델 선택 중에 선택한 모델에 해당하는 매개 변수를 사용할 수 있으며 전체 데이터 세트에 대한 학습 후에는 새로운 학습 모델 있습니다. 문제는 내가 훈련을위한 내 데이터 세트에서 모든 포인트를 사용하는 경우,이다 이 새로운 학습 모델의 경우 내가 확인할 수 없습니다 overfits 어떤 보이지 않는 데이터. 이 문제를 해결하는 올바른 방법은 무엇입니까?α b e s t β f u l l β f u l lNαbestβfull βfull


2
거의 정확한 중복 : stats.stackexchange.com/questions/52274 많은 가치있는 답변. 아마도이 스레드는 병합되어야하지만 어느 방향으로 확실하지 않습니다. 둘 다 아주 좋은 답변을 받아 들였습니다.
amoeba

답변:


111

교차 검증을 생각하는 방법은 모델의 성능을 추정하기보다는 모델을 작성하는 방법을 사용하여 얻은 성능을 추정하는 것입니다.

교차 검증을 사용하여 모델의 하이퍼 파라미터 ( s) 를 추정 한 다음 해당 하이퍼 파라미터를 사용하여 모델을 전체 데이터 세트에 맞추는 경우 교차 검증 추정값을 인식하면 괜찮습니다. 성능이 최적화 될 가능성이있다 (아마도 실질적으로). 교차 검증 성능을 최소화하기 위해 모델의 일부 (하이파 파라미터)가 선택 되었기 때문에 교차 검증 통계에 0이 아닌 분산이있는 경우 (과도) 과적 합 가능성이 있습니다. 모델 선택 기준.α

하이퍼 파라미터를 선택하고 결과 모델의 성능을 추정하려면 중첩 교차 검증을 수행해야합니다. 여기서 외부 교차 검증은 모델의 성능을 평가하는 데 사용되며 각 교차 교차 검증은 검증은 각 접힘에서 개별적으로 하이퍼 파라미터를 결정하는 데 사용됩니다. 전체 집합에 대해 교차 유효성 검사를 사용하여 최종 모델을 작성하고 하이퍼 매개 변수를 선택한 다음 최적화 된 하이퍼 매개 변수를 사용하여 전체 데이터 집합에서 분류자를 작성합니다.

이것은 물론 계산 비용이 많이 들지만, 부적절한 성능 추정으로 인한 편향이 클 수 있으므로 가치가 있습니다. 내 논문을 참조하십시오

GC Cawley 및 NLC Talbot, 성능 평가에서 모델 선택 및 후속 선택 바이어스에 과적 합, Journal of Machine Learning Research, 2010. Research, vol. 11, pp. 2079-2107, 2010 년 7 월. ( www , pdf )

그러나 모델 선택에서 과적 합을 유지하는 것은 여전히 ​​가능합니다 (중복 교차 검증은 테스트 만 가능합니다). 내가 찾은 유용한 방법은 교차 검증 오류에 정규화 용어를 추가하여 지나치게 복잡한 모델을 초래할 수있는 하이퍼 매개 변수 값에 불이익을주는 것입니다.

GC Cawley 및 NLC Talbot, 하이퍼 파라미터의 베이지안 정규화를 통해 모델 선택에서 과적 합 방지, Journal of Machine Learning Research, 8 권, 841-861 페이지, 2007 년 4 월. ( www , pdf )

따라서 귀하의 질문에 대한 답변은 (i) 예, 전체 데이터 세트를 사용하여 최종 모델을 생성해야할수록 더 많은 데이터를 사용하는 것이 일반화 가능성이 높지만 (ii) 바이어스되지 않은 성능 추정치를 통해 확인하십시오 중첩 된 교차 검증 및 잠재적으로 모델 선택에서 과적 합을 피하기 위해 교차 검증 통계에 대한 불이익을 고려하십시오.


3
+1 : 질문에 대한 답 : "교차 검증을 사용하여 모델의 하이퍼 파라미터 (α)를 추정 한 다음 해당 하이퍼 파라미터를 사용하여 모델을 전체 데이터 세트에 맞추면 괜찮습니다…"
Neil G

4
@soufanom, 아닙니다. 모델에 관한 선택을하기 위해 "초기 실험"을 사용하는 것은 과적 합을 초래할 가능성이 높으며 성능 분석에 낙관적 인 편견을 가져올 것입니다. 성능 분석에 사용 된 교차 검증은 각 접기에서 모델을 독립적으로 피팅하는 데 사용 된 모든 단계를 반복해야합니다. 필자의 논문의 실험에 따르면 커널 모델은 이러한 종류의 편향에 매우 민감 할 수 있으므로 가능한 모든 장비를 사용하여 모델 선택 및 성능 평가를 수행하는 것이 중요합니다.
Dikran Marsupial

3
SVM과 같은 커널 방법의 경우 계산 비용없이 거의 일회성 교차 유효성 검사를 수행 할 수 있습니다 (제 답변에 나와있는 논문 참조). 성능 평가를 위해 k- 폴드 크로스 밸리데이션에 중첩 된 하이퍼 파라미터를 튜닝하기 위해이 "가상"리브-원-아웃 크로스 밸리데이션을 사용합니다. 그러면 비용이 상당히 합리적입니다. 제 생각에는 성능 평가가 어떤 방식 으로든 하이퍼 파라미터의 튜닝에 의해 바이어스되는 절차를 사용하는 것은 용납되지 않습니다. 신뢰할만한 견적을 얻는 것은 계산 비용이 가치가 있습니다.
Dikran Marsupial

2
@DikranMarsupial. 나는 당신의 대답에서 세 번째 단락을 얻지 못했습니다. 중첩 교차 검증을 수행하는 경우 외부 CV 의 각 겹마다 서로 다른 하이퍼 파라미터 세트를 얻게됩니다 (즉 , 매개 변수 그리드 에서 내부 CV 를 실행하여 하나의 하이퍼 파라미터 세트를 얻습니다 ). 그런 다음 최상의 하이퍼 파라미터 세트를 어떻게 선택합니까?
Amelio Vazquez-Reina

1
교차 검증은 본질적으로 방법 자체가 아니라 모델을 적합시키는 방법 의 성능을 추정하는 수단입니다 . 따라서 중첩 교차 검증을 수행하여 성능 추정치를 얻은 후 교차 검증 된 절차 (하이파 매개 변수 선택 포함)를 사용하여 전체 데이터 세트를 사용하여 최종 모델을 다시 빌드하십시오.
Dikran Marsupial

23

Max Kuhn의 caret패키지 (Classification and Regression Training)는 @ mark999의 대답에 덧붙여 부트 스트랩 교차 검증 또는 N- 폴드 CV 및 기타 체계를 기반으로 한 모델 선택을위한 R의 가장 포괄적 인 소스입니다.

rms패키지 의 위대함을 무시하지 말고 caretR에서 사용할 수있는 모든 학습 방법을 거의 맞출 수 있지만 방법으로 validate만 작동 rms합니다 (제 생각에).

caret패키지는 데이터를 사전 처리하고 널리 사용되는 모델을 맞추고 평가할 수있는 단일 인프라이므로 모든 방법에 사용하기 쉽고 많은 성능 측정에 대한 그래픽 평가를 제공합니다. 잘) 그리드와 변수의 중요성.

시작하려면 패키지 비 네트를 참조하십시오 (사용하기 매우 간단합니다) 캐럿 을 사용한
데이터 전처리
변수 선택
캐럿 변수 중요도가있는 모델 작성

패키지 및 특정 구현 예에 대한 자세한 내용은 캐럿 웹 사이트를 볼 수도 있습니다.
공식 캐럿 웹 사이트


감사. 모델 선택 후 (을 호출하여 수행 한 후 train) 전체 데이터 세트를 학습 할 수있는 방법 이 있는지 알고 있습니까?
Amelio Vazquez-Reina

그것이 좋은 아이디어인지 또는 왜 당신이 그것을 원하는지 확실하지 않지만 기차로 반환 된 최종 모델을 전체 데이터 세트에 맞출 수 있습니다.
Momo

16

Frank Harrell은 교차 검증보다는 부트 스트랩 검증을 권장한다고 생각합니다. 부트 스트랩 유효성 검사를 통해 전체 데이터 세트에 맞는 모델의 유효성을 검사 할 수 있으며 교차 유효성 검사보다 안정적입니다. validateHarrell의 rms패키지를 사용하여 R에서 할 수 있습니다 .

자세한 내용은 Harrell의 "회귀 모델링 전략"및 / 또는 Efron 및 Tibshirani의 "부트 스트랩 소개"책을 참조하십시오.


9
"나쁜 CV"에 대한 다음 신화를 생략하기 위해 이것은 용어 문제입니다. Harrell의 "교차 유효성 검사"는 N- 폴드 CV를 의미하고 "부트 스트랩 유효성 검사"는 CV를 리샘플링하는 것을 의미합니다. 분명히 나는이 두 번째 맛이 더 안정적이고 전반적으로 더 훌륭하다는 것에 동의하지만 이것은 또한 교차 검증의 한 유형입니다.

1
mark999 또는 @mbq, 부트 스트랩을 사용하여 전체 데이터 세트에 맞는 모델의 유효성을 검증하는 방법에 대해 자세히 설명 하시겠습니까?
Amelio Vazquez-Reina 2019

1
글쎄, 원칙적으로 nohow; 교차 검증의 기본 개념은 주어진 교육 방법 이 최종 모델과 매우 유사한 세트에서 우수한 모델을 안정적으로 만드는지 테스트 하고, 그렇다면이 관측을 전체 세트로 일반화하여 이상한 일이 발생하지 않는다는 것입니다. 그리고 당신이 사용한 CV 방법은 어떻게 든 편향되지 않습니다. 이것은 물론 거의 항상 충분하지만 여전히 모든 데이터에 기반한 모델이 과적 합되지 않았 음을 확신 할 수는 없습니다.

14

여기에 다른 질문이 많이 있다고 생각합니다.

문제는 훈련을 위해 데이터 세트의 모든 포인트를 사용하면이 새로운 학습 모델 βfull overfits를 확인할 수 없다는 것입니다!

문제는 매개 변수 최적화, (x) 또는 일반화 성능 추정 중 하나에 대해서만 하나의 유효성 검사 단계를 사용할 수 있다는 것입니다.

따라서 교차 유효성 검사 (또는 다른 종류의 데이터 기반 매개 변수 결정)를 통해 매개 변수 최적화를 수행하는 경우 해당 교육 및 최적화 샘플과 독립적 인 테스트 샘플이 필요합니다. Dikran은이를 중첩 교차 검증이라고하며 다른 이름은 이중 교차 검증입니다. 또는 물론 독립적 인 테스트 세트.

이 게시물에 대한 질문은 다음과 같습니다. k- 겹 교차 검증 후 전체 데이터 세트로 학습하는 것이 좋은 생각입니까? 아니면 αbest에 대한 교차 검증 분할 중 하나에서 배운 모델 중 하나를 고수하는 것이 더 낫습니까?

교차 검증 모델 중 하나를 사용하는 것이 일반적으로 전체 세트에 대한 훈련보다 더 나쁩니다 (적어도 학습 곡선 성능 = f (n 샘플)가 계속 증가하는 경우). 실제로 다음과 같습니다. 그렇지 않은 경우 아마도 설정했을 것입니다 독립적 인 테스트 세트 제외)

동일한 매개 변수를 사용하여 교차 유효성 검증 모델간에 큰 차이가있는 경우 모델이 불안정합니다. 이 경우, 모델을 집계하는 데 도움이 실제로 사용하는 것보다 더 좋을 수 있습니다 하나 개의 전체 데이터에 대한 교육 모델을.

업데이트 : 이 집계는 대체를 통해 리샘플링하는 대신 (부트 스트랩 / 부트 밖 부트 검증) 대신 교체하지 않고 리샘플링 (교차 유효성 검사)에 적용되는 배깅 에 대한 아이디어 입니다.

다음은이 기술을 사용한 논문입니다 :
Beleites, C. & Salzer, R .: 작은 샘플 크기 상황에서 화학량 모델의 ​​안정성 평가 및 개선, Anal Bioanal Chem, 390, 1261-1271 (2008).
DOI : 10.1007 / s00216-007-1818-6

아마도 가장 중요한 것은 데이터 세트의 모든 포인트로 어떻게 훈련하고 과적 합에 맞서 싸울 수 있습니까?

"최상의"모델에 허용 된 자유도를 매우 보수적으로 유지함으로써, 즉 최적화 교차 검증 결과에 대한 (임의의) 불확실성을 고려함으로써. df가 실제로 교차 검증 모델에 적합하다면, 더 큰 훈련 세트에 비해 너무 많지 않을 가능성이 높습니다 . 함정은 매개 변수 최적화가 실제로 다중 테스트라는 것입니다. 실수로 잘 보이는 매개 변수 세트로부터 보호해야합니다.


...If you observe a large variation between the cross validation models (with the same parameters), then your models are unstable. In that case, aggregating the models can help...좀 더 설명해 주시겠습니까? 예를 들어, 10k 교차 검증 된 설정에서 로지스틱 회귀 분석을 실행하고 10 개의 계수로 끝나는 경우 coeff 추정값을 집계하여 최종 모델을 구성하는 것이 좋습니다. 그렇다면 어떻게 할 수 있습니까?
Zhubarb

@cbeleites 당신은 정교하게 할 수 있습니다 If the d.f. are actually appropriate for the cross validation models. 내 이해에서 기차 / 유효성 검사 세트가 완전한 데이터 세트와 비교할 때 그리 크지 않다고 주장하고 있습니다. 맞습니까?
jpcgandre

1
@jpcgandre : 추가 사용을 위해 대리 모델 중 하나를 선택하는 것은 실제로 데이터 중심 모델 선택입니다. 즉, 외부 독립 레벨의 검증이 필요합니다. 그리고 일반적으로 사례가 충분하지 않으면 전체 표본 크기의 테스트를 기반으로 통계적으로 유의미한 모델 비교를 수행 할 수 없다면 IMHO를 선택해서는 안됩니다. 1k
cbeleites

1
더욱 중요한 것은 반복 교차 검증 대리 모델이 동일한 하이퍼 파라미터 세트를 공유한다는 것입니다. 즉, 중요하다고 생각되는 모든 것에서 임의의 훈련 및 테스트 사례를 선택합니다. 따라서 "좋은"모델을 선택하는 것은 기본적으로 우리가 일반적으로 원하지 않는 좋은 테스트 / 트레이닝 세트 조합을 우선적으로 선택해야합니다 . 이 관점에서 볼 때 "정상"교차 검증에서 대리 모델을 선택하는 것은 의미가 없습니다.
cbeleites

1
@jpcgandre : (df) 데이터 세트의 에 대해 훈련하기에 적합한 모델 복잡성을 선택한다고 주장합니다. 전체 데이터 세트에 대한 훈련을 위해 약간 제한적인 모델에 대한 편견에 도달합니다. 그러나 이것이 실제로 중요하다고 생각하지는 않습니다. 내 분야에서 내 인상이 더 커질수록 우리는 오히려 너무 복잡한 모델에 실수하는 경향이 있습니다. 11k
cbeleites

6

당신이하는 일은 교차 유효성 검사가 아니라 확률 적 최적화의 일종입니다.

CV의 개념은 오브젝트의 서브 세트에서 모델을 빌드하고 나머지 오브젝트를 테스트하여 보이지 않는 데이터의 성능을 시뮬레이션하는 것입니다. 모든 라운드에서 다소 평균적인 결과 는 전체 세트에서 훈련 된 모델의 성능 근사치입니다 .

모델 선택의 경우 각 매개 변수 세트에 대해 전체 CV를 수행해야하므로 각 설정에 대해 전체 설정 성능 근사값을 얻어야합니다.

그러나 근사치 정확도가 가장 좋은 모델이 실제로 최고라는 보장은 없습니다. 모형 공간에 차이가있는 일부 범위가 있는지 확인하기 위해 전체 모델 선택 절차를 교차 검증 할 수 있습니다. 모델 정확도는 중요하지 않습니다.


2
@ mbq에게 감사하지만, 나는 확실하지 않습니다. 내가 hyperparameter 공간에서 내 그리드 검색의 각 지점의 값을 N 배 교차 유효성 검사를. N- 폴드의 평균 결과는 내가 언급 한 근사치를 제공합니다. 검증 세트에 가장 적합한 모델을 선택하여 모델을 비교하고 모델을 선택하는 데 사용합니다. 내 질문은 전체 데이터 세트로 훈련 할 때 어떤 일이 발생하는지에 관한 것입니다. 학습 된 모델 변경 (학습 된 모델 변경의 매개 변수)이 있다고 생각하며 원칙적으로 과적 합으로 고통 받는지 알 방법이 없습니다. β
Amelio Vazquez-Reina 2016 년

@AmV 그렇다면, 필자가 작성한 것처럼 CV는 이미 전체 세트 시나리오를 테스트하므로 새로운 데이터가 없으면 더 이상 말할 수 없습니다. 다시 말하지만, 중첩 된 CV를 수행하여 모델 선택 자체에 의해 부과 된 과적 합이 없는지 확인할 수 있습니다 (선택이 매우 개선되었거나 데이터에 시끄러운 경우이 위험이 매우 큽니다).
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.