k- 겹 교차 검증 후 예측 모델을 선택하는 방법은 무엇입니까?


148

K- 폴드 교차 검증을 수행 한 후 예측 모델을 선택하는 방법이 궁금합니다.

이것은 어색하게 표현 될 수 있으므로 K- 폴드 크로스 밸리데이션을 실행할 때마다 K 서브셋의 훈련 데이터를 사용하고 K 개의 다른 모델로 끝납니다.

K 모델 중 하나를 선택하는 방법을 알고 싶습니다.이를 누군가에게 제시하고 "이 모델은 우리가 생산할 수있는 최고의 모델입니다."

K 모델 중 하나를 선택해도 괜찮습니까? 아니면 중간 테스트 오류를 ​​달성하는 모델을 선택하는 것과 같은 모범 사례가 있습니까?


2
다음 질문에 대한 답변이 도움이 될 것입니다. stats.stackexchange.com/questions/2306/…
BGreene

충분한 정밀도를 얻으려면 5 배 CV를 100 번 반복하고 결과를 평균화해야합니다. 그리고 @bogdanovist의 대답은 바로 자리 잡고 있습니다. 더 적은 모델 맞춤으로 부트 스트랩에서 동일한 정확도의 정확도를 얻을 수 있습니다.
Frank Harrell

@ 프랭크 하렐 (Frank Harrell), 왜 100 번의 반복이 필요하다고 말합니까 (보통 10 배에 10 회 반복 사용).
BGreene

2
10 배 cv의 경우 반복 을 수행하는 것이 가장 좋습니다 . 5 배로 더 많은 반복이 필요합니다. 이것들은 경험 법칙입니다. 하나의 10 배 cv는 불안정한 대답을합니다. 즉, 10 개의 분할을 반복하면 걱정할만한 다른 대답을 얻을 수 있습니다. 50
Frank Harrell

거의 정확한 복제 : stats.stackexchange.com/questions/11602 유용한 답변이 많이 있습니다. 아마도이 스레드는 병합되어야하지만 어느 방향으로 확실하지 않습니다. 둘 다 아주 좋은 답변을 받아 들였습니다. 그러나 다른 하나는 더 오래되었고 더 많은 뷰 / 찬송가를 가지고 있기 때문에이 것을 하나로 병합하는 것이 합리적입니다.
amoeba

답변:


200

교차 유효성 검사의 목적을 이해하는 데 여전히 무언가가 빠져 있다고 생각합니다.

일반적으로 '모델'이라고 할 때 몇 가지 용어를 똑바로 살펴 보겠습니다. 입력 데이터가 예측하려는 내용과 어떤 관련이 있는지 설명하는 특정 방법을 말합니다. 우리는 일반적으로 해당 방법의 특정 인스턴스를 다른 모델로 언급하지 않습니다. 따라서 '선형 회귀 모형이 있습니다'라고 말할 수도 있지만 훈련 된 계수의 두 가지 세트를 다른 모델이라고 부르지는 않습니다. 적어도 모델 선택의 맥락에서는 그렇지 않습니다.

따라서 K- 폴드 교차 검증을 수행하면 모델이 일부 데이터에 의해 얼마나 잘 훈련되는지 확인한 후 보이지 않는 데이터를 예측할 수 있습니다. 보유한 모든 데이터를 사용하여 교육하면 테스트를 위해 남은 것이 없기 때문에 교차 유효성 검사를 사용합니다. 훈련을 위해 데이터의 80 %를 사용하고 테스트를 위해 20 %를 사용하여이 작업을 한 번 수행 할 수 있지만 테스트하기 위해 선택한 20 %가 특히 쉬운 (또는 특히 어려운) 포인트를 포함하는 경우 예측하기? 우리는 학습하고 예측할 수있는 모델 능력에 대한 최상의 추정치를 제시하지 않을 것입니다.

