모던지 / 빅데이터분석기사 / 모델링 1강. 분석모형 설계와 데이터 분할

모델링 1강. 분석모형 설계와 데이터 분할

캐글에서 공개 순위 1등이 최종 순위에서 수십 계단 미끄러지는 일이 매번 벌어집니다. 성적표를 자꾸 들여다보면 성적표에도 과적합됩니다.

풀고 시작

문제 1. 데이터를 훈련, 검증, 테스트 셋으로 나눌 때 검증 셋의 역할은?
검증 셋은 모델을 고르고 다듬는 데 쓰는 연습 시험지입니다. 가중치를 갱신하는 것은 훈련 셋의 몫이고, 최종 성능은 한 번도 보지 않은 테스트 셋에서 딱 한 번 재야 합니다.

성적표를 자꾸 보면 성적표에 맞춰집니다

캐글 같은 데이터 경진대회에는 공개 순위표와 최종 순위표가 따로 있습니다. 대회 기간에는 테스트 데이터의 일부로 계산한 점수만 공개되고, 마감 뒤에 나머지로 최종 순위가 정해지죠. 그런데 매 대회마다 공개 순위 상위권이 최종 순위에서 우수수 미끄러지는 일이 벌어집니다.

이유는 단순합니다. 참가자들은 하루에도 몇 번씩 제출하며 공개 점수가 오르는 쪽으로 모델을 고칩니다. 점수를 보고 고르는 행위 자체가 학습입니다. 수백 번 반복하면 공개 데이터의 우연한 특성에까지 모델이 맞춰지죠. 그래서 이 강의 첫 원칙이 나옵니다. 테스트 데이터는 마지막에 딱 한 번 엽니다. 여러 번 열면 그것은 이미 테스트 데이터가 아니라 또 하나의 훈련 데이터입니다.

무엇을 만들 것인지부터

모델을 고르기 전에 문제의 성격을 정합니다. 정답이 붙어 있으면 지도학습, 없으면 비지도학습, 행동에 보상이 따라오면 강화학습이죠. 지도학습은 다시 갈립니다. 답이 범주면 분류, 답이 숫자면 회귀입니다. 비지도학습에는 비슷한 것끼리 묶는 군집분석, 함께 일어나는 일을 찾는 연관분석이 들어갑니다.

여기에 질문 하나가 더 붙습니다. 예측이 목적인가 설명이 목적인가. 왜 그런지 보고해야 하는 상황이라면 성능이 조금 낮아도 회귀나 의사결정나무처럼 근거를 보여 줄 수 있는 모델이 낫습니다. 대출 거절 사유를 물었을 때 "심층 신경망이 그렇게 판단했습니다"는 답이 될 수 없거든요. 이 긴장은 4과목 5강까지 계속 따라옵니다.

나누는 방법들

방법 하는 일 메모
홀드아웃 한 번 잘라 훈련과 테스트로 나눔 간단하지만 어떻게 잘렸느냐에 성능이 흔들림
K-겹 교차검증 K조각으로 나눠 번갈아 한 조각씩 평가에 씀 K번 학습해 평균을 냄, 가장 표준적인 방법
계층별 K-겹 각 조각의 클래스 비율을 원본과 맞춤 불균형 데이터에 필수
LOOCV 한 건만 빼고 학습하기를 데이터 수만큼 반복 편향은 작지만 계산이 매우 큼
부트스트랩 복원추출로 표본을 여러 벌 만듦 뽑히지 않은 데이터로 평가

K-겹 교차검증의 요점은 모든 데이터가 정확히 한 번씩 평가에 쓰인다는 것입니다. 5겹이면 데이터를 다섯 조각으로 나누고, 네 조각으로 학습해 남은 한 조각으로 평가하기를 다섯 번 돌려 평균을 냅니다. 한 번 잘라서 운 좋게 쉬운 데이터가 평가에 몰리는 사고를 막아 주죠. 데이터가 적을수록 이득이 큽니다.

부트스트랩에는 재미있는 숫자가 하나 붙어 있습니다. n개에서 복원추출로 n개를 뽑으면 원본의 약 63.2퍼센트만 표본에 들어가고 나머지 36.8퍼센트는 한 번도 안 뽑힙니다. 안 뽑힌 데이터를 평가용으로 쓰는 방식을 OOB 평가라고 부르고, 랜덤 포레스트가 이 성질을 그대로 활용합니다.

나누기 전에 조심할 것

분할에서 사고가 나는 자리가 정해져 있습니다.

시계열 데이터를 무작위로 자르면 안 됩니다. 미래 데이터로 학습해 과거를 맞히는 꼴이 되니까요. 시간 순서를 지켜 앞쪽으로 학습하고 뒤쪽으로 평가해야 합니다. 같은 사람의 데이터가 훈련과 테스트에 나뉘어 들어가도 안 됩니다. 모델이 사람을 외워 버리면 성능이 부풀려집니다. 그리고 2과목 4강에서 본 것처럼 전처리 기준값은 훈련 데이터에서만 계산합니다. 세 경우 모두 이름은 하나, 데이터 누수입니다.

