CertNote/ 출퇴근 학습 노트
로드맵
KOEN
CLF-C02 · FoundationalCloud Practitioner - Foundational
DVA-C02 · AssociateDeveloper - Associate
SAA-C03 · AssociateSolutions Architect - Associate
SOA-C02 · AssociateCloudOps Engineer - Associate
SAP-C02 · ProfessionalSolutions Architect - Professional
DOP-C02 · ProfessionalDevOps Engineer - Professional
SCS-C03 · SpecialtySecurity - Specialty
MLA-C01 · AssociateMachine Learning Engineer - Associate
AIF-C01 · FoundationalAI Practitioner - Foundational
DEA-C01 · AssociateData Engineer - Associate
MLS-C01 · SpecialtyMachine Learning - Specialty
  • Week 1
    • 1.ML 수명주기(ML Lifecycle): 비즈니스 문제 정의부터 A/B 테스트까지
    • 2.ML용 데이터 저장소: S3·EFS·FSx for Lustre·데이터 포맷
    • 3.데이터 수집: Kinesis·Glue·배치 vs 스트리밍
    • 4.데이터 레이블링: SageMaker Ground Truth·액티브 러닝(Active Learning)·레이블 품질
    • 5.1주차 종합 복습: ML 개요와 데이터 엔지니어링 1
  • Week 2
  • Week 3
  • Week 4
  • Week 5
  • Week 6
  • Week 7
  • Week 8
    • 1.SageMaker 학습 작업: Estimator, 입력 모드, 분산 학습, Spot
    • 2.하이퍼파라미터 튜닝(AMT): 베이지안·랜덤·Hyperband
    • 3.과적합과 과소적합: 진단과 정규화·데이터 증강
    • 4.학습 최적화: 배치 크기·학습률, 그래디언트 문제, Debugger/Profiler
    • 5.8주차 종합 복습: 학습·튜닝·일반화
  • Week 9
  • Week 10
  • Week 11
  • Week 12
합격 후기

© CertNote · 주간랩스

  • 소개
  • 수정 기록
  • 문의
  • 이용약관
  • 개인정보처리방침
← MLS-C01/Week 8/Day 3

기준: MLS-C01 시험 가이드·오류 제보

MLS-C01· AssociateWeek 8 · Day 3읽기 약 11분
핵심 정리
  • 튜닝으로 좋은 하이퍼파라미터를 얻어도 학습은 잘 맞추는데 검증이 나쁘면 그 모델은 쓸모없다. 일반화 실패는 과적합·과소적합 두 방향이다.
  • 높은 편향 = 과소적합(학습·검증 둘 다 나쁨), 높은 분산 = 과적합(학습만 좋고 검증과 격차가 큼). 진단은 학습 곡선으로 한다.
  • 과적합 처방: 데이터 추가, 정규화 강화, 모델 단순화, 특징 축소, 조기 종료, 드롭아웃, 증강.
  • 과소적합 처방: 복잡도 증가, 특징 추가, 더 오래 학습, 정규화 완화. 에폭·모델 확대는 과적합에 쓰면 안 된다.
  • L1은 일부 가중치를 정확히 0으로(특징 선택·희소성), L2는 모든 가중치를 작게(부드러운 축소). 스케일러·인코더는 학습셋으로만 fit 해야 누수가 없다.

Day 3 - 과적합과 과소적합: 진단과 정규화·데이터 증강

편향과 분산, 일반화 오차

일반화 오차는 편향(bias)과 분산(variance)으로 분해된다. 시험은 코드보다 이 두 축의 판별을 묻는다.

상태학습 오차검증 오차격차정체
과소적합(편향↑)높음높음작음모델이 학습 패턴조차 못 잡음
이상적낮음낮음작음편향·분산 합이 최소
과적합(분산↑)낮음높음큼모델이 잡음을 외움
과소적합:  train error ↑  valid error ↑   (둘 다 나쁘고 격차 작음)
이상적:    train error ↓  valid error ↓   (둘 다 좋음)
과적합:    train error ↓  valid error ↑   (격차가 크다)