모든 데이터를 사용하고 싶습니다. 따라서 80/20 분할의 위의 예를 계속하려면 데이터의 80 %에서 모델을 5 회 훈련하고 20 %에서 테스트하여 5 배 교차 검증을 수행합니다. 각 데이터 포인트가 20 % 테스트 세트에서 정확히 한 번만 끝나도록합니다. 따라서 우리는 모델이 일부 데이터에서 학습하고 새로운 데이터를 예측하는 작업을 얼마나 잘 수행하는지 이해하는 데 기여해야하는 모든 데이터 포인트를 사용했습니다.

그러나 교차 검증의 목적은 최종 모델을 만들어내는 것이 아닙니다. 훈련 된 모델의이 5 가지 인스턴스를 사용하여 실제 예측을 수행하지 않습니다. 이를 위해 우리는 가능한 최고의 모델을 생각해 내야하는 모든 데이터를 사용하려고합니다. 교차 유효성 검사의 목적은 모델 작성이 아니라 모델 확인입니다.

이제 선형 회귀 모델과 신경망이라는 두 가지 모델이 있다고 가정하겠습니다. 어떤 모델이 더 좋은지 어떻게 알 수 있습니까? 우리는 K- 폴드 교차 검증을 수행 할 수 있으며 테스트 셋 포인트를 예측하는 데 어느 것이 더 나은지 확인할 수 있습니다. 그러나 교차 검증을 사용하여 더 나은 성능의 모델을 선택하면 모든 데이터에서 해당 모델 (선형 회귀 또는 신경망인지 여부)을 학습합니다. 우리는 최종 예측 모델에 대해 교차 검증 중에 훈련 한 실제 모델 인스턴스를 사용하지 않습니다.

교차 검증과 유사한 방식으로 생성 된 모델 인스턴스를 사용하여 앙상블 모델을 구축하는 부트 스트랩 집계 (보통 '포깅'으로 단축)라는 기술이 있지만 범위를 넘어서는 고급 기술입니다. 당신의 질문의 여기에.


8
나는이 점에 전적으로 동의하며 모든 데이터 사용에 대해 생각했습니다. 즉, 전체 데이터 세트를 사용하여 최종 모델을 학습하면 결과가 과적 합하여 미래 예측을 방해하지 않습니까?
Berk U.

19
아니! 과적 합은 모델의 복잡성과 관련이 있으며 모델을 훈련시키는 데 사용되는 데이터의 양과는 관련이 없습니다. 모델의 복잡성은 모델이 사용하는 방법과 관련이 있으며 매개 변수의 값이 아닙니다. 예를 들어 회귀 모델에 x ^ 2 계수와 x 계수를 포함 시킬지 여부입니다.
Bogdanovist 2016 년

17
@Bogdanovist : 차라리 지나치게 복잡한 것은 너무 복잡한 모델에 대한 훈련 사례가 너무 적은 것과 관련이 있다고 말합니다. 따라서 그것은 또한 많은 훈련 사례와 관련이 있습니다. 그러나 더 많은 교육 사례가 있으면 초과 모델의 위험이 줄어 듭니다 (일관된 모델 복잡성).
cbeleites

3
@Bogdanovist For that we want to use all the data we have to come up with the best model possible.-K- 폴드 교차 검증으로 그리드 검색을 수행 할 때 그리드 검색에서 찾은 최고의 매개 변수를 사용하고 전체 교육 데이터에 모델을 적합시킨 다음 테스트 세트를 사용하여 일반화 성능을 평가한다는 의미입니까?
arun

4
@arun, k- 폴드 교차 검증을 사용하고 최상의 파라미터 및 하이퍼 파라미터가있는 최상의 모델을 선택한 경우 훈련 세트에 최종 모델을 맞추고 나면 다시 사용하여 성능을 확인할 필요가 없습니다. 테스트 세트. 지정된 매개 변수가있는 모델이 보이지 않는 데이터에 대해 어떻게 동작하는지 이미 확인했기 때문입니다.
Sandeep S. Sandhu

29

