# CHO-FAM 5주차 · Machine Learning

현재 위치: 2개월차 1주차(전체 5주차). 기간: 2026-10-13~2026-10-19. 기본 10시간.

[전체 커리큘럼](https://cho-fam.com/docs/cho-fam-ai-curriculum.html) · [2개월차](https://cho-fam.com/docs/curriculum/month-02.html) · [지난 4주차](https://cho-fam.com/docs/curriculum/week-04.html) · [이번 주 HTML](https://cho-fam.com/docs/curriculum/week-05.html) · [Markdown 원문](https://cho-fam.com/docs/curriculum/week-05.md)

## 1. 재구성과 이전 주 연결

2026-10-13 순서 변경: 기존 3개월차를 ML·딥러닝 중심으로 재구성해 2개월차(5–8주)에 배치한다. 기존 4개월차 RAG는 3개월차(9–12주), 기존 2개월차 아키텍처는 4개월차(13–16주)로 이동한다. 기존 5주차 Software Architecture 계획을 이번 Machine Learning 계획으로 대체한다. 아키텍처 상세 계획은 13주차에 작성한다.

1–4주차는 운영상 완료된 선수 지식이다. 미진행 읽기·구현·실험·산출물을 이월하거나 복습·보충 시간을 편성하지 않는다. 기존 평가 기준과 실험 계약은 고정 입력으로만 사용한다. 실행 증거가 없는 자산을 검증 완료나 실측 성과로 표시하지 않는다.

연구 질문: CHO-FAM의 문제·데이터 입력에서 규칙 기반 해법과 ML 모델의 차이를 어떻게 검증하고, 복잡한 모델을 도입할 근거를 확보할 것인가?

## 2. 이번 주 목표

- classification·regression·anomaly detection과 feature·target·prediction의 역할을 구분한다.
- supervised learning 사례 하나에서 train/validation/test를 분리하고 누수를 차단한다.
- 규칙 또는 상수 baseline과 선형 모델·트리 모델을 같은 기준으로 비교한다.
- 결측·스케일링 등 전처리를 train 안에서 학습하는 pipeline을 구현한다.
- 지표·오류 사례·불확실성을 보고하고 ML 채택·보류 조건을 기록한다.

이번 주 실습은 분류 하나로 제한한다. 회귀·이상 탐지는 개념 비교만 하며 별도 모델 구현 과제를 추가하지 않는다. 딥러닝·토큰·임베딩·Transformer는 6주차, LLM 생성은 7주차, 서빙은 8주차에 수행한다.

## 3. 교재와 세미나

O’Reilly를 주교재 플랫폼으로 사용한다. ML 교재를 보조교재 S9로 추가하며 기존 T1–T8 코드는 유지한다. 장 번호는 판본별 목차를 확인하고 선택하며 새로 확인하지 않은 절 번호를 확정하지 않는다.

| 구분 | 교재·범위 | 읽기 초점 | 시간 |
|---|---|---|---:|
| 필수 S9 | [Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow, 3e](https://www.oreilly.com/library/view/hands-on-machine-learning/9781098125967/) Ch.1–3 관련 절 | ML 문제 유형, end-to-end 분할·전처리, 분류 평가 | 2시간 |
| 선택 S3 | [Designing Machine Learning Systems](https://www.oreilly.com/library/view/designing-machine-learning/9781098107956/) 데이터·평가 관련 절 | 실제 입력, 분포, 오류 비용 | 30분 |
| Manning 심화 | [Build an AI Agent (From Scratch)](https://www.manning.com/books/build-an-ai-agent-from-scratch) 모델·도구 호출 관련 절 | ML 결과를 Agent 도구의 출력으로 표현. S3 선택 시간과 교체 | 교체 |

논문·공식문서 세미나 45분: [scikit-learn Common pitfalls](https://scikit-learn.org/stable/common_pitfalls.html), [Cross-validation](https://scikit-learn.org/stable/modules/cross_validation.html), [DummyClassifier](https://scikit-learn.org/stable/modules/generated/sklearn.dummy.DummyClassifier.html). train 밖 전처리 fit과 test를 보고 하는 모델 선택의 문제를 실험 코드에 대응한다. 이번 주는 공식문서 세미나를 중심으로 수행한다.

## 4. CHO-FAM Lab · 최소 ML 비교

Cho-Pilot 또는 hackathon-kit의 문제·데이터 → 후보 모델 → 평가 흐름에 재사용할 작은 실험을 만든다. 실제 저장소 접근이 없으면 독립 실험으로 진행하며 제품 통합은 미검증으로 표시한다. 4개월차 아키텍처·분산 배포를 선수 과제로 요구하지 않는다.

1. 공개 분류 데이터 하나를 선택한다. 기본 예시는 [scikit-learn breast cancer 데이터](https://scikit-learn.org/stable/modules/generated/sklearn.datasets.load_breast_cancer.html)이며 도구 검증용이다. 임상 판단·의료 효능이나 반도체 현장 성능으로 일반화하지 않는다.
2. feature·target·positive class·오류 비용·사용 가능 시점을 기록한다. 미래 정보·target 파생 feature가 없는지 확인한다.
3. fixed seed로 stratified train/validation/test=60/20/20을 만들고 sample ID·hash를 고정한다. 실제 시계열·동일 개체 데이터로 바꾸면 시간 또는 group split을 적용한다.
4. A=DummyClassifier, B=LogisticRegression pipeline, C=깊이를 제한한 DecisionTreeClassifier로 비교한다. 전처리 fit은 train 안에서만 수행한다. 작은 고정 후보만 평가하며 grid search는 필수 과제가 아니다.
5. validation에서 후보를 선택하고 threshold·지표·판정 규칙을 확정한 뒤 test를 한 번 평가한다. test 결과로 재선택하지 않는다.
6. 실패 원인·prediction·probability·latency·환경을 기록한다. 오류 사례를 읽고 추가 복잡성이 필요한지 판단한다.

## 5. 실험·평가

| 항목 | 사전 조건 | 기록·판정 |
|---|---|---|
| split 무결성 | train/validation/test ID 교집합 없음 | 0건, 중복·그룹 정책 확인 |
| 전처리 누수 | fit 대상은 train만 | pipeline 검사·fit 입력 기록 |
| baseline 비교 | 동일 split·feature·positive class | A/B/C의 confusion matrix·precision·recall·F1 |
| 후보 선택 | validation F1 최대, 차이 0.01 이내면 단순한 모델 우선 | test 확인 전 선택 근거 고정 |
| 안전 지표 | validation recall 기준 0.90을 실습용 가정으로 사전 고정 | 만족 후보 없으면 채택 보류; 현업 기준으로 오인하지 않음 |
| 최종 확인 | 선택 모델과 dummy를 test에서 평가 | F1 차이·recall·실패 사례 보고, 재튜닝 금지 |
| 재현성 | 같은 seed·환경에서 재실행 | split·prediction 동일 또는 원인 설명 |

실습용 채택 조건은 test F1이 dummy보다 높고 recall 0.90 이상인 경우다. 표본이 작으면 paired bootstrap으로 F1 차이의 95% CI를 보고하며 CI가 0을 포함하면 우월성 증거가 부족하다고 기록한다. 이 조건을 의료·제품 출시 기준으로 사용하지 않는다. 운영 p95·생산 일반화 성능을 주장하지 않는다.

누수·test 재사용·positive class 오류·재현성 미설명이 있으면 결론 보류한다. 결과가 없으면 수치를 만들어 넣지 않는다. 모델이 규칙·baseline보다 실용적 이득이 없으면 복잡한 모델 도입을 보류한다.

## 6. 산출물

- `docs/research/week-05-machine-learning.md`: ML 개념·문제 정의·오류 비용·선택 근거.
- `experiments/week05/manifest.json`: 데이터 출처·hash·split ID·seed·환경·commit.
- `experiments/week05/predictions.csv`: candidate·split·sample ID·정답·예측·확률.
- `experiments/week05/metrics.json`: confusion matrix·precision·recall·F1·CI·검증 상태.
- `experiments/week05/report.md`: baseline 비교·누수 점검·결정·실패 사례·한계.
- 분할·전처리·모델 실행·평가 코드와 필요한 검증.

이 목록은 이번 주 작성할 산출물이며 계획 생성이 구현·실험 완료를 뜻하지 않는다.

## 7. 시간표 · 10시간

| 날짜 | 활동 | 시간 | 종료 조건 |
|---|---|---:|---|
| 10/13 화 | S9 발췌, 문제 유형·데이터·target 정의 | 2시간 | 문제·positive class·오류 비용 |
| 10/14 수 | 선택 읽기·세미나·split 계약 | 1.5시간 | split ID·누수 금지 조건 |
| 10/15 목 | dummy·선형·트리 pipeline 구현 | 2시간 | 동일 입력 비교 실행 |
| 10/16 금 | validation 평가·모델·threshold 고정 | 2시간 | test 전 선택 기록 |
| 10/17 토 | test 평가·CI·재현성·오류 분석 | 1.5시간 | 원시 결과·hard gate |
| 10/18 일 | 보고서·6주차 입력 정리 | 1시간 | 채택·보류와 한계 |
| 10/19 월 | 정규 학습시간 배정 없음 | 0시간 | 보충 과제 없음 |

합계 10시간. 읽기 2시간 30분과 세미나 45분은 위 활동에 포함한다. 시간이 부족하면 선택 읽기를 생략하고 split·baseline·누수·최종 평가를 유지한다.

## 8. 완료 기준과 회고

- [ ] ML 문제 유형·feature·target·positive class를 설명했다.
- [ ] split과 전처리 fit 범위를 고정하고 누수를 차단했다.
- [ ] dummy·선형·트리를 같은 기준으로 비교했다.
- [ ] validation 선택과 test 최종 평가를 분리했다.
- [ ] 오류·불확실성·가설·미검증을 구분했다.
- [ ] 이전 과제를 이월하지 않았으며 딥러닝 본 실습은 6주차에 두었다.

회고 질문: 추가 복잡성이 줄이는 오류는 무엇인가? 어떤 feature가 실제 예측 시점에 없는가? 6주차 딥러닝 비교에서도 그대로 사용할 split·평가 계약은 무엇인가?

## 9. 월별·주차별 탐색

| 월 | 과목 | 주차 |
|---|---|---|
| [1개월차](https://cho-fam.com/docs/curriculum/month-01.html) | Research Methodology + CS Foundations | 1–4 · 운영상 완료 |
| [2개월차](https://cho-fam.com/docs/curriculum/month-02.html) | Machine Learning + Deep Learning + LLM Systems | 5 Machine Learning · 6 Deep Learning + Transformer · 7 Generation · 8 Model Serving |
| [3개월차](https://cho-fam.com/docs/curriculum/month-03.html) | Knowledge Engineering + RAG | 9 Information Retrieval · 10 Knowledge Engineering · 11 Vector Search · 12 GraphRAG·Reranking |
| [4개월차](https://cho-fam.com/docs/curriculum/month-04.html) | Software Architecture + Distributed Systems | 13 Software Architecture · 14 Distributed Systems · 15 Security Architecture · 16 ADR |
| [5개월차](https://cho-fam.com/docs/curriculum/month-05.html) | AI Agent Architecture | 17–20 |
| [6개월차](https://cho-fam.com/docs/curriculum/month-06.html) | Agent Architecture + Runtime Reliability | 21–24 |
| [7개월차](https://cho-fam.com/docs/curriculum/month-07.html) | Multi-Agent + MCP/A2A | 25–28 |
| [8개월차](https://cho-fam.com/docs/curriculum/month-08.html) | Human-AI Interaction | 29–32 |
| [9개월차](https://cho-fam.com/docs/curriculum/month-09.html) | AI Software Engineering | 33–36 |
| [10개월차](https://cho-fam.com/docs/curriculum/month-10.html) | Evaluation + LLMOps | 37–40 |
| [11개월차](https://cho-fam.com/docs/curriculum/month-11.html) | Enterprise AI Architecture | 41–44 |
| [12개월차](https://cho-fam.com/docs/curriculum/month-12.html) | Research Project + Thesis | 45–48 |

현재는 5주차이며 6주차 이후 HTML·MD 상세 파일은 해당 주차에만 생성한다. Firebase 배포는 사용자 수작업으로 진행하며 주간 자동 실행은 GitHub 반영까지 유지한다.
