검색
← 모듈 로드맵

중간 점검: 머신러닝 트랙 (문제 15개와 풀이)

강의 · 입문자 · KAITABASE 정리

회귀 · 분류 · 트리 · 앙상블 · 군집 · PCA · 이상 탐지 · 추천을 15문제로 점검하는 ML 중간 점검

먼저 알아야 할 것

머신러닝 트랙 수업 146~157모델 평가와 과적합XGBoost

다루는 내용

머신러닝 트랙 전체를 점검하는 문제 15개와 보너스 코드 읽기 문제입니다. 최소제곱 직선, 로지스틱 · 소프트맥스 손실, 평가 지표, 데이터 누수, kNN · 나이브 베이즈, SVM 마진, 지니 · 정보 이득, 부트스트랩, XGBoost 잎 점수, k-평균, PCA, IQR · 추천 지표를 다룹니다. 문제마다 단계별 풀이와 복습할 수업 링크를 달았습니다.

해설

중간 점검: 머신러닝 트랙 (문제 15개와 풀이)

선형 회귀부터 추천 시스템까지, 머신러닝 트랙의 핵심을 문제 15개로 점검합니다. 개념 문제 · 손계산 문제 · 코드 읽기 문제를 섞었고, 문제마다 바로 아래에 단계별 풀이와 다시 볼 수업 링크를 달았습니다. 계산 답은 모두 파이썬으로 다시 확인했습니다.

항목내용
범위머신러닝 트랙 전체(146 선형 회귀 ~ 156 추천 시스템, 131 평가 · 과적합, 81 XGBoost)
트랙 · 수준머신러닝 · 기초
문제 구성개념 5 · 계산 8 · 코드 읽기 2
걸리는 시간40~60분(풀이 확인 포함)
준비물종이와 펜, 계산기(로그 · 지수)

들어가기 전에

이 점검은 아래 수업을 마쳤다고 보고 냅니다. 막히는 문제는 해당 수업으로 돌아가 다시 보세요.

푸는 법

  1. 풀이를 가리고 먼저 답을 적습니다. 계산 문제는 소수 셋째 자리까지면 충분합니다.
  2. 풀이와 맞춰 보고, 틀린 문제의 수업 링크를 메모합니다.
  3. 맨 아래 '점수별 다음 걸음'을 따라 복습합니다.

문제

문제 1 (계산 · 선형 회귀)

점 (1,2),(2,4),(3,5)(1, 2), (2, 4), (3, 5)에 직선 y^=b+wx\hat y = b + wx를 최소제곱으로 맞추면 ww와 bb는?

풀이

  • xˉ=2\bar x = 2, yˉ=11/3≈3.667\bar y = 11/3 \approx 3.667
  • w=∑(x−xˉ)(y−yˉ)∑(x−xˉ)2=(−1)(−1.667)+0+(1)(1.333)1+0+1=32=1.5w = \frac{\sum (x - \bar x)(y - \bar y)}{\sum (x - \bar x)^2} = \frac{(-1)(-1.667) + 0 + (1)(1.333)}{1 + 0 + 1} = \frac{3}{2} = 1.5
  • b=yˉ−wxˉ=3.667−3=0.667b = \bar y - w \bar x = 3.667 - 3 = 0.667
  • 정규방정식 (X⊤X)−1X⊤y(X^\top X)^{-1} X^\top y로 풀어도 (b,w)=(0.667,1.5)(b, w) = (0.667, 1.5)입니다. → 선형 회귀

문제 2 (개념 · 정규화)

특성 100개 중 실제로 쓸모 있는 것은 5개뿐인 것 같습니다. 릿지(L2)와 라쏘(L1) 중 무엇이 알맞고, 왜 그런가요?

풀이

  • 라쏘입니다. L1 벌점 λ∑∣wj∣\lambda \sum \lvert w_j \rvert는 많은 가중치를 정확히 0으로 만들어 특성 선택 효과를 냅니다.
  • 릿지는 가중치를 0 쪽으로 줄이지만 대개 정확히 0으로 만들지는 않습니다. → 선형 회귀

문제 3 (계산 · 로지스틱 회귀)

로지스틱 회귀의 선형 점수가 z=0.5z = 0.5입니다. 양성 확률은? 정답이 양성일 때와 음성일 때 로그 손실(자연로그)은?