편향-분산 트레이드오프는 모델 복잡도와 일반화 사이의 근본 긴장이다. 복잡도를 올리면 편향은 줄지만 분산이 커지고, 낮추면 그 반대다. 목표는 (편향 + 분산) 합이 최소가 되는 지점을 찾는 것이다. 정규화는 분산을 줄여 과적합을 잡고, 모델 용량·특징 추가는 편향을 줄여 과소적합을 잡는다.

학습 곡선 읽기 — 진단

[과적합 신호]
 loss │╲                    ← 검증 손실이 어느 시점 이후 다시 올라감
      │ ╲___  valid          정확도: train 99% / valid 72% (격차 큼)
      │  ╲   ╱‾‾‾            에폭이 갈수록 train loss만 계속 하락
      │   ╲_╱
      │    ╲_______ train
      └──────────────── epoch
              ↑ 여기가 조기 종료 지점
 
[과소적합 신호]
 loss │‾‾‾‾‾‾‾‾‾‾‾ valid     정확도: train 65% / valid 64% (둘 다 낮고 비슷)
      │‾‾‾‾‾‾‾‾‾‾‾ train     더 학습해도 손실이 높은 채 평탄(plateau)
      └──────────────── epoch
 
[이상적]
 loss │╲___
      │ ╲___╲______ valid    두 곡선이 함께 내려가 낮은 값에서 근접
      │  ╲_________ train
      └──────────────── epoch

진단 → 처방 매핑

진단처방
과적합데이터 추가, 정규화 강화, 모델 단순화, 특징 수 축소, 조기 종료, 드롭아웃, 데이터 증강
과소적합모델 복잡도 증가, 특징 추가, 더 오래 학습, 정규화 완화

⚠️ 함정: 과적합에 "에폭을 두 배로 늘린다 / 층을 더 쌓는다"로 대응하는 보기는 오답이다. 둘 다 분산을 더 키운다. 마찬가지로 "검증 세트를 학습에 합친다"는 일반화 측정 자체를 없애는 오답이다.

정규화 1: L1, L2, ElasticNet

손실 함수에 가중치 크기 페널티를 더해 분산을 줄인다.

기법페널티효과
L1 (Lasso)가중치 절댓값의 합일부 가중치가 정확히 0 → 특징 선택(희소성)
L2 (Ridge)가중치 제곱의 합가중치를 작게(0은 아님) → 부드러운 축소
ElasticNetL1 + L2 조합희소성 + 안정성 절충
# 예: Linear Learner의 L1/L2 강도
hyperparameters = {
    "l1": 0.01,                  # L1 강도(희소성)
    "wd": 0.001,                 # weight decay = L2
}

판별 신호:

  • "특징이 너무 많다, 불필요한 것을 자동으로 버리고 희소한 모델을 원한다" → L1
  • "모든 특징은 유지하되 가중치를 줄여 과적합을 잡고 싶다" → L2

정규화 2: 드롭아웃, 조기 종료

딥러닝에서 주로 쓰는 두 기법이다.

  • 드롭아웃(Dropout): 스텝마다 뉴런을 무작위로 비활성화(예: rate 0.5). 특정 뉴런 의존을 막고 암묵적 앙상블 효과를 낸다. 추론 시에는 비활성화하고 가중치를 보정한다.
  • 조기 종료(Early Stopping): 검증 손실이 더 나아지지 않으면 학습을 멈춘다. 과적합 지점에 도달하기 전에 끊는다.
# 예: 신경망 하이퍼파라미터
hyperparameters = {
    "dropout": 0.5,
    "early_stopping_patience": 5,   # 5에폭 개선 없으면 중단
}

드롭아웃은 매 스텝 서로 다른 하위 신경망을 학습시키고 추론 시 그것들을 평균 내는 셈이라 암묵적 앙상블로 작동한다. 조기 종료는 잡음 암기가 시작되기 직전에 학습을 멈춰 분산을 줄인다. 둘 다 "실효 모델을 더 단순하게 만든다"는 같은 목표를 서로 다른 방식으로 달성한다.

정규화 기법 선택표