Bogdanovist의 답변 외에도 몇 가지 사항을 알려 드리겠습니다.

당신이 말했듯이, 당신은 다른 모델 을 훈련 시킵니다. 훈련 데이터의 1 / (k-1) 번째가 다른 경우와 교환된다는 점에서 다릅니다. 이러한 모델에 대해 측정 된 (평균) 성능이 모든 경우에 대해 훈련 된 모델의 성능을 대체하기 때문에 이러한 모델을 대리 모델 이라고도 합니다 .k

이제이 과정에서 몇 가지 가정이 있습니다.

  • 가정 1 : 서로 게이트 모델은 "전체 데이터"모델과 같습니다.
    이러한 가정이 무너지는 것이 일반적이며, 증상은 폴드 교차 검증 (또는 다른 리샘플링 기반 검증 체계) 의 잘 알려진 비관적 편향입니다 . 학습 곡선이 여전히 양의 기울기를 갖는 경우 대리 모델의 성능은 "전체 데이터"모델의 성능보다 평균적으로 더 나쁩니다 (즉, 훈련 샘플이 적을수록 모델이 더 나빠집니다).k

  • 가정 2는 가정 1의 약한 버전입니다. 대리 모델이 전체 데이터 모델보다 평균적으로 더 나쁜 경우에도 서로 동등한 것으로 가정합니다. 이를 통해 대리 모델 의 테스트 결과를 하나의 평균 성능으로 요약 할 수 있습니다 . 모델 불안정성은이 가정을 세분화합니다 : 훈련 사례에 훈련 된 모델의 실제 성능은 매우 다양합니다. 폴드 교차 검증 ( 서브 세트 에 대한 새로운 무작위 할당) 의 반복 / 반복을 수행 하고 동일한 경우에 서로 다른 대리 모델의 예측 간의 분산 (임의 차이)을 확인 하여이를 측정 할 수 있습니다 .N k - 1k
    kkNk1kkk

  • 유한 한 사례 수는 유한 한 테스트 사례로 인해 성능 측정에 임의 오류 (변이)가 발생 함을 의미합니다. 이 분산의 원인은 모델 불확실성 분산과 다릅니다 (따라서 추가).

관찰 된 성능의 차이는이 두 가지 변동 원인에 기인합니다.

당신이 생각하는 "선택"은 데이터 세트 선택입니다. 대리 모델 중 하나를 선택한다는 것은 훈련 샘플의 서브 세트를 선택하고이 훈련 샘플의 서브 세트가 우수한 모델로 이어진다 고 주장하는 것을 의미합니다. 이것이 사실 일 수도 있지만, 일반적으로 "우월성"은 가짜입니다. 어쨌든 대리 모델 중 "최상의"를 선택하는 것이 데이터 중심 최적화이므로,이 알 수없는 새로운 데이터로이 선택된 모델의 유효성을 검사 (성능 측정)해야합니다. 이 교차 검증 내 테스트 세트는 서로 게이트 모델을 선택하는 데 사용 되었기 때문에 독립적이지 않습니다.

당신은 우리의 논문을보고 싶을 것입니다. 그것은 회귀보다 보통 상황이 더 나쁜 분류에 관한 것입니다. 그러나 이러한 분산 및 바이어스 소스가 어떻게 추가되는지 보여줍니다.
Beleites, C. 및 Neugebauer, U. 및 Bocklitz, T. 및 Krafft, C. 및 Popp, J .: 분류 모델의 표본 크기 계획. Anal Chim Acta, 2013, 760, 25-33.
DOI : 10.1016 / j.aca.2012.11.007
arXiv에 허용되는 원고 : 1211.1323


당신이 말할 때와 Bogdanovist는 의견에 picking "the best" of the surrogate models is a data-driven optimization, you'd need to validate (measure performance) this picked model with new unknown data. The test set within this cross validation is not independent as it was used to select the surrogate model.그는 말한다 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.이것은 매우 일반적이며 표준화 된 접근 방식을 지정하는 것이 중요합니다
jpcgandre

