TrendShift 딥다이브 · 2026-07-01

ML-For-Beginners 딥다이브
— 마이크로소프트가 만든 12주 26강 "고전 머신러닝" 커리큘럼

ML-For-Beginners는 딥러닝을 다루지 않는다. 대신 회귀·분류·클러스터링·NLP·시계열·강화학습이라는 "고전 머신러닝(Classic ML)"을 Scikit-learn 중심으로 12주에 걸쳐 가르치는 무료 오픈소스 커리큘럼이다. 전 세계 문화권의 실제 데이터(북미 호박 가격, 나이지리아 음악 취향, 아시아 요리, 유럽 호텔 리뷰 등)로 프로젝트 기반 학습을 하고, 모든 레슨에 프리/포스트 퀴즈 · 필기 노트(스케치노트) · 실습 노트북 · 과제 · 정답 코드가 딸려 있다. Microsoft Cloud Advocates 팀이 만들었고 40개 이상 언어로 자동 번역되며, R/Julia 버전 솔루션까지 함께 제공한다. (저장소: microsoft/ML-For-Beginners · Python/Jupyter Notebook · MIT License · GitHub 스타 수십만 개)
목차
  1. 프로젝트 한줄 요약
  2. 왜 주목받는가
  3. 기술 스택 전체 지도
  4. 아키텍처 심화 분석 — 커리큘럼 구조도
  5. 디렉토리 구조 해부
  6. 학습 포인트 (주제별)
  7. 시스템 요구사항
  8. 직접 해볼 수 있는 실습 과제
  9. 관련 기술 심화 학습 로드맵
  10. 핵심 키워드 사전
  11. 참고 링크

1프로젝트 한줄 요약

이 저장소가 대체 무엇인가.

핵심 메시지

"딥러닝 배우기 전에 반드시 거쳐야 할 기초 체력 훈련 — Scikit-learn으로 배우는 12주 26강 정규 커리큘럼."

ML-For-Beginners는 코드 프로젝트가 아니라 학습 자료집(교육 커리큘럼)이다. "1-Introduction"부터 "9-Real-World"까지 9개 모듈, 26개 레슨으로 구성되며, 각 레슨은 실제로 실행 가능한 Jupyter 노트북과 함께 온다. 신경망·트랜스포머 같은 딥러닝은 다루지 않고, 그 이전 단계인 회귀, 분류, 클러스터링, 자연어처리(고전 기법), 시계열, 강화학습에 집중한다.

비유하자면: 딥러닝이 "자동차 운전을 배우는 것"이라면, 이 커리큘럼은 "엔진이 어떻게 동작하는지, 기어는 왜 필요한지"를 먼저 이해시키는 과정이다. Scikit-learn이라는 표준 라이브러리 하나로 대부분의 실습을 진행하기 때문에, 복잡한 GPU·프레임워크 설정 없이 노트북 하나로 실습이 끝난다.

용어
고전 머신러닝 (Classic Machine Learning)
신경망(딥러닝) 이전부터 사용돼 온 통계·수학 기반 머신러닝 기법들을 통칭. 선형회귀, 로지스틱회귀, 결정트리, SVM, K-평균 클러스터링, 나이브베이즈 등이 해당한다. 데이터가 적어도 잘 동작하고, 결과 해석이 쉬우며, 학습 속도가 빠르다는 장점이 있어 실무에서도 여전히 널리 쓰인다. 이 커리큘럼의 핵심 라이브러리인 Scikit-learn이 바로 고전 ML 전용 도구다.

2왜 주목받는가

다른 ML 강의 대비 장점 · 트렌딩 이유.

ML 입문 강의는 시중에 셀 수 없이 많다. 그런데 이 저장소가 GitHub에서 스타 수십만 개를 받으며 꾸준히 트렌딩에 오르는 이유는 "완결성"에 있다. 유튜브 강의나 블로그 글은 파편적이지만, 이 커리큘럼은 주제 선정 → 데이터 → 강의 → 실습 → 퀴즈 → 과제 → 정답까지 하나의 완결된 학습 사이클을 26번 반복 제공한다. 게다가 Microsoft 공식 저장소라는 신뢰도, MIT 라이선스로 자유로운 재사용, 40개 이상 언어 자동 번역이라는 접근성까지 갖췄다.

다른 ML 학습 자료 대비 비교

