K- 폴드 교차 검증에서 K의 선택


136

일부 학습 알고리즘의 성능을 평가하기 위해 폴드 교차 검증을 몇 번 사용했지만 항상 값을 선택하는 방법에 대해 의아해했습니다 .KKK

나는 종종 값을 보았고 사용 했지만 이것은 완전히 임의적 인 것처럼 보이며 이제는 생각하지 않고 습관으로 을 사용 합니다. 나에게 의 가치를 높이면 더 세분화 된 것처럼 보이므로 이상적으로는 크게 해야 하지만 편향의 위험이 있습니다.10 K KK=1010KK

의 가치가 무엇인지, 알고리즘을 평가할 때 어떻게 생각해야하는지 알고 싶습니다. 계층화 된 교차 검증 버전을 사용하면 변경됩니까 ?K


답변:


69

의 선택 은 다소 임의적입니다. 결정하는 방법은 다음과 같습니다 .Kk=10k

  • 우선, CV 결과의 분산을 낮추기 위해 새로운 랜덤 스플릿으로 CV를 반복 / 반복해야합니다. 어쨌든 많은 모델을 계산하고 싶기
    때문에 높은 => 더 많은 계산 시간에 대한 계산 시간이 크게 관련이 없습니다. 나는 주로 부트 스트래핑과 유사하게 계산 된 총 모델 수를 생각하는 경향이 있습니다. 따라서 100 x 10 배 CV 또는 200 x 5 배 CV를 결정할 수 있습니다.k

  • @ogrisel은 이미 일반적으로 큰 는 (비관적) 편향을 의미한다고 설명했다 . (일부 예외는 대해 특히 알려져 있습니다 . 즉, leave-one-out).k = nkk=n

  • 가능하다면 표본 크기의 제수 또는 계층화해야 할 표본의 그룹 크기 인 를 사용합니다 .k

  • 너무 크면 적은 수의 샘플 조합 만 가능하므로 다른 반복 횟수가 제한됩니다.k

    • Leave-one-out의 경우 : 다른 모델 / 테스트 샘플 조합이 가능합니다. 반복은 전혀 의미가 없습니다.(n1)=n=k
    • 예 : 및 : 서로 다른 모델 / 테스트 샘플 조합이 존재합니다. 폴드 CV 의 19 회 반복 또는 총 190 개의 모델이 그리 많지 않으므로 가능한 모든 조합을 수행하는 것을 고려할 수 있습니다 .n=20k=10(n=202)=190=19kk
  • 이러한 생각은 표본 크기가 작을수록 무게가 더 큽니다. 더 많은 샘플을 사용할 수 있으면 는별로 중요하지 않습니다. 가능한 조합 수는 곧 충분히 커져서 10 배 CV의 100 회 반복이 중복 될 위험이 크지 않습니다. 또한 더 많은 학습 샘플은 일반적으로 학습 곡선의 평평한 부분에 있다는 것을 의미하므로 대리 모델과 모든 샘플 에 대해 학습 된 "실제"모델의 차이 는 무시할 수 있습니다.kn


6
정교함은 (+1)이지만 CV의 반복 횟수는 (-1)입니다. 정확한 복제본 을 생성 할 가능성 (관찰의 id를 보는)은 작지만 (데이터가 충분히 주어짐) 패턴 / 데이터 구조 복제본 을 생성 할 위험 은 매우 높습니다. 나는 k가 무엇이든간에 CV를 10 번 이상 반복하지 않을 것입니다 ... 분산의 과소 평가를 피하기 위해.
steffen

3
@steffen, ogrisel이 이미 지적한 것이 아닌가? (서로 게이트) 모델이 실제로 독립적이지 않다는 것입니까? 나는 이것이 사실임을 전적으로 동의한다. 실제로, 나는 (대리) 모델 wrt의 안정성 측면에서 결과를 해석하여 이것을 고려하려고합니다. "몇 가지"샘플 교환 (여기서 자세히 설명하고 싶지 않지만 stats.stackexchange.com/a/26548/4598 참조 ). 그리고 표준 오류를 계산 하지 않고 반복에서 관찰 된 오류의 중간 및 ~ 백분위 수를보고합니다. 나는 그것에 대해 별도의 질문을 게시 할 것입니다. 5th95th
cbeleites

2
내가 참조. 대리의 안정성을 평가하는 데이 방법이 유효하다는 데 동의합니다. 내가 생각했던 것은 한 모델이 다른 모델보다 우수한지 여부를 결정하기위한 후속 통계 테스트였습니다. cv 방식을 너무 자주 반복하면 예기치 않은 알파 오류 가능성이 높아집니다. 그래서 나는 dikran이 여기에 넣은 것처럼 내부를 외부 검증과 혼동하고있었습니다 .
steffen

2
@cbeleites : 동의합니다. 제한된 표본 크기로 인한 편차는 일반적으로 모형 불확실성보다 우세합니다.
jpcgandre

2
@jpcgandre : 감도, 특이성 등의 분류 오류의 경우 테스트 된 총 사례 수로 인한 불확실성을 계산할 수 있습니다. 이것이 제가 전체 작업에서 발생하는 상황에서 전체 분산의 일부일 뿐이라는 것은 사실이지만,이 불확실성은 종종 너무 커서 추측조차도 결론이 심각하게 제한되어 있음을 분명히하기에 충분합니다. 이 제한은 그대로 유지되며 40x 10 배 교차 검증 대신 50x 8 배 또는 80x 5 배를 사용하더라도 사라지지 않습니다.
cbeleites