특히 CV에서 데이터를 제거 할 수없는 소규모 데이터 세트의 경우 실행 가능성이 높지 않지만 모델을 과적 합할 위험이 높습니다! 이 문제를 명확히하기 위해서는 참고 문헌이 필요합니다.
jpcgandre

5
@ jpcgandre : 의견이 일치하지 않습니다. Bogdanovist는 교차 검증을 통해 선택된 하이퍼 파라미터에서 선택한 모델을 실제로 계산하는 방법을 설명하며, 이러한 선택 후에는 모델이 다른 (외부) 독립적 인 검증 레벨을 거쳐야한다고 덧붙였습니다. 즉, 중첩 검증 설계 : 하이퍼 파라미터 선택을위한 내부 검증 루프, 선택된 모델을 테스트하기위한 외부 루프 (충분한 사례가있는 경우 독립적 인 테스트 세트를 사용할 수도 있음).
cbeleites

5
내부 / 외부 유효성 검사 설정은 이중 또는 중첩 교차 유효성 검사로 알려진 교차 유효성 검사를위한 것으로 교차 모델 유효성 검사 ( dx.doi.org/10.1016/j.chemolab.2006.04.021 ) 라고도 합니다. 독립적 인 테스트 세트를 사용하면 train / (최적화) 유효성 검사 / 테스트 (= 최종 유효성 검사)의 세 세트로 분할됩니다. 두 번째 레벨 CV에 대한 데이터를 제거 할 수없는 경우가 거의없는 경우 하이퍼 파라미터 세트 중 하나를 선택하여 최적화하지 않고 다른 방법으로 하이퍼 파라미터를 수정해야한다고 주장합니다.
cbeleites

@cbeleites 질문이 있습니다. 그런 다음 최종 모델 매개 변수를 얻으려면 각 외부 접기에서 하이퍼 파라미터의 평균을 가져 와서 해당 평균 하이퍼 파라미터를 사용하여 전체 데이터 세트를 다시 학습 하시겠습니까? 또는 일반 CV에서 하이퍼 파라미터 검색을 수행 한 다음 반복 중첩 된 CV를 사용하여이 방법의 안정성을 확인하는 것도 효과가 있습니까?
Michelle

11

이 우수한 기사 최종 기계 학습 모델을 훈련하는 방법 은 기계 학습에서 CV 사용에 관한 모든 혼란을 해결하는 데 매우 도움이됩니다.

기본적으로 CV (예 : 80/20 스플릿, k- 폴드 등)를 사용하여 데이터 엔지니어링, 모델 선택 (예 : 알고리즘 선택) 및 하이퍼 파라미터 등 전체 절차 (예 : 보이지 않는 미래)의 성능을 추정합니다. 데이터. 그리고 성공적인 "절차"를 선택하면 CV의 적합 모델이 목적에 부합하여 이제 폐기 할 수 있습니다. 그런 다음 동일한 승리 "프로 시저"를 사용하고 전체 데이터 세트를 사용하여 최종 모델을 훈련시킵니다.


1

매우 흥미로운 질문입니다. 모델과 모델 평가의 차이점을 분명히 이해해야합니다. 전체 교육 세트를 사용하여 모델을 빌드하면이 모델이 최종적으로 사용될 것으로 예상됩니다.

K 폴드 크로스 평가는 K 모델을 만들지 만 모두 삭제됩니다. K 모델은 평가 용으로 만 사용됩니다. 방금이 모델이 데이터에 얼마나 적합한 지 알려주는 메트릭을 생성했습니다.

예를 들어, LinearRegression algo를 선택하고 동일한 트레이닝 세트에서 두 가지 작업을 수행합니다. 하나는 10 배 교차 검증이고 다른 하나는 20 배입니다. 회귀 (또는 분류기) 모형은 같아야하지만 상관 계수와 근사 제곱 오차는 다릅니다.