기준유튜브/블로그 튜토리얼대학 MOOC (Coursera 등)ML-For-Beginners
비용무료(광고)대부분 유료/인증서 유료완전 무료 (MIT License)
구조화된 커리큘럼파편적✓ (12주 26강 고정 순서)
실습 노트북 제공일부일부✓ (레슨마다 notebook.ipynb + 정답)
프리/포스트 퀴즈일부✓ (52개 퀴즈, 레슨마다 2개)
다국어 지원드묾일부✓ (40개+ 언어 자동 번역)
R / Julia 버전 병행✓ (대부분 레슨에 solution/R)
실제 프로젝트(웹앱 배포까지)일부일부✓ (Flask 웹앱, 추천 시스템)
딥러닝 포함 여부제각각제각각✗ (의도적 배제 — 고전 ML 전용)
이 커리큘럼의 핵심 차별점 세 가지
① 프로젝트 기반 + ② 프리/포스트 퀴즈 + ③ 세계 문화권 데이터로 재미 부여

저자들은 README에서 두 가지 교육학적 원칙을 명시한다 — hands-on project-based(직접 만들어보며 배우기)frequent quizzes(잦은 퀴즈). 여기에 "세계를 여행하며 배운다"는 테마를 더해, 북미 호박 가격·나이지리아 음악·아시아 요리·유럽 호텔 리뷰 같은 실제 데이터로 학습 흥미를 유지한다. 이 조합이 "그냥 읽는 강의"가 아니라 "직접 실행해서 확인하는 강의"로 만드는 핵심이다.

이런 상황을 상상해봐

ML을 처음 배우는데 "선형회귀부터 신경망까지 다 알려주는" 강의를 들었더니, 정작 Scikit-learn 하나도 제대로 못 다루는 채로 끝났다면? 이 커리큘럼은 반대로 접근한다. 딥러닝은 아예 빼고, 회귀·분류·클러스터링만 12주 동안 깊게 판다. 8주차에 도달하면 "북미 호박 가격을 예측하는 모델"과 "그 모델을 서비스하는 Flask 웹앱"을 스스로 만들 수 있게 된다.

딥러닝이 궁금해지면 그때 자매품인 AI-For-Beginners로 넘어가면 된다 — 이 저장소 README가 직접 안내하는 다음 단계다.

3기술 스택 전체 지도

Python/Scikit-learn 중심 + R/Julia 대체 경로 + 웹앱 + 퀴즈 앱 각각 상세.

핵심 Python / 데이터 사이언스 스택

라이브러리역할주로 쓰이는 모듈
scikit-learn커리큘럼의 심장 — 회귀·분류·클러스터링 전 알고리즘2-Regression ~ 5-Clustering 전체
pandasCSV 데이터 로드·정제·가공 (DataFrame)거의 모든 notebook.ipynb 1번째 셀
numpy배열 연산, 수치 계산 기반회귀 계수 계산, 특성 배열 변환
matplotlib산점도·선그래프 등 기본 시각화2-Regression (가격 vs 날짜 산점도 등)
seaborn고급 통계 시각화 (swarm plot, heatmap 등)4-Classification, 5-Clustering
statsmodels / pmdarimaARIMA 시계열 모델링7-TimeSeries/2-ARIMA
NLTK / TextBlob고전 자연어처리 — 토큰화, 감성분석6-NLP 전체
OpenAI Gym (Gymnasium)강화학습 환경 시뮬레이션 (CartPole 등)8-Reinforcement/2-Gym
Responsible AI Toolbox모델 디버깅 — 공정성/에러 분석 대시보드9-Real-World/2-Debugging-ML-Models
Flask학습한 모델을 웹앱으로 서빙3-Web-App/1-Web-App
pickle학습된 Scikit-learn 모델 저장/로드Flask 앱에서 ufo-model.pkl 로드
Jupyter Notebook대화형 실습 환경 — 레슨마다 notebook.ipynb전체 51개 노트북

R 언어 병행 트랙

도구역할
tidyverse데이터 조작·시각화 (dplyr, ggplot2 등)
tidymodelsR의 Scikit-learn 격 — 모델링 프레임워크
caret분류/회귀 모델 학습·평가 통합 인터페이스
R Markdown (.Rmd)코드+설명+출력을 한 문서에 결합 (YAML 헤더 + 코드 청크)
R Notebook (.ipynb)일부 레슨은 R 커널 Jupyter 노트북으로도 제공
용어
R Markdown (.Rmd)
R 코드 청크(chunk)와 Markdown 설명 텍스트, 그리고 출력 포맷을 지정하는 YAML 헤더를 하나의 문서에 combine한 파일 형식. 렌더링하면 PDF·HTML·Word 등으로 변환된다. 이 저장소는 대부분의 Python 레슨에 대응하는 R 버전을 solution/R/lesson_N.Rmd로 함께 제공하며, 미리 렌더링된 lesson_N.html도 같이 들어있다.

웹앱 스택 (3-Web-App)

구성요소역할
Flask (Python)UFO 목격 데이터로 학습한 분류 모델을 REST 형태로 서빙하는 초경량 백엔드
Jinja2 템플릿 (templates/index.html)사용자 입력 폼 → 예측 결과 렌더링
순수 CSS (static/css/styles.css)프레임워크 없이 직접 작성한 스타일시트
pickle 모델 파일노트북에서 학습한 모델을 .pkl로 저장 후 Flask가 로드

