← 문제 목록/Distance-weighted KNN Regressor [medium]
문제 해설

Distance-weighted KNN Regressor [medium]

회귀 · medium

preview

Distance-Weighted KNN Regressor [medium]

v1 KNN 회귀 는 단순 평균 — 가까운 이웃과 먼 이웃이 동일 가중. 문제: k 경계 에서 "ˆ{k}번째 이웃" 과 "k+1 번째 이웃" 의 대접이 극단적으로 달라짐 → 불연속적인 예측.

가중 평균

y^(x)=iNk(x)wiyiiNk(x)wi\hat{y}(x) = \frac{\sum_{i \in N_k(x)} w_i \, y_i}{\sum_{i \in N_k(x)} w_i}

가중치 선택:

weightswiw_i특성
'uniform'1v1 basic, 경계 불연속
'inverse'1di+ϵ\dfrac{1}{d_i + \epsilon}가까우면 많이, 먼 이웃은 거의 무시
'gaussian'exp(di2/σ2)\exp(-d_i^2 / \sigma^2)부드러운 decay, σ 를 중앙 거리로 자동 설정

'gaussian'σ\sigma각 테스트 점의 k 번째 이웃 거리 를 사용 → scale-adaptive.

엣지

  • di=0d_i = 0 (정확 매치): inverse 에서 \infty 위험 → ϵ=108\epsilon = 10^{-8} 로 안전.
  • σ=0\sigma = 0 (모든 k 이웃이 정확 매치): Gaussian 이 0/00/0 → uniform 로 fallback.

과제

함수 knn_regressor_weighted(X_train, y_train, X_test, k, weights='uniform') 를 완성하세요.

  • 반환: shape (M,) 예측값.
  • weights{'uniform', 'inverse', 'gaussian'}.
  • 'gaussian' 에서 σ\sigma = 각 테스트 점의 k-th 이웃 거리 + ϵ\epsilon.

테스트 케이스

#이름검증
1반환 shape (M,)
2weights='uniform' → v1 과 일치
3weights='inverse': 정확 매치 (d=0) 시 예측 = 해당 y
4weights='gaussian': 가까운 이웃 지배
5노이즈 데이터에서 weighted 가 uniform 보다 MSE 낮음 (평균)
6sklearn KNeighborsRegressor(weights='distance') 와 일치
7k=N, weights='uniform' → 전체 평균
코드 작성
Loading...
실행 결과

코드를 작성하고 Run 을 눌러보세요.