스킬캠퍼스

오늘 끝나면

교차검증

  • 교차검증의 핵심 문제를 한 문장으로 설명한다
  • 오른쪽 실습에서 교차검증이 어떻게 움직이는지 관찰한다
  • 다음 강의와 이어지는 한계를 말할 수 있다

실습 미션

k-fold — 적은 데이터로 일반화 성능을 정직하게 이 문장이 실제로 무슨 뜻인지 실습에서 한 번 손으로 확인한다.

성공 조건

  • 실습의 기본값을 먼저 관찰
  • 입력값이나 모드를 한 번 이상 바꿔 결과 비교
  • 왜 결과가 바뀌었는지 한 문장으로 설명

통계 · 27

교차
검증

한 번 자른 검증 점수는 어디를 잘랐냐는 운에 좌우된다.
데이터를 k조각으로 나눠 돌아가며 검증한다.
k번 점수의 평균이 안정적인 성능 추정치다.

P.01통계 · 27

한 번 분할은 운에 좌우된다

데이터가 적을수록 한 번 잘라 만든 검증 점수는 믿기 어렵다.

26강에서 데이터를 훈련과 검증으로 한 번 나눴다.
그런데 어느 20%를 검증으로 떼느냐에 따라 점수가 출렁인다.
쉬운 표본이 검증으로 가면 점수가 높게, 어려운 표본이 가면 낮게 나온다.

즉 그 한 점수는 모델 실력과 분할 운이 섞인 값이다.
표본이 100개면 분할 운이 크게 흔들려서 추정이 불안정하다.

운을 줄이려면 한 번이 아니라 여러 번 갈라서 평균을 내야 한다.
그 방법이 교차검증이다.

같은 데이터라도 어디를 자르냐에 따라 점수가 흔들린다
같은 데이터 · 다른 한 번 분할
분할 A점수 91%
분할 B점수 78%
분할 C점수 84%
진한 칸이 검증이다. 어디를 떼느냐에 따라 78~91%로 출렁인다
P.02통계 · 27

k-fold은 k조각으로 돌아가며 검증한다

데이터를 k개의 같은 크기 조각(fold)으로 나눈다.

1라운드에는 1번 조각을 검증으로 쓰고 나머지 k−1조각으로 훈련한다.
2라운드에는 2번 조각을 검증으로 쓰고 나머지로 훈련한다.
이렇게 k라운드까지 검증 조각을 한 칸씩 옮긴다.

핵심은 모든 표본이 정확히 한 번씩 검증에 쓰인다는 점이다.
버려지는 데이터 없이 전부 검증을 한 번 거치고 훈련을 k−1번 거친다.

라운드마다 점수가 하나씩 나와서 점수 k개가 모인다.
k=5면 5번, k=10이면 10번 훈련하고 평가한다.

조각 하나씩 검증으로 쓰고 나머지로 훈련하기를 k번 반복한다
5-fold · 검증 조각이 한 칸씩 옮겨간다
R1
R2
R3
R4
R5
검증훈련

5조각을 5라운드 돌리면 모든 조각이 정확히 한 번 검증된다

4.8
P.03통계 · 27

k번 점수의 평균이 추정치

교차검증의 결과는 점수 하나가 아니라 점수 k개다.

이 k개 점수의 평균이 최종 성능 추정치다.
CV 점수 = (점수₁ + … + 점수ₖ) / k
한 번 분할의 점수보다 이 평균이 운에 덜 흔들린다.

점수들의 표준편차도 같이 본다. 편차가 크면 모델이 분할에 민감하다는 신호다.
k를 키우면 라운드가 늘고 막대들의 평균선이 자리를 잡는다.

라운드별 점수가 얼마나 흩어졌는지가 곧 한 번 분할이 떠안았던 운이다.

k조각으로 나눠 라운드마다 점수가 모이고 그 평균을 낸다
k-fold 교차검증 · 직접 돌려 본다
데이터 24개 → 5조각 / 라운드 0 / 5
검증훈련
라운드마다 검증 점수가 쌓인다 · 굵은 선 = 평균
평균 성능 추정
%
라운드 간 편차(±)
%p

