주차 예측의 confidence와 backtest

주차 baseline, 예측 범위, confidence와 backtest를 나눠 예측 근거를 표시한 방법

한강자리의 주차 예측은 도착 시점의 주차 위험을 가늠하는 참고값이다. 현재값과 예측값을 분리하고 예상 잔여 대수와 함께 예측 범위, confidence와 출처 최신성을 표시한다. 과거 예측은 backtest로 실제값과 비교한다.

예측을 구성하는 네 가지 근거

주차 예측은 네 종류의 근거를 섞는다.

근거의미
최근 현황가장 최근에 확인한 잔여 대수와 총면수
최근 변화최근 확인값 사이의 변화 속도
과거 평균선같은 예측 간격과 시간대에서의 과거 평균·분산
최근 구간 통계최근 구간의 이동 평균, 변동성, 변화 기울기 보정

현재값이 있으면 최근 변화를 강하게 반영하고 예측 시간이 멀수록 과거 평균선의 비중을 올린다. 현재값이 없으면 과거 평균선이나 최근 구간 통계를 대신 쓴다. 아무 근거도 없으면 값 없음으로 남긴다.

가중치와 threshold는 운영 결과에 따라 바뀔 수 있다. API에는 계산에 사용한 근거와 근거가 약해진 이유를 함께 남겼다.

flowchart LR
  Snapshots["최근 현황"] --> Trend["분당 변화량"]
  History["과거 평균선"] --> Estimate["p50 예상값"]
  Features["최근 구간 통계"] --> Estimate
  Trend --> Estimate
  Estimate --> Quantiles["p10 / p50 / p90"]
  Quantiles --> Risk["위험도"]
  Quantiles --> Status["예상 혼잡"]

예측 범위와 위험도

예측값에는 단일 예상치 대신 p10, p50, p90 범위를 둔다.

  • p50: 대표 예상 잔여 대수.
  • p10: 보수적으로 봤을 때의 낮은 잔여 대수.
  • p90: 낙관적으로 봤을 때의 높은 잔여 대수.

위험도는 세 값을 함께 사용하되 보수적인 p10 구간을 중점적으로 반영한다.

근거 강도에 따른 confidence

confidence는 예측 시간, 출처 최신성, 표본 수로 계산한 근거 강도다. 화면 문구와 운영 점검에서 같은 값을 사용한다.

지금은 다음을 본다.

  • 예측 시간이 멀수록 confidence를 낮춘다.
  • 출처가 오래됐을수록 낮춘다.
  • 과거 표본이 충분하면 약간 올린다.
  • 최근 구간 표본이 충분하면 약간 올린다.

reason code에는 오래된 출처, 먼 예측 시간과 과거 평균선 사용처럼 confidence가 낮아진 이유를 저장한다.

flowchart TD
  Horizon["예측 시간"] --> Confidence
  Freshness["출처 최신성"] --> Confidence
  Samples["과거 표본 수"] --> Confidence
  Features["최근 구간 표본 수"] --> Confidence
  Confidence --> Reason["사유 코드"]

하나의 묶음으로 남기는 예측

예측은 한 번 만들 때마다 run으로 남긴다. 하나의 run에는 model version, 만든 시각, 예측 간격이 들어간다. 성공하면 저장한 줄 수와 기준 확인 시각을 남기고 실패하면 run을 실패로 닫는다.

sequenceDiagram
  autonumber
  participant Job as 예측 작업
  participant Repo as 예측 저장소
  participant Gen as 예측 생성기

  Job->>Repo: 새 예측 실행 기록 만들기
  Gen->>Repo: 주차장/이력/평균선/통계 읽기
  Gen->>Gen: 예측 간격별 값 계산
  Gen->>Repo: 예측 결과 저장
  Gen->>Repo: 기준 확인 시각과 함께 실행 기록 닫기

run은 현재 API의 예측 계산 시각을 추적하고 model version별 결과를 구분하는 기준이다.

backtest를 반영한 예측 문구

한강자리 backtest는 과거 forecast가 목표로 삼은 도착 시각 근처의 실제 확인값을 label로 붙이고 예측 간격별 metric을 계산한다.

보는 값은 대략 다음이다.

  • 표본 수.
  • MAE 성격의 평균 오차.
  • p10~p90 구간이 실제값을 포함한 비율.
  • 출처가 오래된 표본 비율.
  • gate 통과 여부.
flowchart LR
  Sample["과거 예측 값<br/>도착 시각 근처 실제값"] --> Score["예측과 실제값 비교"]
  Score --> Metrics["예측 간격/모델 메트릭"]
  Metrics --> Gate["품질 게이트"]

backtest 결과는 예측 간격별 문구와 confidence 조정에 사용한다. 오차가 크거나 p10~p90 포함률이 낮은 구간에는 낮은 confidence와 reason code를 표시한다. 계산식을 바꾼 뒤에는 model version별 metric을 비교한다.

응답에 포함한 예측 근거

주차 예측 응답에는 p10, p50, p90, risk level, confidence와 최신성을 함께 넣었다. reason code는 화면 문구와 디버깅에 사용하고 run과 model version은 backtest 결과를 이전 계산과 구분한다.

Comments

댓글

    이미지 확대