풀이

  • σ(0.5)=1/(1+e−0.5)≈0.622\sigma(0.5) = 1/(1 + e^{-0.5}) \approx 0.622
  • 정답 양성: −ln⁡0.622≈0.474-\ln 0.622 \approx 0.474
  • 정답 음성: −ln⁡(1−0.622)=−ln⁡0.378≈0.974-\ln(1 - 0.622) = -\ln 0.378 \approx 0.974
  • 틀린 쪽으로 자신 있을수록 손실이 커집니다. → 로지스틱 회귀와 소프트맥스

문제 4 (계산 · 소프트맥스)

세 클래스의 점수가 (2,1,0)(2, 1, 0)입니다. 소프트맥스 확률과, 정답이 첫 번째 클래스일 때 교차 엔트로피는?

풀이

  • e2=7.389e^2 = 7.389, e1=2.718e^1 = 2.718, e0=1e^0 = 1, 합 11.10711.107
  • 확률 ≈(0.665,0.245,0.090)\approx (0.665, 0.245, 0.090)
  • 교차 엔트로피 =−ln⁡0.665≈0.408= -\ln 0.665 \approx 0.408 → 로지스틱 회귀와 소프트맥스 · 정보 이론

문제 5 (계산 · 평가 지표)

1,000건 중 TP 30, FP 10, FN 20, TN 940입니다. 정확도 · 정밀도 · 재현율 · F1은?

풀이

  • 정확도 (30+940)/1000=0.97(30 + 940)/1000 = 0.97
  • 정밀도 30/40=0.7530/40 = 0.75, 재현율 30/50=0.630/50 = 0.6
  • F1 =2×0.75×0.6/1.35≈0.667= 2 \times 0.75 \times 0.6 / 1.35 \approx 0.667
  • 정확도 97%여도 양성의 40%를 놓칩니다. → 모델 평가와 과적합

문제 6 (코드 읽기 · 데이터 누수)

아래 코드의 문제점은 무엇이고, 어떻게 고치나요?

python
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개의 거리와 라벨이 (0.5,A),(1.0,B),(1.2,B),(3.0,A),(4.0,A)(0.5, A), (1.0, B), (1.2, B), (3.0, A), (4.0, A)입니다. ① k=3k = 3 다수결 ② k=5k = 5 다수결 ③ k=3k = 3, 거리 역수 가중 투표의 결과는?

풀이

  • ① A 1표, B 2표 → B
  • ② A 3표, B 2표 → A
  • ③ A: 1/0.5=2.01/0.5 = 2.0, B: 1/1.0+1/1.2≈1.8331/1.0 + 1/1.2 \approx 1.833 → A
  • 같은 데이터라도 kk와 가중 방식에 따라 답이 바뀝니다. kk는 교차 검증으로 고릅니다. → k-최근접 이웃과 나이브 베이즈

문제 8 (계산 · 나이브 베이즈)

메일의 40%가 스팸입니다. "무료"가 나올 확률은 스팸 0.5 · 정상 0.05, "회의"가 나올 확률은 스팸 0.1 · 정상 0.3입니다. "무료"와 "회의"가 모두 든 메일이 스팸일 확률은? (두 단어는 클래스가 주어지면 독립이라고 가정)

풀이

  • 스팸: 0.4×0.5×0.1=0.0200.4 \times 0.5 \times 0.1 = 0.020
  • 정상: 0.6×0.05×0.3=0.0090.6 \times 0.05 \times 0.3 = 0.009
  • 정규화: 0.020/0.029≈0.6900.020 / 0.029 \approx 0.690
  • "클래스가 주어지면 단어끼리 독립"이 '나이브'한 가정입니다. → k-최근접 이웃과 나이브 베이즈 · 확률과 통계

문제 9 (계산 · SVM)

선형 SVM의 결정 경계가 w⊤x+b=0w^\top x + b = 0, w=(3,4)w = (3, 4)입니다. 마진의 폭(두 지지 초평면 w⊤x+b=±1w^\top x + b = \pm 1 사이 거리)은?

풀이

  • 마진 폭 =2/∥w∥=2/5=0.4= 2/\lVert w \rVert = 2/5 = 0.4
  • SVM은 ∥w∥\lVert w \rVert를 작게 해 이 폭을 최대로 만듭니다. → 서포트 벡터 머신과 커널

문제 10 (계산 · 결정 트리)

노드에 양성 4 · 음성 4가 있습니다. 분할하면 왼쪽 (3, 1), 오른쪽 (1, 3)이 됩니다. 지니 불순도 감소량과 엔트로피 기준 정보 이득(밑 2)은?