퀴즈 앱 스택 (quiz-app/)

구성요소역할
Vue 352개 퀴즈(레슨마다 프리/포스트 각 1개, 3문항씩)를 구동하는 SPA 프레임워크
vue-router 3퀴즈 간 라우팅 (public/routes.json 기반)
vue-i18n 8퀴즈 다국어 표시
@vue/cli-service 5빌드·개발 서버 (webpack 기반)
ESLint코드 스타일 검사 (npm run lint)
Azure Static Web Apps공식 배포 대상 — GitHub Actions로 자동 배포

문서 사이트 · 인프라

도구역할
Docsify빌드 단계 없이 저장소 루트의 Markdown을 그대로 문서 사이트로 서빙 (docsify serve)
GitHub Actions (Co-op Translator)Azure AI/OpenAI 기반 자동 번역 — main 브랜치 푸시 시 40개+ 언어로 자동 갱신
GitHub Discussions학습자들이 PAT(진행 평가 도구)를 공유하는 커뮤니티 공간
PDF 변환 (docsifytopdf.js)전체 커리큘럼을 PDF 한 장으로 변환해 배포

4아키텍처 심화 분석 — 커리큘럼 구조도

이 저장소의 "아키텍처"는 코드 구조가 아니라 학습 설계 구조다.

12주 → 9개 모듈 → 26개 레슨 전체 지도

Week 1 1-Introduction (4강) 개론·역사·공정성·기법 Week 2~4 2-Regression (4강) 툴 → 데이터 → 선형회귀 → 로지스틱회귀 Week 4 3-Web-App (1강) 학습한 모델을 Flask 웹앱으로 배포 Week 5~7 4-Classification (4강) 분류 개론 → 분류기 1 → 분류기 2 → 추천앱 Week 7~8 5-Clustering (2강) 클러스터링 개론 → K-Means Week 8~9 6-NLP (5강) NLP 개론 → 태스크 → 번역/감성 → 리뷰 1·2 Week 9~10 7-TimeSeries (3강) 개론 → ARIMA → SVR Week 11 8-Reinforcement (2강) Q-Learning → OpenAI Gym Postscript 9-Real-World (2강) 실전 응용 사례 → RAI 모델 디버깅 ───── 26개 레슨 (+ 후기 2개) = 총 12주 커리큘럼

레슨 1개의 학습 사이클 (모든 레슨이 이 패턴을 따른다)

┌─────────────────────────────────────────────────────┐ │ ① 프리렉처 퀴즈 (Pre-lecture quiz) │ │ ff-quizzes.netlify.app — 배경지식 점검, 학습 의도 설정│ └───────────────────────┬───────────────────────────---┘ ▼ ┌─────────────────────────────────────────────────────┐ │ ② 강의 본문 (README.md) │ │ - 개념 설명 + 스케치노트(선택) + 보충 영상(선택) │ │ - 지식 체크(knowledge check)를 본문 중간에 삽입 │ └───────────────────────┬───────────────────────────---┘ ▼ ┌─────────────────────────────────────────────────────┐ │ ③ 실습 노트북 (notebook.ipynb) │ │ - README 설명을 그대로 코드로 실행 │ │ - 프로젝트 기반 레슨은 단계별 빌드 가이드 포함 │ └───────────────────────┬───────────────────────────---┘ ▼ ┌─────────────────────────────────────────────────────┐ │ ④ 도전 과제 (Challenge) + 심화 자료 (Supplemental) │ │ README 하단에 "🚀 Challenge" 섹션으로 명시 │ └───────────────────────┬───────────────────────────---┘ ▼ ┌─────────────────────────────────────────────────────┐ │ ⑤ 과제 (assignment.md) │ │ 별도 파일로 분리된 확장 실습 — 채점 루브릭 포함 │ └───────────────────────┬───────────────────────────---┘ ▼ ┌─────────────────────────────────────────────────────┐ │ ⑥ 포스트렉처 퀴즈 (Post-lecture quiz) │ │ 같은 퀴즈 앱, 다른 문항 — 학습 정착도 재확인 │ └───────────────────────┬───────────────────────────---┘ ▼ (막히면) solution/notebook.ipynb 확인 (R로 풀고 싶으면) solution/R/lesson_N.Rmd 확인

핵심 설계 패턴 — "프로젝트 기반 학습(Project-Based Pedagogy)"

패턴 1

이중 퀴즈 구조 (Pre/Post Quiz)

모든 레슨 시작 전에 배경지식을 점검하는 프리렉처 퀴즈가 있고, 끝난 후 같은 주제를 다른 각도로 묻는 포스트렉처 퀴즈가 있다. 총 52개 퀴즈(26레슨 × 2), 문항당 3문제. 심리학적으로 "사전 퀴즈는 학습 의도를 설정하고, 사후 퀴즈는 기억 정착을 돕는다"는 원리를 그대로 적용한 설계다.