인출 문제

문제 1. 5겹 교차검증의 동작으로 옳은 것은?
조각을 번갈아 평가용으로 쓰면서 모든 데이터가 정확히 한 번씩 평가에 참여하는 것이 핵심입니다. 매번 새로 무작위 분할하는 것과 달리 중복 없이 전체를 덮으므로 성능 추정이 안정적입니다.
문제 2. 크기가 n인 데이터에서 복원추출로 n개를 뽑았을 때, 한 번도 뽑히지 않는 데이터의 비율은 대략 얼마인가요?
약 63.2퍼센트가 표본에 포함되고 나머지 약 36.8퍼센트는 뽑히지 않습니다. 이 남은 데이터를 평가에 쓰는 것이 OOB 평가이며, 랜덤 포레스트가 별도 검증 셋 없이 성능을 가늠하는 근거가 됩니다.
문제 3. 월별 매출 예측 모델을 만들면서 데이터를 무작위로 섞어 훈련과 테스트로 나눴습니다. 무엇이 문제인가요?
시계열에서는 시간 순서가 정보 그 자체입니다. 무작위 분할은 나중 시점의 값이 훈련에 섞이게 만들어 데이터 누수를 일으키고, 운영 환경에서는 재현되지 않는 성능을 보고하게 됩니다.
문제 4. 소수 클래스가 전체의 2퍼센트인 데이터를 교차검증할 때 적절한 방식은?
무작위로 나누면 어떤 폴드에는 소수 클래스가 한 건도 들어가지 않을 수 있습니다. 계층별 분할은 각 폴드가 원본과 같은 클래스 비율을 갖도록 맞춰 주므로 불균형 데이터에서 사실상 필수입니다.

더 풀기

출제기준의 세세항목을 따라 이 강의 범위에서 새로 낸 문제입니다. 모의고사도 여기에서 뽑습니다.

묶음 1

문제 1. 훈련 데이터와 검증 데이터, 시험 데이터의 역할로 옳은 것은?
선택에 쓴 데이터로 최종 성능을 재면 낙관적으로 부풀려집니다. 그래서 시험 데이터는 마지막에 한 번만 씁니다.
문제 2. 홀드아웃 방식의 단점으로 가장 알맞은 것은?
한 번만 나누므로 우연히 쉬운 조합이 시험 데이터가 될 수 있습니다. 데이터가 작을수록 흔들림이 큽니다.
문제 3. K-겹 교차검증에서 K를 크게 할 때의 변화로 옳은 것은?
K가 커질수록 학습에 쓰는 데이터가 늘어 편향이 줄지만 폴드마다 결과가 비슷해져 추정의 분산 특성이 달라집니다.
문제 4. 클래스 비율이 크게 치우친 데이터를 나눌 때 반드시 고려할 방식은?
각 조각의 클래스 비율을 원본과 맞추지 않으면 어떤 폴드에는 소수 클래스가 거의 들어가지 않습니다.
문제 5. LOOCV의 특징으로 옳은 것은?
한 건만 빼고 학습하기를 데이터 수만큼 반복합니다. 편향은 작지만 비용이 큽니다.
문제 6. 부트스트랩에 대한 설명으로 옳은 것은?
복원추출이므로 같은 관측이 여러 번 뽑힐 수 있고, 뽑히지 않은 관측을 평가에 씁니다.
문제 7. 부트스트랩 표본에 한 번도 뽑히지 않는 관측의 비율은 대략 얼마인가요?
표본이 커질수록 뽑히지 않을 확률이 자연상수의 역수에 가까워져 약 36.8퍼센트가 됩니다. 이들이 성능 평가에 쓰입니다.
문제 8. 시계열 데이터를 분할할 때 무작위 분할이 부적절한 이유로 가장 알맞은 것은?
시간 순서를 지켜 과거로 학습하고 미래로 평가해야 현실을 반영합니다.
문제 9. 시계열 교차검증에서 쓰는 방식으로 가장 알맞은 것은?
앞에서 뒤로 창을 밀며 평가하는 방식이라야 시간 구조가 보존됩니다.
문제 10. 데이터 누출의 예로 가장 알맞은 것은?
예측 시점에 알 수 없는 정보가 들어가면 검증 성능은 좋지만 실제로는 쓸 수 없습니다.
문제 11. 모델 선정 단계에서 가장 먼저 정해야 할 것은?
분류인지 회귀인지, 무엇을 얼마나 잘해야 하는지가 정해져야 나머지가 따라옵니다.
문제 12. 기준 모형을 먼저 만들어 두는 이유로 가장 알맞은 것은?
최빈값 예측이나 단순 규칙보다 못한 모델은 아무 의미가 없습니다.

묶음 2