기법무엇을 줄이나언제 쓰나언제 쓰면 안 되나
L1 (Lasso)분산 + 특징 수특징이 매우 많고 상당수가 무관, 희소 모델·특징 선택이 목표모든 특징이 의미 있어 하나도 버리면 안 될 때
L2 (Ridge)분산특징을 다 남기되 가중치를 눌러야 할 때, 상관된 특징이 많을 때특징을 실제로 제거해 모델을 희소하게 만들어야 할 때
ElasticNet분산 + 특징 수희소성은 원하지만 L1만 쓰면 불안정한 상관 특징 그룹이 있을 때튜닝할 하이퍼파라미터를 늘리기 어려운 상황
드롭아웃분산신경망, 파라미터가 많고 데이터 대비 용량이 클 때이미 과소적합인 모델, 추론 단계(반드시 끈다)
조기 종료분산검증 손실이 다시 오르는 곡선이 관찰될 때, 학습 시간도 절약검증 세트가 없거나 너무 작아 지표가 요동칠 때

⚠️ 함정: 드롭아웃과 배치 정규화는 "특징 선택" 기법이 아니다. "불필요한 특징을 모델이 스스로 0으로 만든다"는 지문의 정답은 항상 L1이다.

데이터 증강(Data Augmentation)

데이터를 더 모으기 어려울 때, 기존 데이터를 변형해 학습 분포를 넓힌다. 과적합 완화에 강력하다.

도메인증강 기법주의
이미지회전, 반전, 크롭, 밝기·대비 조정, 노이즈 추가, cutout라벨 의미를 바꾸는 변형은 금지(예: 숫자 6↔9 반전)
텍스트동의어 치환, 역번역(back-translation), 무작위 삭제의미가 뒤집히면 라벨이 깨진다
표형/불균형SMOTE로 소수 클래스 합성, 오버샘플링, 클래스 가중치분할 후 학습셋에만 적용해야 누수가 없다

판별 신호:

  • "데이터가 부족한데 과적합 / 추가 수집 비용이 매우 크다" → 데이터 증강
  • "소수 클래스가 너무 드물어 모델이 다수 클래스만 학습" → SMOTE·오버샘플링(또는 클래스 가중치)

데이터 분할과 누수 방지

일반화를 정직하게 측정하려면 분할이 먼저 맞아야 한다.

  • train / validation / test 3분할. 검증셋으로 하이퍼파라미터를 고르고, 테스트셋은 최종에 딱 한 번 채점한다.
  • k-겹 교차검증(k-fold): 데이터가 적을 때 분할 운에 좌우되지 않도록 성능을 평균낸다.
  • 누수(leakage): 미래 정보·타깃에서 파생된 특징·테스트 정보가 학습에 섞이면 검증 점수가 비현실적으로 높게 나온다.

누수 유형 표

유형어떻게 생기나증상예방
전처리 누수스케일러·인코더·결측 대치기를 전체 데이터로 fit검증 점수가 실제 운영보다 훨씬 높음학습셋으로만 fit, 나머지는 transform만
타깃 누수타깃에서 파생된 특징이 입력에 포함특정 특징 하나가 성능을 독점특징 생성 시점을 예측 시점 기준으로 검증
시간 누수미래 데이터로 과거를 예측백테스트만 좋고 실전에서 붕괴시계열은 시간순 분할 사용
중복 누수같은 샘플이 학습·테스트에 동시 존재테스트 점수가 비현실적중복 제거 후 분할, 그룹 단위 분할
증강 누수분할 전에 SMOTE·증강 적용합성본이 검증셋에 섞임분할 후 학습셋에만 증강
[올바른 순서]
원시 데이터
   │
 ① 분할 (train / validation / test)   ← 여기서부터 모든 fit은 학습셋만
   │
 ② 결측 대치 · 인코딩 · 스케일링  (train에서 fit → 전체에 transform)
   │
 ③ 증강 / SMOTE  (train에만)
   │
 ④ 학습 → 검증셋으로 하이퍼파라미터 선택 (여기서 정규화 강도 조정)
   │
 ⑤ 테스트셋 1회 채점 (최종 보고용)

일반화를 무엇으로 측정하나 — 지표 해석