패턴 2

같은 데이터, 여러 레슨에 걸친 스토리텔링

2-Regression 모듈은 "북미 호박 가격" 데이터 하나로 4강을 이어간다 — 툴 준비(1강) → 데이터 정제(2강) → 선형/다항 회귀(3강) → 로지스틱 회귀(4강). 4-Classification은 "아시아·인도 요리" 데이터로 마찬가지로 4강을 이어간다. 매 강의 새 데이터셋을 배우는 부담 없이, 같은 데이터를 점점 더 어려운 기법으로 다시 보게 만든다.

패턴 3

솔루션 격리 (solution/ 폴더 분리)

정답 코드는 항상 별도의 solution/ 폴더에 있다. 레슨 루트의 notebook.ipynb는 학습자가 직접 채워야 하는 실습용이고, solution/notebook.ipynb가 완성된 정답이다. R 학습자를 위한 solution/R/, Julia 학습자를 위한 solution/Julia/도 같은 구조로 병렬 제공된다. "먼저 스스로 풀고, 막히면 정답을 본다"는 학습 순서를 파일 구조로 강제한다.

패턴 4

언어 무관 커리큘럼 (Python 우선, R/Julia 선택)

README는 "레슨은 주로 Python으로 작성되지만 많은 레슨이 R로도 제공된다"고 명시한다. R 레슨을 원하면 solution 폴더에서 .Rmd(R Markdown) 확장자를 찾으면 된다. 즉 같은 개념(예: 로지스틱 회귀)을 Python 생태계와 R 생태계 양쪽에서 동시에 배울 수 있게, 커리큘럼 설계 단계에서부터 언어 이중화를 반영했다.

패턴 5

번역 자동화 파이프라인 분리

사람이 직접 번역하지 않는다. .github/workflows/co-op-translator.yml 워크플로우가 main 브랜치에 푸시될 때마다 Azure AI/OpenAI 서비스로 40개 이상 언어의 translations/<lang>/README.md를 자동 생성한다. AGENTS.md는 "번역 파일을 수동으로 절대 편집하지 말 것"을 명시한다 — 콘텐츠 원본과 번역본의 생성 경로를 완전히 분리한 설계다.

5디렉토리 구조 해부

레슨 폴더 명명 규칙 · translations/ · quiz-app/ · solution/ 분석.

ML-For-Beginners/ ├── 1-Introduction/ # 모듈 1 — 개론 (4개 하위 레슨 폴더) │ ├── 1-intro-to-ML/ # "N-제목" 형식의 레슨 폴더 명명 규칙 │ │ ├── README.md # 강의 본문 (프리/포스트 퀴즈 링크 포함) │ │ ├── assignment.md # 과제 │ │ └── images/ # 강의 삽화 │ ├── 2-history-of-ML/ │ ├── 3-fairness/ │ ├── 4-techniques-of-ML/ │ └── README.md # 모듈 개요 + 레슨 목록 ├── 2-Regression/ # 모듈 2 — 회귀 (실습 노트북 포함 시작) │ ├── 1-Tools/ ~ 4-Logistic/ │ │ ├── notebook.ipynb # 학습자용 실습 노트북 │ │ ├── solution/ │ │ │ ├── notebook.ipynb # Python 정답 │ │ │ ├── R/ # R Markdown 정답 (.Rmd + 렌더링된 .html) │ │ │ └── Julia/ # Julia 정답 (일부 레슨만) │ │ └── images/ │ └── data/US-pumpkins.csv # 모듈 전체가 공유하는 데이터셋 ├── 3-Web-App/1-Web-App/ │ └── solution/web-app/ # Flask 앱 전체 (app.py, templates/, static/) ├── 4-Classification/ ~ 8-Reinforcement/ # 위와 동일한 레슨 폴더 패턴 반복 ├── 9-Real-World/ # Postscript — 번호 대신 "Applications" 명명 │ ├── 1-Applications/ │ └── 2-Debugging-ML-Models/ # Responsible AI 대시보드 실습 ├── quiz-app/ # Vue 3 SPA — 52개 퀴즈 독립 애플리케이션 │ ├── src/{components,views,router}/ │ └── public/routes.json ├── translations/ # 40개+ 언어별 완전 미러 (자동 생성, 직접 편집 금지) │ └── ko/, ja/, zh-CN/, es/ ... # 각 언어마다 전체 폴더 구조 복제 ├── docs/ # Docsify 사이드바 설정 (_sidebar.md) ├── pdf/ # 커리큘럼 전체 PDF 변환본 ├── for-teachers.md # 교사용 활용 가이드 (GitHub Classroom 등) ├── TROUBLESHOOTING.md # 설치·실행 문제 해결 가이드 ├── AGENTS.md # AI 코딩 에이전트용 저장소 안내서 └── index.html # Docsify 문서 사이트 진입점
용어
레슨 폴더 명명 규칙
각 모듈 폴더(예: 4-Classification) 안의 하위 레슨은 N-주제명 형식으로 번호가 매겨진다(1-Introduction, 2-Classifiers-1 등). 모듈 번호와 레슨 번호가 조합되면 README의 26강 표에 있는 "Lesson Number"(01~25 + Postscript)와 매핑된다. 파일 시스템 순서 = 학습 순서로 설계한 것.
용어
translations/ 완전 미러 구조
번역은 README 요약이 아니라 저장소 전체 구조를 언어별로 그대로 복제한다. 예를 들어 8-Reinforcement/1-QLearning/translations/README.ko.md처럼, 레슨 폴더 안에 translations/ 서브폴더가 따로 있고 그 안에 언어 코드가 붙은 파일이 들어간다. 저장소 전체를 클론하면 용량이 크게 늘어나서, README가 git sparse-checkout으로 번역 없이 받는 방법을 별도 안내할 정도다.