1번째 라운드, 1번 조각을 검증으로, 나머지로 훈련 중이다.

조각 수 kk = 5
28

k를 키우면 라운드가 늘어 추정이 안정된다. 대신 훈련을 k번 해야 해 비용도 k배다.

P.04통계 · 27

안정적 추정의 대가는 비용 k배다

공짜는 아니다. k-fold은 모델을 k번 훈련한다.

한 번 분할은 훈련 1번, 5-fold은 훈련 5번, 10-fold은 훈련 10번이다.
그만큼 시간과 연산이 k배로 든다.

그래서 데이터와 모델 크기에 맞춰 k를 고른다.
보통 k=5 또는 k=10을 쓰는데, 안정성과 비용의 절충점이다.
데이터가 아주 적으면 k=N(LOOCV)까지 키우기도 하는데, 이때는 표본 하나만 검증으로 쓴다.

정리하면 k가 클수록 추정은 안정되지만 훈련 비용이 커진다.
k는 정확도가 아니라 추정의 안정성을 위해 돈을 더 쓰는 손잡이다.

층화 k-fold (펼치기)분류 문제에서 조각마다 클래스 비율이 들쭉날쭉하면 점수가 더 흔들린다.
그래서 각 조각의 클래스 비율을 원본과 같게 맞춰 나누는데, 이것이 층화(stratified) k-fold이다.
불균형 데이터에서 특히 추정이 더 안정되므로 분류에서는 기본으로 권장된다.
추정이 안정되는 만큼 훈련 횟수도 늘어난다
안정성이 오르면 훈련 횟수도 오른다
한 번 분할훈련 1
5-fold훈련 5
10-fold훈련 10

k가 클수록 추정은 안정되고 연산은 그만큼 k배로 늘어난다

P.05통계 · 27

정리하면 운을 평균으로 깎는다

교차검증은 한 번 분할의 운을 여러 번 평균 내서 깎는 방법이다.

k조각으로 나눠 돌아가며 검증과 훈련을 k번 하고, 점수 k개의 평균이 추정치가 된다.
모든 표본이 한 번씩 검증에 쓰이니 데이터를 알뜰히 쓴다.
대가는 훈련 k번, 곧 비용 k배다.

다음 강은 다중회귀다.
입력 변수가 하나가 아니라 여럿일 때 직선 대신 평면이나 초평면을 맞추는 회귀로 넘어간다.

Q. 교차검증을 쓰는 이유는?정답은 한 번 분할의 운을 줄여 일반화 성능을 안정적으로 추정하기 위해서다.
한 번만 자르면 어느 표본이 검증으로 가느냐에 점수가 좌우된다.
k조각으로 나눠 돌아가며 검증해 점수 k개를 평균 내면 분할 운이 상쇄돼 추정이 안정된다.
대신 훈련을 k번 해야 하므로 비용은 k배다.
한 번 분할과 k-fold 비교
한 번 분할 vs k-fold
한 번 분할k-fold
분할 횟수한 번k번
검증 운그대로 떠안는다평균으로 상쇄한다
데이터 활용검증분을 떼어 둔다전부 한 번씩 검증한다
훈련 비용1배k배

3줄 요약

  1. 1k-fold — 적은 데이터로 일반화 성능을 정직하게
  2. 2교차검증은 분포 → 표본 → 검정 → 회귀 → 모델 선택 흐름 안의 한 칸이다.
  3. 3개념을 외우는 것보다 입력을 바꾸면 무엇이 달라지는지 보는 것이 우선이다.

완료 전 점검

복습 카드

교차검증

k-fold — 적은 데이터로 일반화 성능을 정직하게

분포

데이터가 어떤 모양으로 퍼져 있는지 나타낸 것

표본

전체를 알기 위해 뽑아 본 일부 데이터