🗓️ EDD 약속 엔진 (Estimated Date of Delivery)
ML 처리시간·운송시간 예측 · 날씨/교통/거점큐 종합 · EDD 정확도 95%+ · confidence 동시 반환 · 김지훈 수석연구원
단순 평균 lead time이 아니라 ML 모델 기반 예측 + confidence를 함께 반환하여 고객에게 실현 가능한 약속을 제공한다. EDD는 처리시간(processing)과 운송시간(transit) 두 모델로 분리(앙상블)하고, 외부 시그널(날씨·교통·운송사 OTIF 실적)을 통합한다.
confidence가 임계값(0.85) 미만이면 자동으로 buffer +k시간을 더해 약속을 보수적으로 산출하거나, 신규 운송사처럼 실적이 부족한 경우 약속 자체를 보류한다. 3월 운영 결과 EDD 정확도 96.2%, confidence ≥ 0.85 비율 91%, 약속 위반 시 24시간 전 사전 알림 도달률 98%로 RT-O3 단순 lead-time 평균 대비 큰 폭으로 개선되었다.
거점 큐 깊이, 주문 item_count, 시간/요일, 운송사 service_type, weather_score, traffic_score 수집.
Gradient Boosted Tree · 입력 4개(queue, items, hour, dow) → 출력 processing_hr (hours).
Transformer + 도로 그래프 임베딩 · 출발/도착 좌표 + 운송사 + 날씨/교통 → transit_hr (hours).
두 모델의 분산(σ) + carrier OTIF 실적을 베이지안 결합 → 0~1 범위 confidence 출력.
confidence < 0.85 시 buffer +k시간 추가, 알림 정책 적용 후 고객에게 EDD + 신뢰도 반환.
def calculate_edd(order, node, carrier): # 처리 시간 예측 (ML 모델) processing_hr = processing_model.predict([ node.queue_depth, order.item_count, hour_of_day, day_of_week ]) # 운송 시간 예측 (ETA 모델) transit_hr = eta_model.predict([ node.lat, node.lng, order.dest_lat, order.dest_lng, carrier.service_type, weather_score, traffic_score ]) total_hr = processing_hr + transit_hr edd = datetime.now() + timedelta(hours=total_hr) confidence = calc_confidence(processing_hr, transit_hr) return edd, confidence # EDD + 신뢰도 반환
처리/운송 모델을 분리한 이유는 두 영역의 입력 분포·노이즈 특성이 전혀 다르기 때문이다. 처리 시간은 거점 내부 큐 다이내믹스가 지배하고, 운송 시간은 외부 도로/날씨가 지배한다. 단일 모델 로 합치면 한 쪽 노이즈가 다른 쪽 정확도를 갉아먹는다.
processing_hr · 거점 내부 큐 + item count + 시간대로 결정. 평균 가중 영향도 0.4transit_hr · 거리 + 운송사 service_type + 도로 그래프 기반 ETA. 평균 가중 영향도 0.4weather_score, traffic_score · 외부 시그널이 transit 분산을 키워 confidence를 흔드는 비중 0.15carrier_otif · 최근 운송사 OTIF 실적이 베이지안 prior로 들어감. 신규 운송사일수록 confidence ↓예) 평일 낮 표준 운송사 + 맑은 날씨 + 도로 원활: σ_proc=0.3h, σ_transit=0.5h, OTIF=0.96 → confidence 0.93. 우천 + 출퇴근 시간대로 바뀌면 σ_transit이 1.4h로 커져 confidence 0.74까지 떨어지고 buffer +1h를 자동 추가한다.
| 모델 | 입력 | 출력 | MAE | 인퍼런스 |
|---|---|---|---|---|
| processing GBT | queue + items + hour + dow | hours | 0.42h | 4ms |
| eta_model_v1 (LR) | lat/lng + service | hours | 1.18h | 1ms |
| eta_model_v2 (Transformer + 그래프) | lat/lng + service + wx + traffic | hours | 0.61h | 22ms |
| confidence Bayes | σ + OTIF | 0~1 | — | <1ms |
eta_model_v1(선형 회귀)은 빠르지만 MAE 1.18h로 도시 내·외곽 · 기상 영향을 분리하지 못했다. v2 Transformer + 도로 그래프 임베딩으로 MAE를 0.61h까지 줄였고, 인퍼런스가 22ms로 늘었지만 전체 EDD 응답 SLA(200ms) 안에서 충분히 흡수된다.
[1] 김지훈, "EDD 약속 엔진 ML 모델 통합 보고서", IntraLogis 사내 보고서, 2026.03
[2] Han, S. et al. "Demand-Aware Logistics ETA Prediction", KDD, 2023
[3] Hochreiter, S., Schmidhuber, J. "Long Short-Term Memory", Neural Computation, 1997
[4] Battaglia, P. et al. "Relational inductive biases, deep learning, and graph networks", arXiv:1806.01261, 2018
[5] Naver / 카카오, 모빌리티 ETA 기술 블로그, 2024
[6] 한국교통연구원, 도로 상태 및 정체 데이터셋, 2024
[7] 기상청(KMA), 기상 예보 OpenAPI Specification, 2024