다음은 weka를 사용한 10 배 및 20 배 교차 검증을위한 두 가지 실행입니다.

10 회 1 차 런

=== Run information ===
Test mode:    10-fold cross-validation
...
=== Classifier model (full training set) ===


Linear Regression Model  <---- This model is the same

Date = 844769960.1903 * passenger_numbers -711510446549.7296

Time taken to build model: 0 seconds

=== Cross-validation ===  <---- Hereafter produced different metrics
=== Summary ===

Correlation coefficient                  0.9206
Mean absolute error                35151281151.9807
Root mean squared error            42707499176.2097
Relative absolute error                 37.0147 %
Root relative squared error             38.9596 %
Total Number of Instances              144     

20 배 2 차 런

=== Run information ===
...
Test mode:    20-fold cross-validation

=== Classifier model (full training set) ===


Linear Regression Model   <---- This model is the same

Date = 844769960.1903 * passenger_numbers -711510446549.7296

Time taken to build model: 0 seconds

=== Cross-validation ===  <---- Hereafter produced different metrics
=== Summary ===

Correlation coefficient                  0.9203
Mean absolute error                35093728104.8746
Root mean squared error            42790545071.8199
Relative absolute error                 36.9394 %
Root relative squared error             39.0096 %
Total Number of Instances              144     

0

위의 논의가 완전히 올바른지 확신하지 못합니다. 교차 유효성 검사에서는 각 실행에 대해 데이터를 교육 및 테스트로 분할 할 수 있습니다. 훈련 데이터만을 사용하여, 모델을 맞추고 고려되는 각 모델 클래스에서 튜닝 파라미터를 선택해야합니다. 예를 들어, 신경망에서 튜닝 매개 변수는 뉴런의 수와 활성화 기능의 선택입니다. 이를 위해 훈련 데이터만으로 교차 유효성을 검사합니다 .

각 클래스에서 가장 적합한 모델을 찾으면 테스트 데이터를 사용하여 가장 적합한 모델을 평가합니다. "외부"교차 유효성 검사 루프를 사용하면 테스트 데이터 성능을보다 정확하게 평가하고 변동성을 추정 할 수 있습니다. 그런 다음 토론을 통해 Neural Nets와 SVM 등 다양한 클래스의 테스트 성능을 비교할 수 있습니다. 모델 크기가 고정 된 하나의 모델 클래스가 선택되었으며 이제 전체 데이터를 사용하여 최상의 모델을 학습합니다.

이제 머신 러닝 알고리즘의 일부로 매주 최고의 모델 클래스를 지속적으로 선택하려면이 선택조차 교육 데이터에서 평가해야합니다! 동적 데이터 옵션 인 경우 테스트 데이터 측정을 사용하여 모델 클래스 선택을 판단 할 수 없습니다.


0

k- 폴드 교차 검증을 사용하는 이유는 무엇입니까?

교차 유효성 검사는 보이지 않는 데이터에 대한 방법의 기술을 추정하는 방법입니다. 열차 테스트 분할을 사용하는 것과 같습니다.

교차 유효성 검사는 데이터 집합의 여러 하위 집합에서 여러 모델을 체계적으로 생성하고 평가합니다. 이는 차례로 성능 측정 집단을 제공합니다 .

  • 절차가 평균적 으로 얼마나 잘 수행되는지 알기 위해 이러한 측정 값의 평균을 계산할 수 있습니다 .
  • 절차의 기술이 실제로 얼마나 달라질 지에 대한 아이디어를 얻기 위해 이러한 측정의 표준 편차를 계산할 수 있습니다 .

또한 사용할 알고리즘 및 데이터 준비 절차를 선택할 때 한 절차를 다른 절차와 비교하여 미묘하게 비교하는 데 도움이됩니다.

또한 평균과 산포를 사용하여 실제로 머신 러닝 절차에서 예상되는 성능에 대한 신뢰 구간을 제공 할 수 있으므로이 정보는 매우 중요합니다.

참고

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.