6학습 포인트 (주제별)

각 ML 주제에서 실제로 무엇을 배우는가 + 실습 아이디어.

1. 회귀 (Regression) — 2-Regression

북미 호박 가격 데이터로 선형회귀 → 다항회귀 → 로지스틱회귀 순서로 진행한다. 원본 데이터는 지저분한 실제 시장 데이터(단위 불일치, 결측치)라서, 첫 단계부터 데이터 정제(cleaning)를 실습하게 만든다.

# 2-Regression/3-Linear/notebook.ipynb 핵심 패턴
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
lin_reg = LinearRegression()
lin_reg.fit(X_train, y_train)
pred = lin_reg.predict(X_test)
print('MSE:', mean_squared_error(y_test, pred))

배울 것: train_test_split 데이터 분할, 선형회귀 계수 해석, 다항 특성 변환(PolynomialFeatures), MSE/RMSE 평가지표, 로지스틱회귀로 분류 경계 그리기.

2. 웹앱 배포 — 3-Web-App

노트북에서 학습만 하고 끝나지 않는다. UFO 목격 데이터로 학습한 분류 모델을 pickle로 저장하고, Flask로 감싸 실제 웹 서비스로 만든다. "모델 학습"과 "모델 서빙"이 별개의 기술임을 체감하는 유일한 레슨이다.

배울 것: pickle.dump/load로 모델 직렬화, Flask 라우팅(@app.route), HTML 폼 → 예측 API 연결, 최소 프론트엔드(Jinja2 템플릿) 작성.

3. 분류 (Classification) — 4-Classification

아시아·인도 요리 데이터로 여러 분류기를 비교한다. 마지막 레슨(4-Applied)에서는 배운 분류 모델로 "재료를 입력하면 어떤 요리인지 추천하는 웹앱"까지 만든다.

배울 것: 여러 분류 알고리즘 비교(로지스틱회귀, SVM, 결정트리, 랜덤포레스트 등), 혼동행렬(Confusion Matrix)과 ROC 커브로 성능 비교, 클래스 불균형 다루기, 분류 모델을 추천 시스템으로 응용.

4. 클러스터링 (Clustering) — 5-Clustering

나이지리아 음악 스트리밍 데이터(Spotify에서 스크랩)로 비지도학습을 처음 접한다. 정답 레이블이 없는 데이터에서 패턴을 찾는 것이 지금까지의 회귀·분류와 근본적으로 다른 점이다.

# 5-Clustering/2-K-Means 핵심 패턴
from sklearn.cluster import KMeans

wcss = []
for i in range(1, 11):
    kmeans = KMeans(n_clusters=i, init='k-means++', random_state=42)
    kmeans.fit(X)
    wcss.append(kmeans.inertia_)
# wcss를 그려서 "엘보우 포인트"로 최적 클러스터 수 결정

배울 것: 비지도학습 vs 지도학습 개념 차이, K-Means 알고리즘 동작 원리, 엘보우 메서드로 K값 결정, 클러스터 시각화(2D 산점도로 차원 축소 없이).

5. 자연어처리 (NLP) — 6-NLP

딥러닝 기반 트랜스포머 이전의 고전 NLP 기법을 다룬다. 첫 레슨은 노트북 대신 순수 Python 스크립트(bot.py)로 규칙 기반 챗봇을 만들며 시작하고, 이후 제인 오스틴 텍스트로 번역·감성분석, 호텔 리뷰로 실전 감성분석을 두 차례에 걸쳐 심화한다.

배울 것: 토큰화(tokenization), 규칙 기반 대화 시스템 설계, TextBlob으로 감성 점수 계산, 실제 리뷰 텍스트의 노이즈 처리(다국어 혼재, 이모지 등).