문제 1. 편향과 분산의 관계로 옳은 것은?
이 맞바꿈을 조절해 총 오차를 최소로 만드는 지점을 찾는 것이 모델 선택입니다.
문제 2. 과소적합의 징후로 가장 알맞은 것은?
모델이 데이터의 구조를 충분히 담지 못한 상태입니다. 복잡도를 올리거나 변수를 보강해야 합니다.
문제 3. 학습 곡선에서 훈련 성능과 검증 성능의 간격이 계속 벌어져 있다면 우선 시도할 대응은?
간격이 크다는 것은 분산이 크다는 뜻이므로 데이터 증가와 규제가 정석입니다.
문제 4. 검증 데이터를 반복해 참고하며 설정을 고치면 생기는 문제로 가장 알맞은 것은?
그래서 마지막 판정을 위한 시험 데이터를 따로 떼어 두고 손대지 않습니다.
문제 5. 중첩 교차검증을 쓰는 이유로 가장 알맞은 것은?
안쪽 루프에서 설정을 고르고 바깥 루프에서 평가하므로 선택 과정의 낙관 편향이 제거됩니다.
문제 6. 분석 환경 구축에서 고려할 사항으로 보기 어려운 것은?
좌석 배치는 분석 환경 구축의 항목이 아닙니다.
문제 7. 분석 결과의 재현성을 확보하기 위한 조치로 보기 어려운 것은?
정확도는 재현성과 다른 문제입니다. 나머지 셋이 같은 결과를 다시 얻기 위한 조치입니다.
문제 8. 모형 구축 절차를 순서대로 옳게 나열한 것은?
분할을 먼저 해야 전처리와 선택에서 정보 누출을 막을 수 있습니다.
문제 9. 모델 복잡도를 결정하는 요소로 보기 어려운 것은?
저장 형식은 모델의 표현력과 무관합니다.
문제 10. 데이터가 매우 적을 때 성능 추정 방법으로 가장 알맞은 것은?
데이터가 적을수록 한 번의 분할은 우연에 크게 좌우되므로 여러 번 나누어 평균을 봅니다.
문제 11. 클래스가 세 개 이상인 분류 문제에서 데이터 분할 시 확인할 점으로 가장 알맞은 것은?
희소 클래스가 특정 폴드에 없으면 그 폴드의 평가가 의미를 잃습니다.
문제 12. 모델 개발에서 파이프라인으로 전처리와 학습을 묶는 이유로 가장 알맞은 것은?
파이프라인 없이 전처리를 먼저 하면 정보 누출이 조용히 들어옵니다.

묶음 3

문제 1. 성능 목표를 정할 때 함께 정의해야 하는 것으로 가장 알맞은 것은?
거짓 양성과 거짓 음성의 비용이 다르면 최적 임계값과 평가 지표가 달라집니다.
문제 2. 데이터 분할 비율을 정할 때 고려할 사항으로 가장 알맞은 것은?
데이터가 크면 시험 데이터 비율을 낮춰도 되고, 작으면 교차검증으로 대신합니다.
문제 3. 훈련과 시험 데이터의 분포가 다를 때 나타나는 현상으로 가장 알맞은 것은?
분포 이동을 먼저 확인해야 합니다. 모델을 아무리 고쳐도 데이터 문제는 해결되지 않습니다.
문제 4. 군집분석처럼 정답이 없는 모형의 설계에서 평가 기준으로 쓰이는 것은?
라벨이 없으므로 군집 내 응집도와 군집 간 분리도를 재는 지표를 씁니다.
문제 5. 모델을 고를 때 성능 외에 함께 따져야 할 요소로 보기 어려운 것은?
취향은 기준이 될 수 없습니다. 나머지 셋은 실제 채택 여부를 좌우합니다.
문제 6. 동일한 알고리즘인데 실행할 때마다 성능이 달라지는 이유로 가장 알맞은 것은?
난수 시드를 고정하면 재현할 수 있습니다. 여러 시드의 평균을 보고하는 것이 더 정직합니다.
문제 7. 분석 모형 설계 단계에서 산출되는 문서로 가장 알맞은 것은?
무엇을 어떤 데이터로 어떻게 학습하고 평가할지를 적은 문서가 필요합니다.
문제 8. 검증 성능이 폴드마다 크게 다를 때 가장 먼저 의심할 것은?
폴드 간 편차가 크면 추정 자체가 불안정하므로 반복 교차검증으로 확인합니다.
문제 9. 최종 모델을 만들 때 데이터 사용에 대한 일반적 권고는?
성능 추정이 끝났다면 가진 데이터를 최대한 써서 최종 모델을 학습하는 편이 낫습니다.
문제 10. 실험 관리 도구를 쓰는 이유로 가장 알맞은 것은?
수십 번의 실험을 기억에 의존하면 결론이 흐려집니다.
문제 11. 데이터 분할에서 그룹 구조가 있을 때 주의할 점으로 가장 알맞은 것은?
개체 단위로 묶어서 분할해야 실제 상황을 반영합니다.
문제 12. 모형 설계 단계에서 성능이 아니라 공정성을 함께 점검해야 하는 이유로 가장 알맞은 것은?
집단별 성능을 나누어 보지 않으면 평균 뒤에 가려진 차별을 놓치게 됩니다.

이전: 2과목 6강 확률분포와 추론통계 · 다음: 2강 회귀분석

모던지 · 궁금하면 모던지 GitHub · 2026-09-10