회귀·연습 문제

거리 가중 KNN 회귀

문제 설명PROBLEM

preview

거리 가중 KNN 회귀

47번 KNN 회귀k 이웃을 똑같이 평균 했습니다. 하지만 "더 가까운 이웃이 더 믿을 만하다" 는 직관을 살리면 거리의 역수로 가중 평균 하는 게 자연스럽죠:

y^(x)=itop-k(x)wiyiitop-k(x)wi,wi=1di+ε\hat{y}(\mathbf{x}) = \frac{\sum_{i \in \text{top-}k(\mathbf{x})} w_i y_i}{\sum_{i \in \text{top-}k(\mathbf{x})} w_i}, \qquad w_i = \frac{1}{d_i + \varepsilon}

ε\varepsilon 은 0 으로 나눔 방지용 (1e-10). 이렇게 하면:

  • 훈련점과 정확히 같은 테스트점 → 그 점의 y 로 수렴.
  • 먼 이웃의 영향은 자동으로 작아짐 → 더 부드러운 곡선.

sklearn KNeighborsRegressor(weights='distance') 와 동일.

과제

함수 predict_weighted(X_train, y_train, X_test, k) 를 완성하세요.

  • X_train (N, D), y_train (N,), X_test (M, D).
  • 반환: (M,) float — 거리 가중 평균 예측.

테스트 케이스

#이름검증
1shape(M,)
2k=1 + 같은 점 → 자기 y
3상수 target → 상수 예측
4가중 vs 일반: 가까운 이웃 영향 ↑하나는 값 10, 다른 하나는 0, 쿼리가 첫 번째에 가까우면 가중≈10
5각 가중치 > 0
개념 노트와 실수 포인트

회귀

  • 선형회귀는 MSE 최소화. 정규방정식(닫힌 해) vs 경사하강.
  • 잔차(예측−실제) 분석, 다중공선성 주의.