6. 시계열 예측 (Time Series) — 7-TimeSeries

세계 전력 사용량 데이터로 ARIMA와 SVR(Support Vector Regressor) 두 가지 접근법을 비교한다. 이 모듈만 유일하게 environment.yaml(Conda 환경 파일)과 별도의 common/utils.py 유틸리티 모듈을 포함해, 실전 프로젝트에 가까운 코드 구성을 보여준다.

배울 것: 시계열 데이터의 정상성(stationarity) 개념, ARIMA(p,d,q) 파라미터 튜닝, 시계열을 지도학습 문제로 변환해 SVR 적용, 시계열 전용 train/test 분할(시간 순서 유지).

7. 강화학습 (Reinforcement Learning) — 8-Reinforcement

"피터가 늑대를 피해 도망치는" 보드게임을 직접 구현(rlboard.py)하며 Q-Learning 알고리즘을 밑바닥부터 배운다. 두 번째 레슨은 OpenAI Gym(Gymnasium)의 CartPole 환경으로 표준 RL 라이브러리 사용법으로 넘어간다.

배울 것: 벨만 방정식(Bellman Equation)과 Q-테이블, 탐험 vs 활용(exploration vs exploitation) 트레이드오프, OpenAI Gym 표준 인터페이스(step/reset/render), 보상 함수 설계.

8. 실전 응용 & 모델 디버깅 — 9-Real-World

Postscript 모듈. 1강은 고전 ML이 실제로 어디에 쓰이는지 사례를 정리하고, 2강은 Responsible AI(RAI) 대시보드로 이미 학습한 모델의 공정성·에러 분포·반사실적 설명(counterfactual)을 디버깅하는 실습을 다룬다. 지금까지 "모델을 만드는 법"을 배웠다면, 여기서는 "만든 모델을 검증하는 법"을 배운다.

배울 것: 모델 에러 분석(Error Analysis) 히트맵, 데이터/특성 코호트별 성능 비교, 공정성(fairness) 지표 해석, What-If 반사실적 분석으로 개별 예측 설명.

7시스템 요구사항

Python 환경 · Jupyter · 노트북 실행 방법.

항목요구사항
Python 버전3.8 이상 (AGENTS.md 권장)
필수 패키지jupyter, scikit-learn, pandas, numpy, matplotlib, seaborn
레슨별 추가 패키지Flask(웹앱), NLTK/TextBlob(NLP), statsmodels/pmdarima(시계열), gymnasium(강화학습)
R 환경(선택)R + RStudio 또는 Jupyter R 커널(IRkernel), tidyverse/tidymodels/caret 패키지
퀴즈 앱 실행 환경(선택)Node.js + npm (Vue 3 / @vue/cli-service 5)
문서 사이트(선택)Docsify CLI (npm install -g docsify-cli)
하드웨어일반 노트북/PC로 충분 — GPU 불필요 (딥러닝을 다루지 않기 때문)
디스크 용량번역 포함 풀 클론은 용량이 큼 → sparse-checkout으로 !translations !translated_images 제외 권장
실행 방법 요약
노트북 하나면 끝 — 무거운 인프라 불필요

레슨 폴더로 이동해 jupyter notebook notebook.ipynb 한 줄이면 실습이 시작된다. Colab에 업로드해서 돌려도 무방하다. 클라우드 GPU, Docker, 별도 서버 설정이 필요 없다는 점이 "입문자용"이라는 이름값을 하는 핵심 이유다.

현실적 주의사항
전체 클론은 무겁다 — 번역 파일 때문

40개 이상 언어의 전체 폴더 미러가 포함돼 있어 일반 git clone은 매우 느리고 용량이 크다. README가 공식으로 안내하는 git clone --filter=blob:none --sparsegit sparse-checkout set --no-cone '/*' '!translations' '!translated_images' 방식을 쓰면 훨씬 빠르게 받을 수 있다.

8직접 해볼 수 있는 실습 과제

난이도별 5개 — 커리큘럼 활용법.

난이도: 입문

실습 1 — 첫 레슨을 퀴즈부터 과제까지 완주하기1일

1-Introduction/1-intro-to-ML부터 시작한다. 프리퀴즈 → README 읽기 → assignment.md 확인 → 포스트퀴즈까지 학습 사이클 하나를 처음부터 끝까지 그대로 따라가 본다.

git clone --filter=blob:none --sparse https://github.com/microsoft/ML-For-Beginners.git
cd ML-For-Beginners
git sparse-checkout set --no-cone '/*' '!translations' '!translated_images'
cat 1-Introduction/1-intro-to-ML/README.md