격차를 보려면 먼저 "무슨 숫자의 격차인가"가 맞아야 한다. 지표를 잘못 고르면 과적합·과소적합 진단 자체가 틀어진다.

상황봐야 할 지표이유
클래스가 균형 잡힌 분류Accuracy + 학습/검증 격차이때는 정확도가 정직하게 움직인다
불균형 분류(사기 탐지, 이상 탐지)F1, AUC, Recall, PR 곡선양성이 1%면 "전부 음성"만 찍어도 정확도 99% — 정확도는 함정
놓치면 치명적(질병·사기)Recall 우선거짓 음성 비용이 거짓 양성보다 크다
잘못된 경보 비용이 큼Precision 우선거짓 양성이 실무 비용을 만든다
회귀RMSE / MAE의 학습·검증 격차이상치 민감도가 다르므로 목적에 맞게 선택
데이터가 적어 검증 점수가 요동k-겹 교차검증 평균 ± 편차단일 분할의 운을 제거해야 격차가 신뢰된다

불균형 데이터에서 "학습 99% / 검증 98%"라 격차가 작다고 일반화가 잘 됐다고 보면 안 된다. 두 숫자 모두 다수 클래스에 끌려간 값일 수 있다. 혼동 행렬과 소수 클래스 Recall을 함께 봐야 한다.

진단·처방 의사결정 트리

모델 성능이 기대에 못 미친다
├─ 학습 성능 자체가 낮은가?
│    ├─ 예 → 과소적합(편향↑)
│    │        ├─ 모델 복잡도↑ (층·트리 깊이·특징 추가)
│    │        ├─ 정규화 강도↓ (L1/L2/드롭아웃 완화)
│    │        └─ 더 오래 학습 (에폭↑)
│    └─ 아니오 ↓
├─ 학습은 좋은데 검증과 격차가 큰가?
│    ├─ 예 → 과적합(분산↑)
│    │        ├─ 데이터를 더 모을 수 있나?
│    │        │    ├─ 예   → 데이터 추가
│    │        │    └─ 아니오 → 데이터 증강(이미지: 회전·크롭 / 텍스트: 역번역)
│    │        ├─ 특징이 너무 많고 일부는 무관한가? → L1
│    │        ├─ 모든 특징을 남기며 눌러야 하나?   → L2
│    │        ├─ 신경망인가?                     → 드롭아웃
│    │        └─ 검증 손실이 다시 오르는가?        → 조기 종료
│    └─ 아니오 ↓
└─ 검증 점수가 비현실적으로 높은가?
     └─ 예 → 데이터 누수 의심 (전처리 fit 범위·타깃 파생 특징·중복 확인)

지문 단서 → 정답 매핑

지문 단서고를 답이유
"학습 98%, 검증 71%로 격차가 크다"과적합 → 정규화 강화·데이터 추가분산이 큰 전형적 패턴
"학습·검증 정확도가 둘 다 65% 수준"과소적합 → 복잡도·특징·학습 시간↑편향이 큰 전형적 패턴
"특징 500개 중 불필요한 것을 0으로 만들고 싶다"L1(Lasso)절댓값 페널티가 가중치를 정확히 0으로 만든다
"모든 특징은 유지하되 가중치만 줄이고 싶다"L2(Ridge)0에 가깝게 축소하되 제거하지 않는다
"이미지 과적합인데 라벨링 비용이 크다"데이터 증강(회전·반전·크롭)수집 없이 학습 분포를 넓힌다
"학습 손실은 계속 내려가는데 검증 손실이 다시 오른다"조기 종료잡음 암기가 시작되는 지점에서 끊는다
"소수 클래스가 1%뿐이라 다수 클래스만 학습한다"SMOTE·오버샘플링·클래스 가중치불균형 자체를 완화
"전체 데이터로 StandardScaler를 fit했다"누수 → 학습셋으로만 fit테스트 통계가 학습에 새어 들어간다
"과적합인데 에폭을 두 배로 늘린다"오답 보기과적합을 악화시킨다

다음 글에서는 학습 안정성 자체 — 배치 크기, 학습률 스케줄, 그래디언트 소실·폭발과 SageMaker Debugger/Profiler를 다룬다.