풀이

  • 부모 지니 =1−(0.52+0.52)=0.5= 1 - (0.5^2 + 0.5^2) = 0.5, 자식 지니 =1−(0.752+0.252)=0.375= 1 - (0.75^2 + 0.25^2) = 0.375(양쪽 같음)
  • 가중 평균 0.3750.375 → 감소량 0.1250.125
  • 부모 엔트로피 1, 자식 엔트로피 −(0.75log⁡20.75+0.25log⁡20.25)≈0.811-(0.75 \log_2 0.75 + 0.25 \log_2 0.25) \approx 0.811 → 정보 이득 ≈0.189\approx 0.189 → 결정 트리

문제 11 (개념 · 앙상블)

배깅에는 깊은 트리를, 그래디언트 부스팅에는 얕은 트리를 주로 쓰는 이유를 편향 · 분산으로 설명하세요. 그리고 데이터 1,000개로 부트스트랩 표본을 만들 때 특정 예제가 빠질 확률은?

풀이

  • 배깅은 평균으로 분산을 줄이므로, 편향이 작고 분산이 큰 깊은 트리가 알맞습니다. 부스팅은 단계마다 편향을 줄여 가므로 단순한 트리를 많이 더하는 편이 과적합을 막습니다.
  • (1−1/1000)1000≈0.368(1 - 1/1000)^{1000} \approx 0.368 → 앙상블

문제 12 (계산 · XGBoost)

한 잎에 떨어진 예제들의 1차 기울기 합 G=−6G = -6, 2차 기울기 합 H=4H = 4, λ=2\lambda = 2입니다. 최적 잎 점수 w∗w^*는? λ=0\lambda = 0이면?

풀이

  • w∗=−G/(H+λ)=6/6=1.0w^* = -G/(H + \lambda) = 6/6 = 1.0
  • λ=0\lambda = 0이면 6/4=1.56/4 = 1.5. λ\lambda가 잎 점수를 0 쪽으로 줄여 과적합을 막습니다. → XGBoost

문제 13 (계산 · k-평균)

1차원 점 (0,1,5,6,10)(0, 1, 5, 6, 10), k=2k = 2, 초기 중심 (0,6)(0, 6)에서 배정 한 번과 중심 갱신 한 번을 하면 새 중심은?

풀이

  • 배정: 0, 1 → 중심 0 쪽 / 5, 6, 10 → 중심 6 쪽(5는 0과 거리 5, 6과 거리 1)
  • 새 중심: (0+1)/2=0.5(0 + 1)/2 = 0.5, (5+6+10)/3=7(5 + 6 + 10)/3 = 7 → (0.5,7)(0.5, 7) → 군집화

문제 14 (계산 · PCA)

표준화한 데이터의 공분산 고유값이 (6,3,1)(6, 3, 1)입니다. 각 주성분의 설명 분산 비율과, 누적 90% 이상을 남기는 최소 성분 수는?

풀이

  • 비율 (0.6,0.3,0.1)(0.6, 0.3, 0.1), 누적 (0.6,0.9,1.0)(0.6, 0.9, 1.0)
  • 2개면 정확히 90%이므로 최소 2개입니다. → 차원 축소

문제 15 (개념 + 계산 · 이상 탐지와 추천)

(가) 사분위수 Q1=40Q_1 = 40, Q3=60Q_3 = 60일 때 IQR 안쪽 울타리는? (나) 추천 4개 중 2개가 관련 항목이고 사용자의 전체 관련 항목이 5개라면 정밀도@4와 재현율@4는? (다) 새로 등록된 상품을 협업 필터링만으로 추천하기 어려운 이유는?

풀이

  • (가) IQR = 20 → [40−30, 60+30]=[10,90][40 - 30,\ 60 + 30] = [10, 90] → 이상 탐지
  • (나) 정밀도@4 =2/4=0.5= 2/4 = 0.5, 재현율@4 =2/5=0.4= 2/5 = 0.4
  • (다) 상호작용 기록이 없어 항목 임베딩을 학습할 수 없기 때문입니다(콜드 스타트). 콘텐츠 기반 특성이나 비슷한 항목 임베딩 평균으로 보완합니다. → 추천 시스템

보너스 (코드 읽기)

아래 코드에서 search.best_score_와 테스트 점수는 각각 무엇을 뜻하나요?

python
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번째입니다.

AI 기초 과정은 현재 진도 저장을 지원하지 않습니다.

출처·원문

원문 보기

요약만

본문 자체 작성 · 참고 자료 scikit-learn 사용자 안내서(BSD-3)