확인 포인트: README 안의 "Pre-lecture quiz"·"Post-lecture quiz" 링크를 실제로 클릭해서 3문항을 풀어본다. 사이클 전체를 한 번 겪어야 이후 레슨이 왜 이렇게 설계됐는지 체감된다.

난이도: 초급

실습 2 — 호박 가격 회귀 노트북 직접 실행 + 정답과 비교2~3일

2-Regression/3-Linear/notebook.ipynb를 Jupyter로 열어 셀을 순서대로 실행한다. 특성(Feature)을 하나 바꿔보고(예: Month 대신 DayOfYear) 결과가 어떻게 달라지는지 비교한 뒤, solution/notebook.ipynb와 비교한다.

cd 2-Regression/3-Linear
jupyter notebook notebook.ipynb
# 실행 후 solution/notebook.ipynb 와 diff 비교

확인 포인트: MSE 값이 어떻게 바뀌는지, 산점도의 회귀선 기울기가 왜 달라지는지 직접 눈으로 확인한다.

난이도: 중급

실습 3 — Flask 웹앱을 로컬에서 띄우고 모델 교체해보기3~5일

3-Web-App/1-Web-App/solution/web-app을 로컬에서 실행하고, UFO 모델 대신 직접 다른 CSV(예: 캐글의 다른 분류 데이터셋)로 학습한 모델로 교체해본다.

cd 3-Web-App/1-Web-App/solution/web-app
pip install -r requirements.txt
python app.py
# http://127.0.0.1:5000 접속 후 폼 제출 테스트

확인 포인트: app.pypickle.load 경로와 predict() 함수의 출력 매핑(countries 리스트)을 자신의 모델 클래스에 맞게 수정할 수 있는지 확인.

난이도: 중급

실습 4 — R 버전으로 같은 레슨 다시 풀어보기1주

Python으로 이미 푼 로지스틱 회귀 레슨(2-Regression/4-Logistic)을 R로 다시 풀어본다. solution/R/lesson_4.html을 먼저 훑어본 뒤, RStudio에서 tidymodels로 직접 구현한다.

# R 콘솔에서
install.packages(c("tidyverse", "tidymodels"))
# solution/R/ 안의 .Rmd 파일을 RStudio로 열어 Knit 실행

확인 포인트: 같은 개념(로지스틱 회귀)이 Python(Scikit-learn)과 R(tidymodels)에서 API 철학이 어떻게 다른지 비교 노트를 작성해본다.

난이도: 고급

실습 5 — 새로운 데이터셋으로 미니 커리큘럼 설계해보기2주+

이 저장소의 설계 패턴(프리퀴즈 → README → 노트북 → 과제 → 포스트퀴즈)을 그대로 차용해, 자신이 관심 있는 도메인(예: 한국 프로야구 기록, 국내 부동산 시세)으로 회귀+분류+클러스터링 3강짜리 미니 커리큘럼을 직접 설계한다.

my-mini-curriculum/
├── 1-Regression/{README.md, notebook.ipynb, assignment.md, solution/}
├── 2-Classification/{...}
└── 3-Clustering/{...}

확인 포인트: 각 강의마다 "지식 체크" 질문 최소 2개, "도전 과제" 1개를 반드시 포함시켜 이 저장소의 교육학적 구조를 그대로 재현했는지 스스로 점검한다.

9관련 기술 심화 학습 로드맵

이 커리큘럼 완주 이후 딥러닝 · MLOps로 확장하는 주차별 경로.

1~3주차 — Scikit-learn 기초 다지기 (병행 학습)

목표: 이 저장소의 2~5모듈(회귀·분류·클러스터링)을 실습하며 Scikit-learn API 패턴(fit/predict/transform)에 완전히 익숙해진다.

자료: Scikit-learn 공식 사용자 가이드(scikit-learn.org/stable/user_guide.html), 이 저장소의 solution 노트북들.

실습: 매 레슨의 notebook.ipynb를 직접 실행 + assignment.md 과제 제출.

4~6주차 — NLP·시계열·강화학습 심화

목표: 6~8모듈을 완주하고, 고전 기법의 한계(문맥 이해 부족, 장기 의존성 문제 등)를 직접 체감한다.

자료: 저장소의 6-NLP·7-TimeSeries·8-Reinforcement 레슨 전체, NLTK 공식 문서.

실습: bot.py 챗봇 확장, ARIMA 파라미터 그리드서치, Q-Learning 보드를 다른 맵으로 변형.

7~8주차 — 모델 디버깅 · Responsible AI

목표: 9-Real-World/2-Debugging-ML-Models를 완주하고, "정확도 높은 모델"과 "신뢰할 수 있는 모델"의 차이를 이해한다.

자료: Microsoft Responsible AI Toolbox 문서, Fairlearn 라이브러리.

실습: 자신이 만든 분류 모델에 RAI 대시보드를 붙여 에러 코호트 분석해보기.

