
v1 R² 은 스칼라 타깃. 실제로는 여러 출력 을 동시에 예측하는 경우가 흔함 (multi-target regression, 이미지 회귀, 좌표 예측 등).
각 출력 에 대해 개별 R²:
문제: K 개의 R² 를 어떻게 집계할 것인가? sklearn 의 multioutput 파라미터 3 가지 모드:
| mode | 집계 방식 |
|---|---|
'raw_values' | 각 출력별 R² 벡터 그대로 반환 (shape (K,)) |
'uniform_average' | 단순 평균 (기본) |
'variance_weighted' | 분산 가중 평균 |
variance_weighted 는 분산이 큰 (즉, 예측 난이도가 큰) 출력에 더 가중치.
함수 r2_score_multi(y_pred, y_true, multioutput='uniform_average') 를 완성하세요.
y_pred, y_true: shape (N, K).multioutput: 'raw_values' | 'uniform_average' | 'variance_weighted'.'raw_values' → shape (K,) numpy array,SSR_k = sum_i (y_pred[i,k] - y_true[i,k])^2 # shape (K,)
SST_k = sum_i (y_true[i,k] - y_true[:,k].mean())^2
R2_k = 1 - SSR_k / SST_k # SST_k==0 → 0
| # | 이름 | 검증 |
|---|---|---|
| 1 | raw_values shape (K,) | |
| 2 | uniform_average = mean(raw) | |
| 3 | variance_weighted = Σ(SST·R²) / ΣSST | |
| 4 | 완벽 예측 → 모두 1.0 | |
| 5 | 상수 출력 (SST=0) → 0 처리, NaN 없음 | |
| 6 | K=1 → v1 R² 와 일치 | |
| 7 | sklearn r2_score(multioutput=...) 와 일치 |
코드를 작성하고 Run 을 눌러보세요.