📖 용어

  • 일반화(generalization) : 학습에 쓰지 않은 새 데이터에서도 성능이 유지되는 성질. 모델의 진짜 목표다.
  • 편향(bias) / 분산(variance) : 모델이 너무 단순해서 생기는 오차 / 학습 데이터가 조금만 달라져도 결과가 크게 흔들리는 정도. 편향이 크면 과소적합, 분산이 크면 과적합이다.
  • 학습 곡선(learning curve) : 에폭이나 데이터 양에 따라 학습·검증 손실이 어떻게 변하는지 그린 그래프. 과적합·과소적합 진단의 1차 도구.
  • 정규화(regularization) : 손실에 페널티를 더해 모델이 지나치게 복잡해지지 않게 억제하는 기법 묶음.
  • 희소성(sparsity) : 가중치 대부분이 0이 되어 실제로 쓰이는 특징이 적어지는 상태. L1이 유도한다. wd(weight decay)는 반대로 L2의 다른 이름이다.
  • 드롭아웃(dropout) / 조기 종료(early stopping) : 학습 중 뉴런 일부를 무작위로 꺼 특정 뉴런 의존을 막는 기법(추론 시엔 끈다) / 검증 손실이 더 좋아지지 않을 때 학습을 멈춰 과적합 시작점을 넘지 않게 하는 기법.
  • 데이터 증강(data augmentation) : 기존 데이터를 변형해 새 학습 샘플을 만드는 것. 이미지 회전, 텍스트 역번역 등.
  • SMOTE : 소수 클래스 샘플들 사이를 보간해 합성 샘플을 만드는 오버샘플링 기법. 클래스 불균형 완화용.
  • 데이터 누수(data leakage) : 학습 시점에 알 수 없어야 할 정보가 모델에 섞여 들어가 성능이 부풀려지는 현상. 검증 점수만 비현실적으로 좋아진다.
  • k-겹 교차검증(k-fold CV) : 데이터를 k조각으로 나눠 번갈아 검증하며 성능을 평균내는 방법. 데이터가 적어 분할 운에 좌우될 때 쓴다.

📝 연습 문제

선택지를 클릭하면 정답·해설이 펼쳐집니다.

문제 1

한 모델이 학습 정확도 98%, 검증 정확도 71%로 큰 격차를 보인다. 이 상황의 진단과 1차 대응으로 가장 적절한 것은?

문제 2

입력 특징이 500개로 많고, 그중 불필요한 특징을 모델이 스스로 0으로 만들어 희소한 모델을 얻고 싶다. 가장 적합한 정규화는?

문제 3

이미지 분류 모델이 과적합되는데, 라벨링된 추가 데이터를 모으는 비용이 매우 크다. 가장 비용 효율적인 대응은?

문제 4

신경망 모델에서 학습이 진행될수록 학습 손실은 계속 내려가지만 검증 손실은 어느 시점 이후 다시 올라간다. 잡음 암기를 막기 위한 가장 직접적인 기법은?

문제 5

전처리에서 표준화(StandardScaler)를 적용할 때 데이터 누수를 막는 올바른 방법은?

이전하이퍼파라미터 튜닝(AMT): 베이지안·랜덤·HyperbandWeek 8 · Day 2다음 학습 최적화: 배치 크기·학습률, 그래디언트 문제, Debugger/ProfilerWeek 8 · Day 4

참고 공식 자료

  • MLS-C01 공식 시험 안내(새 탭에서 열림)

이 페이지

  • 편향과 분산, 일반화 오차
  • 학습 곡선 읽기 — 진단
  • 진단 → 처방 매핑
  • 정규화 1: L1, L2, ElasticNet
  • 정규화 2: 드롭아웃, 조기 종료
  • 정규화 기법 선택표
  • 데이터 증강(Data Augmentation)
  • 데이터 분할과 누수 방지
  • 누수 유형 표
  • 일반화를 무엇으로 측정하나 — 지표 해석
  • 진단·처방 의사결정 트리
  • 지문 단서 → 정답 매핑
  • 용어
  • 연습 문제