9~12주차 — 딥러닝으로 전환 (AI-For-Beginners)

목표: 고전 ML의 한계를 넘어 신경망·CNN·트랜스포머로 넘어간다. 이 저장소 README가 직접 추천하는 자매 커리큘럼이다.

자료: microsoft/AI-For-Beginners(딥러닝 커리큘럼), microsoft/generative-ai-for-beginners(생성형 AI).

실습: 6-NLP에서 배운 감성분석을 트랜스포머 기반 모델(예: Hugging Face)로 다시 구현해 성능 비교.

13주차~ — 데이터 사이언스 기초 병행

목표: 모델링 이전 단계인 데이터 수집·정제·탐색적 분석(EDA) 역량을 별도로 강화한다.

자료: microsoft/Data-Science-For-Beginners — 이 저장소와 나란히 병행하도록 README가 권장하는 짝꿍 커리큘럼.

실습: 이 저장소의 pumpkin/nigerian-songs 데이터셋을 Data-Science-For-Beginners의 EDA 기법으로 처음부터 다시 정제해보기.

10핵심 키워드 사전

이 저장소를 이해하는 데 필요한 핵심 용어.

지도학습
Supervised Learning
입력(X)과 정답(y) 쌍으로 이루어진 데이터로 모델을 학습시키는 방식. 이 커리큘럼의 회귀·분류 모듈이 모두 지도학습이다. 예: 호박의 특징(입력)과 실제 가격(정답)으로 가격 예측 모델을 학습.
회귀
Regression
연속적인 숫자 값(가격, 온도, 확률 등)을 예측하는 지도학습 기법. 선형회귀는 데이터 점들을 가장 잘 설명하는 직선을, 다항회귀는 곡선을 찾는다. 2-Regression 모듈의 핵심 주제.
분류
Classification
데이터를 미리 정해진 카테고리(클래스) 중 하나로 나누는 지도학습 기법. "이 요리는 태국 요리인가 인도 요리인가"처럼 이산적인 값을 예측한다. 4-Classification 모듈의 핵심 주제이며, 로지스틱 회귀도 사실 분류 기법의 일종이다.
클러스터링
Clustering
정답 레이블 없이 데이터의 유사성만으로 그룹을 자동으로 나누는 비지도학습 기법. K-Means가 대표적이며, 몇 개의 그룹(K)으로 나눌지 미리 정해야 한다는 특징이 있다. 5-Clustering 모듈에서 나이지리아 음악 취향을 그룹화하는 데 사용.
Scikit-learn
사이킷런
Python의 대표적인 고전 머신러닝 라이브러리. 회귀, 분류, 클러스터링 알고리즘을 모델.fit(X, y)모델.predict(X_new)라는 동일한 인터페이스로 통일해 제공한다. 딥러닝 프레임워크(PyTorch, TensorFlow)와 달리 GPU 없이 CPU로도 충분히 빠르게 동작한다.
특성공학
Feature Engineering
원본 데이터를 모델이 더 잘 학습할 수 있는 형태로 가공하는 작업. 예: 날짜 문자열을 "월(Month)"이나 "연중 몇 번째 날(DayOfYear)" 숫자로 변환. 2-Regression/2-Data 레슨에서 호박 가격 데이터를 정제하며 집중적으로 다룬다.
과적합
Overfitting
모델이 학습 데이터의 세세한 잡음까지 외워버려서, 새로운 데이터(테스트셋)에서는 오히려 성능이 떨어지는 현상. train_test_split으로 학습/평가 데이터를 분리하는 이유가 바로 이 과적합을 조기에 발견하기 위해서다.
혼동행렬
Confusion Matrix
분류 모델의 예측 결과를 "실제 정답 vs 모델 예측"의 표로 정리한 것. 참양성(TP)·거짓양성(FP)·참음성(TN)·거짓음성(FN) 네 칸으로 나뉘며, 여기서 정밀도(Precision)·재현율(Recall)·F1 점수가 계산된다. 4-Classification 모듈에서 여러 분류기 성능을 비교하는 핵심 도구.
벨만 방정식
Bellman Equation
강화학습에서 "현재 상태의 가치 = 즉시 보상 + 할인된 미래 가치"로 정의하는 핵심 수식. Q-Learning 알고리즘이 Q값(상태-행동 가치)을 갱신할 때 이 방정식을 반복 적용한다. 8-Reinforcement/1-QLearning 레슨의 핵심 개념.
PAT
Progress Assessment Tool
이 커리큘럼이 제안하는 자기 성찰용 루브릭. 레슨 그룹을 완주한 뒤 GitHub Discussions에 PAT를 채워 "내가 무엇을 배웠는지"를 기록하고 다른 학습자와 공유하는 "learn out loud"(소리 내어 학습하기) 활동에 사용된다.

11참고 링크

더 깊이 파고들기 위한 공식 자료.