This repository was archived by the owner on Sep 24, 2026. It is now read-only.
[위험도] 신뢰도가 재는 것과 시민이 읽는 것을 맞춘다 - #93
Merged
Merged
Conversation
⚠️ **수온을 한 값도 못 받은 해변이 'medium' 으로 나오고 있었다.** 예전 판정은 결측 **개수**만 셌고 low 기준이 3이었다. 그런데 수온이 없으면 TEMP_UP 과 TEMP_7D_AVG 가 함께 빠져 개수가 **2** 였다. 입력의 절반이 없는데 "보통" 이라고 답한 셈이다. 해파리 위험도에서 수온은 핵심 동인인데, 개수로 세면 수온을 못 보는 상태와 부차 요인 셋을 못 보는 상태가 같은 등급이 된다. 그래서 수온 두 요인의 무게 합을 3으로 맞췄다 — 수온이 없으면 그 자체로 low 다. 나머지는 1이고 셋이 겹쳐야 low 가 된다.⚠️ **거리를 아예 보지 않았다.** 40km 떨어진 관측소의 수온이라도 값이 다 있고 신선하면 'high' 였다. 10km 를 넘으면 한 단계, 30km 를 넘으면 두 단계 내린다. 10km 는 이 저장소가 이미 같은 질문에 내놓은 답이다 — 정답 데이터에서 출현을 해변에 붙일 때 쓰는 반경이고, 근거는 "이보다 넓으면 해변별 차이가 사라진다" 였다. 관측값도 같은 질문을 받는다: 이 값이 이 해변의 것인가. 30km 는 엔진이 "인근 출현" 으로 치는 반경이다. 거리는 **실제로 값을 준 해양 관측소**의 것이다. 대표가 낡으면 더 먼 관측소가 선택되는데, 그때 값은 더 멀리서 온 것이다. 기상 관측소 거리는 쓰지 않는다 — 제주 전체에 둘뿐이라 (대표 평균 22.6km) 벌점을 주면 모든 해변이 함께 내려갈 뿐이고 **운영자가 고칠 방법이 없다.** 신뢰도는 고칠 수 있는 것을 가리켜야 한다. 실측(제주 12곳): 중문색달 1.1km 결측없음 → high 곽지과물 10.1km CURRENT → low (거리 경계를 0.1km 넘는다) 나머지 10곳 CURRENT → medium⚠️ 선을 15km 로 옮기면 곽지가 안 걸린다. 그건 숫자를 결과에 맞춘 것이지 근거가 아니다. 곽지의 최근접 해양관측소가 실제로 경계에 있다는 사실이 드러나는 편이 낫다. 백테스트에는 관측소 거리 기록이 없어 null 을 넣는다 — 거리 벌점이 붙지 않으므로 **과거 신뢰도를 실제보다 후하게** 본다. 지표를 비교할 때 이 차이를 기억해야 한다.
공개 응답에 dataConfidenceLabel 추가. 값(high/medium/low)과 필드 이름은 그대로 둔다 — 프론트가 쓰고 있어서 바꾸면 깨진다. 바뀌는 것은 **시민에게 보이는 말**이다. high 관측 자료 충분 medium 관측 자료 일부 없음 low 관측 자료 많이 부족⚠️ "신뢰도 높음" 은 *"이 예측을 믿어도 된다"* 로 읽힌다. 그건 우리가 **측정한 적 없는 주장**이다 — 해변별 예측 정확도 표본은 현재 0건이고, 전체 정확도조차 시군구 단위 정답으로 거칠게 잰 값이다. deriveConfidence 가 실제로 답하는 질문은 하나다: **이 판정을 뒷받침할 관측 자료가 충분한가.** 입력이 완벽해도 룰이 틀렸으면 예측은 틀리고, 이 값은 그것을 보지 않는다. 이 서비스에서는 그 차이가 위험한 방향으로 어긋난다. `안전` + `신뢰도 높음` 을 본 사람은 물에 들어간다. 그런데 그 "높음" 이 실제로 보장하는 것은 **10km 안의 부이에서 3시간 안에 값이 다 들어왔다** 는 것뿐이다. low 를 '부족' 이 아니라 '많이 부족' 으로 한 이유 — '부족' 은 "조금 모자라다" 로 읽힌다. low 는 수온을 한 값도 못 받았거나 관측이 하루 넘게 끊긴 상태다.
세 수정을 각각 되돌려 깨지는 것을 확인했다. 무게를 개수로 되돌림 → 1건 실패 (수온 결측이 medium 으로 돌아간다) 거리 벌점 제거 → 3건 실패 라벨에 '신뢰도' 사용 → 2건 실패 라벨 테스트가 문구에 '신뢰' 가 들어가지 않는지를 직접 본다. 문구는 나중에 누구든 고치기 쉬운 자리이고, 고치면서 **왜 그렇게 썼는지는 잊히기 때문**이다. 언어별로 실제 다른 문구가 나오는지도 본다 — ko 로 폴백되면 외국인에게 한국어가 나간다.
3 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #92
문제
이름은 "데이터 신뢰도" 인데 재는 것은 입력 완전성 × 신선도다. 그리고 그 값이
PublicBeachRiskResponse로 시민에게 나간다.안전+신뢰도 높음을 본 사람은 물에 들어간다. 그 "높음" 이 실제로 보장하는 것은 10km 안의 부이에서 3시간 안에 값이 들어왔다 는 것뿐이다.① 수온이 통째로 없어도 medium 이었다
수온이 없으면
TEMP_UP+TEMP_7D_AVG가 함께 빠져 개수가 2 — low 기준 3에 걸리지 않는다.무게로 바꿨다. 수온 두 요인의 합을 3으로 맞춰 수온이 없으면 그 자체로 low 다.
mediumlowmediummediumlowlow② 거리를 아예 보지 않았다
40km 떨어진 관측소의 값이라도
high가 나왔다. 10km 초과 한 단계, 30km 초과 두 단계.10km 는 이 저장소가 이미 같은 질문에 내놓은 답이다 — 정답 데이터에서 출현을 해변에 붙이는 반경이고, 근거는 "이보다 넓으면 해변별 차이가 사라진다" 였다. 관측값도 같은 질문을 받는다: 이 값이 이 해변의 것인가. 30km 는 엔진이 "인근 출현" 으로 치는 반경이다.
거리는 실제로 값을 준 해양 관측소의 것이다 — 대표가 낡으면 더 먼 곳이 선택되고, 그때 값은 더 멀리서 온 것이다.
③ 시민에게 '신뢰도' 라고 말하지 않는다
값과 필드 이름은 그대로 두고(프론트가 쓴다)
dataConfidenceLabel을 추가했다:low를 '부족' 이 아니라 '많이 부족' 으로 한 이유 — '부족' 은 "조금 모자라다" 로 읽힌다. low 는 수온을 한 값도 못 받았거나 관측이 하루 넘게 끊긴 상태다.실측 (제주 12곳, 실데이터)
검증
세 수정을 각각 되돌려 깨지는 것을 확인했다 — 무게→개수 1건, 거리 벌점 제거 3건, 라벨에 '신뢰도' 사용 2건.
남는 것
null을 넣는다. 거리 벌점이 붙지 않으므로 과거 신뢰도를 실제보다 후하게 본다 — 지표를 비교할 때 이 차이를 기억해야 한다.그리고 이 PR 은 여전히 정확도를 재지 않는다.
dataConfidence는 자료가 충분한지만 답한다. 예측이 맞는지는 정답 데이터가 쌓여야 알 수 있다(#81, #83).