중간 점검: 머신러닝 트랙 (문제 15개와 풀이)
회귀 · 분류 · 트리 · 앙상블 · 군집 · PCA · 이상 탐지 · 추천을 15문제로 점검하는 ML 중간 점검
먼저 알아야 할 것
다루는 내용
머신러닝 트랙 전체를 점검하는 문제 15개와 보너스 코드 읽기 문제입니다. 최소제곱 직선, 로지스틱 · 소프트맥스 손실, 평가 지표, 데이터 누수, kNN · 나이브 베이즈, SVM 마진, 지니 · 정보 이득, 부트스트랩, XGBoost 잎 점수, k-평균, PCA, IQR · 추천 지표를 다룹니다. 문제마다 단계별 풀이와 복습할 수업 링크를 달았습니다.
해설
중간 점검: 머신러닝 트랙 (문제 15개와 풀이)
선형 회귀부터 추천 시스템까지, 머신러닝 트랙의 핵심을 문제 15개로 점검합니다. 개념 문제 · 손계산 문제 · 코드 읽기 문제를 섞었고, 문제마다 바로 아래에 단계별 풀이와 다시 볼 수업 링크를 달았습니다. 계산 답은 모두 파이썬으로 다시 확인했습니다.
| 항목 | 내용 |
|---|---|
| 범위 | 머신러닝 트랙 전체(146 선형 회귀 ~ 156 추천 시스템, 131 평가 · 과적합, 81 XGBoost) |
| 트랙 · 수준 | 머신러닝 · 기초 |
| 문제 구성 | 개념 5 · 계산 8 · 코드 읽기 2 |
| 걸리는 시간 | 40~60분(풀이 확인 포함) |
| 준비물 | 종이와 펜, 계산기(로그 · 지수) |
들어가기 전에
이 점검은 아래 수업을 마쳤다고 보고 냅니다. 막히는 문제는 해당 수업으로 돌아가 다시 보세요.
- 선형 회귀 · 로지스틱 회귀와 소프트맥스 · 모델 평가와 과적합 · 특성 공학과 데이터 전처리
- k-최근접 이웃과 나이브 베이즈 · 서포트 벡터 머신과 커널 · 결정 트리 · 앙상블 · XGBoost
- 군집화 · 차원 축소 · 이상 탐지 · 추천 시스템 · 직접 해 보기: 손글씨 숫자 분류기
푸는 법
- 풀이를 가리고 먼저 답을 적습니다. 계산 문제는 소수 셋째 자리까지면 충분합니다.
- 풀이와 맞춰 보고, 틀린 문제의 수업 링크를 메모합니다.
- 맨 아래 '점수별 다음 걸음'을 따라 복습합니다.
문제
문제 1 (계산 · 선형 회귀)
점 에 직선 를 최소제곱으로 맞추면 와 는?
풀이
- ,
- 정규방정식 로 풀어도 입니다. → 선형 회귀
문제 2 (개념 · 정규화)
특성 100개 중 실제로 쓸모 있는 것은 5개뿐인 것 같습니다. 릿지(L2)와 라쏘(L1) 중 무엇이 알맞고, 왜 그런가요?
풀이
- 라쏘입니다. L1 벌점 는 많은 가중치를 정확히 0으로 만들어 특성 선택 효과를 냅니다.
- 릿지는 가중치를 0 쪽으로 줄이지만 대개 정확히 0으로 만들지는 않습니다. → 선형 회귀
문제 3 (계산 · 로지스틱 회귀)
로지스틱 회귀의 선형 점수가 입니다. 양성 확률은? 정답이 양성일 때와 음성일 때 로그 손실(자연로그)은?
풀이
- 정답 양성:
- 정답 음성:
- 틀린 쪽으로 자신 있을수록 손실이 커집니다. → 로지스틱 회귀와 소프트맥스
문제 4 (계산 · 소프트맥스)
세 클래스의 점수가 입니다. 소프트맥스 확률과, 정답이 첫 번째 클래스일 때 교차 엔트로피는?
풀이
- , , , 합
- 확률
- 교차 엔트로피 → 로지스틱 회귀와 소프트맥스 · 정보 이론
문제 5 (계산 · 평가 지표)
1,000건 중 TP 30, FP 10, FN 20, TN 940입니다. 정확도 · 정밀도 · 재현율 · F1은?
풀이
- 정확도
- 정밀도 , 재현율
- F1
- 정확도 97%여도 양성의 40%를 놓칩니다. → 모델 평가와 과적합
문제 6 (코드 읽기 · 데이터 누수)
아래 코드의 문제점은 무엇이고, 어떻게 고치나요?
X_scaled = StandardScaler().fit_transform(X)
X_tr, X_te, y_tr, y_te = train_test_split(X_scaled, y, random_state=0)
model = LogisticRegression().fit(X_tr, y_tr)
print(model.score(X_te, y_te))풀이
- 표준화의 평균 · 표준편차를 테스트 데이터까지 포함한 전체로 계산했습니다. 테스트 정보가 학습에 새어 들어간 데이터 누수입니다.
- 먼저 나누고, 학습 데이터로만
fit한 뒤 테스트에는transform만 합니다. 가장 안전한 방법은make_pipeline(StandardScaler(), LogisticRegression())을 학습 데이터에fit하는 것입니다. → 특성 공학과 데이터 전처리
문제 7 (계산 · k-최근접 이웃)
새 점에서 가까운 순서로 이웃 5개의 거리와 라벨이 입니다. ① 다수결 ② 다수결 ③ , 거리 역수 가중 투표의 결과는?
풀이
- ① A 1표, B 2표 → B
- ② A 3표, B 2표 → A
- ③ A: , B: → A
- 같은 데이터라도 와 가중 방식에 따라 답이 바뀝니다. 는 교차 검증으로 고릅니다. → k-최근접 이웃과 나이브 베이즈
문제 8 (계산 · 나이브 베이즈)
메일의 40%가 스팸입니다. "무료"가 나올 확률은 스팸 0.5 · 정상 0.05, "회의"가 나올 확률은 스팸 0.1 · 정상 0.3입니다. "무료"와 "회의"가 모두 든 메일이 스팸일 확률은? (두 단어는 클래스가 주어지면 독립이라고 가정)
풀이
- 스팸:
- 정상:
- 정규화:
- "클래스가 주어지면 단어끼리 독립"이 '나이브'한 가정입니다. → k-최근접 이웃과 나이브 베이즈 · 확률과 통계
문제 9 (계산 · SVM)
선형 SVM의 결정 경계가 , 입니다. 마진의 폭(두 지지 초평면 사이 거리)은?
풀이
- 마진 폭
- SVM은 를 작게 해 이 폭을 최대로 만듭니다. → 서포트 벡터 머신과 커널
문제 10 (계산 · 결정 트리)
노드에 양성 4 · 음성 4가 있습니다. 분할하면 왼쪽 (3, 1), 오른쪽 (1, 3)이 됩니다. 지니 불순도 감소량과 엔트로피 기준 정보 이득(밑 2)은?
풀이
- 부모 지니 , 자식 지니 (양쪽 같음)
- 가중 평균 → 감소량
- 부모 엔트로피 1, 자식 엔트로피 → 정보 이득 → 결정 트리
문제 11 (개념 · 앙상블)
배깅에는 깊은 트리를, 그래디언트 부스팅에는 얕은 트리를 주로 쓰는 이유를 편향 · 분산으로 설명하세요. 그리고 데이터 1,000개로 부트스트랩 표본을 만들 때 특정 예제가 빠질 확률은?
풀이
- 배깅은 평균으로 분산을 줄이므로, 편향이 작고 분산이 큰 깊은 트리가 알맞습니다. 부스팅은 단계마다 편향을 줄여 가므로 단순한 트리를 많이 더하는 편이 과적합을 막습니다.
- → 앙상블
문제 12 (계산 · XGBoost)
한 잎에 떨어진 예제들의 1차 기울기 합 , 2차 기울기 합 , 입니다. 최적 잎 점수 는? 이면?
풀이
- 이면 . 가 잎 점수를 0 쪽으로 줄여 과적합을 막습니다. → XGBoost
문제 13 (계산 · k-평균)
1차원 점 , , 초기 중심 에서 배정 한 번과 중심 갱신 한 번을 하면 새 중심은?
풀이
- 배정: 0, 1 → 중심 0 쪽 / 5, 6, 10 → 중심 6 쪽(5는 0과 거리 5, 6과 거리 1)
- 새 중심: , → → 군집화
문제 14 (계산 · PCA)
표준화한 데이터의 공분산 고유값이 입니다. 각 주성분의 설명 분산 비율과, 누적 90% 이상을 남기는 최소 성분 수는?
풀이
- 비율 , 누적
- 2개면 정확히 90%이므로 최소 2개입니다. → 차원 축소
문제 15 (개념 + 계산 · 이상 탐지와 추천)
(가) 사분위수 , 일 때 IQR 안쪽 울타리는? (나) 추천 4개 중 2개가 관련 항목이고 사용자의 전체 관련 항목이 5개라면 정밀도@4와 재현율@4는? (다) 새로 등록된 상품을 협업 필터링만으로 추천하기 어려운 이유는?
풀이
- (가) IQR = 20 → → 이상 탐지
- (나) 정밀도@4 , 재현율@4
- (다) 상호작용 기록이 없어 항목 임베딩을 학습할 수 없기 때문입니다(콜드 스타트). 콘텐츠 기반 특성이나 비슷한 항목 임베딩 평균으로 보완합니다. → 추천 시스템
보너스 (코드 읽기)
아래 코드에서 search.best_score_와 테스트 점수는 각각 무엇을 뜻하나요?
search = GridSearchCV(make_pipeline(StandardScaler(), SVC()),
{"svc__C": [0.1, 1, 10]}, cv=5).fit(X_tr, y_tr)
print(search.best_score_, search.score(X_te, y_te))풀이
best_score_는 학습 데이터 안에서 5겹 교차 검증으로 잰, 가장 좋은C의 평균 검증 점수입니다.search.score(X_te, y_te)는 그C로 학습 데이터 전체에 다시 학습한 모델의 테스트 점수입니다. 테스트는 이 한 번만 봐야 정직한 추정이 됩니다. → 손글씨 숫자 분류기 프로젝트
점수별 다음 걸음
| 맞힌 수(15문제 기준) | 다음 걸음 |
|---|---|
| 13~15 | 딥러닝 트랙으로 넘어가도 좋습니다. 틀린 문제의 수업만 훑어보세요. |
| 9~12 | 틀린 문제의 수업에서 '숫자로 해 보기'와 연습 문제를 다시 풀어 보세요. |
| 0~8 | 선형 회귀부터 차례로 다시 보고, 손글씨 숫자 분류기를 직접 실행해 보세요. |
다음에 볼 것
- 퍼셉트론: 뇌의 정보 저장과 조직에 관한 확률 모델 — 딥러닝 기초 트랙의 첫 항목입니다. 로지스틱 회귀를 여러 층으로 쌓는 이야기가 시작됩니다.
- 다층 퍼셉트론: 은닉층 · 활성화 함수 · 손실 함수 — 선형 모델의 한계를 넘는 첫걸음입니다.
라이선스
이 점검 문제와 풀이는 KAITABASE가 직접 작성했으며, 모든 숫자는 설명용으로 만든 것입니다(답은 파이썬으로 다시 계산해 확인). 원문 번역이 아닙니다.
출처
- 문제 범위와 기호는 이 사이트의 머신러닝 트랙 수업(146~157, 131, 81)을 따릅니다.
- 참고: scikit-learn.org/stable/user_guide.html (scikit-learn 사용자 안내서 —
GridSearchCV· 파이프라인 사용법)
AI 원리부터 이해하기 · 머신러닝 모듈
머신러닝 모듈 학습
이 글은 머신러닝 모듈의 학습 자료입니다. 전체 17개 자료 중 17번째입니다.
출처·원문
원문 보기요약만