37

K가 클수록 실제 예상 오차를 과대 평가하는 편향이 줄어든다는 것을 의미합니다 (트레이닝 횟수가 총 데이터 세트에 가까워 질 것임).

학습 곡선의 기울기가 training_size = 전체 데이터 집합의 90 %에서 충분히 평평한 경우 바이어스를 무시할 수 있으며 K = 10이 합리적입니다.

또한 K가 높을수록 추정에 대해보다 정확한 신뢰 구간을 추정 할 수있는 더 많은 표본을 제공합니다 (CV 테스트 오류 분포의 정규성을 가정하는 매개 변수 표준 오류 또는 실제로는 사실이 아닌 iid 가정을하는 비모수 부트 스트랩 CI 사용) CV 접기는 서로 독립적이지 않기 때문에).

편집 : 과소 평가 => 실제 예상 오차 과대 평가

편집 : 큰 K 또는 LOOCV에 대한 높은 분산에 대한이 회신의 일부가 잘못되었을 수 있습니다 (항상 사실은 아닙니다). 이 답변의 시뮬레이션에 대한 자세한 내용 : leave-one-out 대 K- 폴드 교차 검증의 편차 및 편차 (이 작업에 대한 Xavier Bourret Sicotte 덕분).


1
가 큰 분산에 대해 좀 더 설명해 주 시겠습니까? 첫 번째 근사로 CV 결과의 총 분산 (= 대리 모델 중 하나에 의해 테스트 된 모든 샘플 에서 계산 된 일종의 오류 ) = 샘플 만 테스트 로 인한 분산 + 사이의 차이로 인한 분산 모델 (불안정). 내가 무엇을 놓치고 있습니까? knknk
cbeleites

6
분산에 의한 I는 CV 접기가 아닌 "진정한 분포"를 통해 CV 접기 오류의 중앙값 또는 평균을 취하여 얻은 예상 예상 테스트 오류의 분산을 의미합니다. k가 크면 LOO-CV에 더 가깝습니다. 이는 LOO-CV에 가깝습니다. 이는 여러분이 보유하고있는 특정 훈련 세트에 매우 의존합니다. 샘플 수가 적 으면 실제 분포를 나타내지 않으므로 분산을 나타낼 수 없습니다. k가 크면 k- 폴드 CV는 훈련 세트의 임의의 단단한 샘플을 시뮬레이션 할 수 있습니다.
ogrisel

8
덧붙여서 : Kohavi는 그의 박사 학위 논문 3 장에서 검증의 바이어스-분산 -tradeoff를 연구합니다 . 나는 그것을 강력히 추천합니다.
steffen

3
+1, btw "큰 K는 높은 분산"을 의미합니다. 큰 하면 모든 훈련 세트에 공통된 데이터가 많이 있으므로 훈련 된 모델은 다소 상관 관계가 있으므로 관련 테스트 오류가 발생합니다 . 테스트 오류의 평균이 더 높은 분산을 갖습니다. KKKK
아보카도

예, 이것이 올바른 직감이라고 생각합니다.
ogrisel

0

K정확성과 일반화에 어떤 영향을 미치는지 모르겠지만 학습 알고리즘에 따라 달라질 수 있지만 학습 인스턴스 수에서 선형 적으로 알고리즘 복잡성이있는 알고리즘의 경우 거의 선형 적으로 (무증상, 선형으로) 계산 복잡성에 영향을 미칩니다. K-1훈련 시간이 훈련 인스턴스의 수에서 선형이면 훈련을위한 계산 시간은 시간을 증가시킨다 . 소규모 훈련 세트의 경우 특히 제한된 수의 훈련 인스턴스를 최대한 활용해야한다는 점을 감안할 때 정확성 및 일반화 측면을 고려할 것입니다.

그러나 훈련 인스턴스 수 (적어도 선형 적)에서 K=2비 점증 적 전산 복잡성이 증가하는 대규모 훈련 세트 및 학습 알고리즘의 경우, 난수에 선형 으로 점근 적 복잡성이있는 훈련 알고리즘의 계산 시간이 증가하지 않도록 선택 합니다. 훈련 인스턴스.


-6

해결책:

K = N/N*0.30
  • N = 데이터 세트 크기
  • K = 접기

의견 : 테스트 세트로 선택하려는 크기에 따라 30 % 대신 20 %를 선택할 수도 있습니다.

예:

데이터 세트 크기 인 경우 : N = 1500; K = 1500 / 1500 * 0.30 = 3.33; K 값을 3 또는 4로 선택할 수 있습니다

노트 :

교차 검증을 1 회 남겨두면 K 값이 크면 과적 합이 발생합니다. 교차 검증을 1 회 남겨두면 K 값이 작을수록 피팅이 부족합니다.

접근 방식은 순진하지만 크기가 다른 데이터 세트에 대해 k = 10을 선택하는 것보다 여전히 낫습니다.


4
(-1)따라서 샘플 크기에 관계없이 항상 k = 3 또는 4를 사용하는 것이 좋습니다. 이는 샘플 크기에 상관없이 k = 10을 똑같이 사용하는 것과 크게 다르지 않습니다. NN0.3=10.33.33=const.
cbeleites

K = N / N * 0.3 = 10 / 3 상수입니다. 따라서 모든 조건에 대해 해당 값을 사용하는 것이 논리적이지 않습니다.
Kamal Thapa
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.