20편 - 화물에서의 다이나믹 프라이싱(Dynamic Pricing)
Intro
화물 운송 시장은 사물의 이동을 필요로 하는 화주와 이동을 직접 수행하는 차주로 구분됩니다. 여기서 화물의 이동을 위해 화주와 차주를 연결하는 고리 역할을 하는 담당하는 것을 ‘주선’이라고 표현하고, 이들이 곧 화물 운송의 중개자 역할을 수행하게 됩니다. TMAP은 바로 이 ‘주선’의 관점에서 운송 중개 플랫폼을 구축함으로써 사물 이동 생태계에 직접적으로 참여하게 되었습니다.
화물 운송을 위해서는 특정 조건에 부합하는 차주와 해당 화물의 주인인 화주를 연결시키는 매칭 시스템이 필요한데요, 이 과정에서 화주/차주 양 side가 가장 중요하고 민감하게 생각하는 부분이 바로 운임 산정(pricing)입니다. 짐을 싣고 내리는 지역이 어떤 곳인지, 동일한 지역 간의 이동이라고 하더라도 어떤 경로를 따라 언제까지 어떤 방식으로 운송해야 하는지 등의 여러 요인들이 복합적으로 작용하여 화주와 차주가 만족하는 운임이 결정되기 때문입니다.
TMAP에서는 이러한 Pricing의 역할에 주목하였는데요. 바로 차별화된 운임 산정 시스템을 구축하는 것이 화물 운송 중개 플랫폼으로써의 경쟁력을 가져갈 수 있다는 확신이 있었기 때문입니다. 결과적으로 비교적 디지털 전환이 더딘 화물 운송 시장에서 TMAP화물의 진출은 “최적 운임 단가 산출”서비스를 토대로 기존 화물 중개 시장의 불필요한 흥정을 줄이는 효과를 가져왔습니다.
TMAP이 구축한 Pricing 시스템에서는 주선 담당자의 주관적인 판단이나 경험에 기대지 않고, 배차 이력 데이터 기반의 학습 모형을 도입하여 표준화된 가격 체계를 자동화하는데 중점을 두었습니다.
기존 화물 운송 단가 산출 근거가 주관적이고 비논리적일 가능성을 간과할 수 없었음에 반해 TMAP에서 구축한 데이터 기반의 모델링 단가의 경우, 실제 배차 이력과 학습 모형에 기반한 객관적인 단가 산출을 목적으로 하기 때문에 주관에 의한 비합리적 단가 산출을 회피할 수 있다는 장점이 있습니다.
이를 위해 TMAP에서는 대량의 배차 이력 데이터를 활용하여, 차량 타입이나 상하차지 특성 및 운송 경로, 화물 품목 특성이나 기상정보 등을 기본 요인을 반영하는 단가를 산출하는 모형을 생성하였고, 여기에 더해 실시간으로 화물운송의 수요/공급량을 feature로 녹임으로써 수요/공급 밸런스에 의한 가격 변동을 탄력적으로 반영할 수 있는 구조적인 틀을 만드는 데 성공하였습니다. 특히 TMAP에서 구성한 화물 운송 단가의 경우, 실시간 수요와 공급량의 패턴을 학습 모델에 포함시킴으로써 해당 시점에 최적화된 탄력적인 단가 체계를 시스템화시켰다는데 큰 의미가 있습니다.
Pricing Model
TMAP에서 구축한 화물 운송 단가 모델은 일명 SMTM(Show Me The Money)으로 지칭합니다. SMTM은 과거 배차 이력 데이터 등을 이용하여 산출한 기본 단가(BASE)영역과 특정 시점의 배차 확률을 고려하여 수정된 단가를 제안하는 조정 단가(CWAL, Can’t Wait Any Longer)영역으로 나누어집니다.
SMTM-BASE에서는 화물 배차 이력 데이터의 실배차 단가를 정답으로 삼고, 배차에 영향을 미치는 다양한 feature들을 설명변수로 하여 특정 조건에 대한 가격을 예측하는 모형을 학습시켰습니다. 여기서 화물 운송 단가에 주요 요인에 해당하는 변수들은 다음과 같습니다.
차량 타입요소의 경우, 화물 중량이나 부피 혹은 품목에 따른 차량 구조 등에 대한 구분된 분류정보 특성을 활용하게 됩니다. 즉, 톤수가 고 톤수일수록, 적재함의 길이가 길거나 혹은 윙바디와 같이 외부와의 노출을 막을 수 있게 설계된 차량일 경우 운임 산정 요소에서 플러스될 수 있는 요소로 이해해 주시면 좋을 것 같습니다.
품목이나 운송 조건은 기본적인 차량 타입 정보와 별개로 부가운임이 존재해야 하는 특별한 이유가 있는 경우를 고려합니다. 가령, 유리 제품과 같이 파손 위험이 높은 품목 운송에 각별한 주의가 요구되는 경우에는 추가 운임을 부여함으로써 리스크를 햇지할 수 있는 여지를 두었고요, 경유지와 같이 여러 상하차지를 거치는 경우도 마찬가지로 추가 시간과 리소스가 소요되기 때문에 운임 변동이 필요한 요소라 볼 수 있습니다.
거리 및 주행정보의 경우, 상하차지 페어에 대한 TMAP 내비게이션 경로 정보를 반영함으로써 직선거리가 동일함에도 실제 주행거리의 증감이나 소요시간에 차이에 따라 운임 산정에도 차별화된 영향을 미칠 수 있도록 하였습니다.
그리고 차주마다 선호하는 상하차지 페어가 있을 수 있는데요. TMAP 내비게이션 경로 주행 히스토리를 이용하여 수요 발생 지역과 공급 이동 패턴 분석 등에 활용하기도 합니다.
앞서 파악된 수요/공급 패턴은 또 다른 방식을 이용하여 단가 산출 주요 요인으로 활용되게 됩니다.
화물 차주가 운송 수요가 많은 지역에 하차할 경우, 회차 시에 다른 물량을 상차한 뒤 돌아올 수 있는 여지가 있기 때문에 비교적 저렴한 단가에도 화물 운송을 수락할 가능성이 높습니다. 이럴 경우에는 무리하게 화물 단가를 높이지 않고 적절히 할인된 단가를 책정함으로써 화주 side에게는 운임 경쟁력을 어필할 수 있는 요소로 작용하기도 합니다. 즉, 하차지의 수요량에 따라 운임이 변동했던 부분을 보다 명시적인 지표로 디택팅하고, 이를 다시 모델의 학습 feature로 포함시킴으로써 최종적으로 최적화된 운임이 산출될 수 있도록 구성하고자 하였습니다. 이를 위해 제한적이기는 하지만 전국 화물 운송 수요/공급에 대한 밸런스를 추정할 수 있는 방법을 TMAP 내비게이션 경로 주행 이력과 기타 데이터의 결합을 통해 해결하였습니다.
이와 같이 기본 단가 구성에 영향을 미치는 여러 요인들이 학습 모델에 반영되어 특정 시점 및 조건에 부합하는 표준화된 단가를 산출할 수 있게 되었습니다. 과거 화물 운송 중개 시장에서는 개인의 역량과 경험에 의존한 주관적인 단가 산정이 주를 이루었습니다. 이 때문에 실배차 단가와의 괴리가 발생하여 수익성 관리가 어려운 측면이 존재했습니다만 SMTM-BASE 단가의 경우 실배차 이력을 활용한 학습모델 기반 단가로써 이 같은 단점을 보완할 수 있었습니다. 실제 CBT 과정을 거쳐 진행된 단가 테스트에서 기존 방식(휴리스틱)으로 배차한 경우보다 상대적으로 높은 수익률을 기록했음이 확인되었습니다.
화물 시장에서 배차는 단시간에 이루어지진 않습니다. 콜 요청에서 운행완료까지 초/분단위로 이어지는 택시, 대리 시장 대비 화물 오더는 당일 운송에서부터 일주일, 한 달 이후 운송까지 다양한 시간의 오더를 등록합니다. 따라서 시장의 수요와 공급은 실시간으로 변동하며 이에 따라 정시성에 입각한 화물 단가 조정은 화물 중개업의 주요한 과제입니다. 상차시간에 임박할수록 더 높은 단가로 등록하는 것이 일반적인 상황이지만 항상 비례하지 않습니다.
위 그림은 실제 등록된 화물 오더에 대한 단가 조정 행동 패턴입니다. Order3, Order6과 같이 상차시간이 임박할수록 상향 단가로 조정함으로써 배차에 성공한 사례도 있으나 다른 Order들은 이전 단가 대비 항상 높은 단가로 조정하지 않습니다. Order5와 같이 수요와 공급 밸런스, 외생변수 등 시장 상황의 변화에 따라 상차 시간이 임박했을 때 오히려 첫 단가보다 낮은 단가로 배차가 이루어지는 경우도 발생합니다.
시장 상황 변동과 더불어 차주가 단가변동에 대한 학습을 통해 낮은 단가에도 오더를 수락하는 행동 패턴도 단가조정에서 고려해야 할 사항입니다. 상차시간이 임박하며 오더가 상향하다 하향 추세를 확인하면 다음 조정 시 단가가 하향할 확률이 높다고 판단하고 배차를 수락하기 때문에 시장 상황 변동과 차주의 단가 학습 패턴을 모두 고려하여 조정 단가를 산출하는 일에는 복합적인 변수들이 동시에 작동합니다. TMAP의 Pricing 시스템에는 이를 자동화한 SMTM-CWAL 모델을 추가로 구축했습니다. 첫 단가에서 시장 변동 상황을 고려했다면, 단가조정 모델에서는 이전 가격 조정 내역과 상차시간 전 임박 시간 변수에 비중을 두어 모델링합니다. 상차시간 전 임박한 시간은 화물 주선 업무가 진행되는 office hour 기준으로 계산하여 모델링에 반영했습니다. 배차이력 데이터 학습 시 실제 주선업이 운영되는 시간을 고려하여 반영해 현실 상황에 통용되는 모델을 고안했습니다.
SMTM-CWAL 모델은 두 가지로 구분됩니다. 배차 확률을 예측하는 CWAL-C (CWAL-Classifier) 와 조정 단가를 예측하는 CWAL-P (CWAL-Prediction) 으로 별도 모델로 구축했습니다. CWAL-C 모델은 현재 배차완료 되지 않은 오더를 분단위 배치로 조회하여 단가 조정이 필요한지 즉, 현재 단가로 배차가 성공할지 예측합니다. 만약, 배차 성공 확률이 낮다면 CWAL-P 모델에서 이전 단가 조정 내역을 고려한 조정단가를 산출합니다.
위 예시는 여러 변수 중 이전 단가 조정 내역과 CWAL-P 모델 예측 결과 데이터입니다.
모델의 결과를 해석하면,
'CWAL-C 결과 배차 현재 60,000원의 단가가 시장 단가 대비 낮으며, 65,000 → 50,000 → 60,000으로 조정한 오더에서 70,000원으로 단가 조정이 필요함' 입니다.
리드타임이 긴 화물 운송 특성에 맞춘 단가 조정 모델을 별도로 구축함으로써 효율적인 Pricing 모델을 구현했습니다.
Dynamic Pricing 으로 가장 많이 사용하는 알고리즘은 Decision Tree 모델과 Reinforcement learning (강화학습) 모델입니다. TMAP 화물운송 단가 모델에서는 gradient boosting 알고리즘을 기반으로 한 ML모형인 XGBoost 모형을 사용합니다. XGBoost의 경우 병렬 처리를 통해 학습 속도가 빠르고 과적합에 대한 규제(regularization) 기능을 갖음과 동시에 ML모형 중에서는 비교적 높은 예측 성능을 발휘합니다. 모든 화물 차량 톤수/타입과 상하차지 페어 정보에 대해 데이터 분포가 고르지 않기 때문에 데이터 양이 적은 페어에 대한 과적합을 방지하면서 빠른 학습을 통해 최신 데이터 학습 주기가 유연하게 변동 가능해야 합니다. CatBoost, LightGBM 대비 복합적인 조건에서 발생하는 화물 운송 단가의 운임 예측력이 상대적으로 높은 정확도를 나타내어 TMAP화물 Pricing 모형으로 최종 채택했습니다.
ref: How XGBoost Works - Amazon SageMaker
gradient tree boosting은 간단하지만 정확도가 낮은 모델의 결과값을 결합하여 빠른 속도로 높은 정확도에 도달하는 알고리즘입니다. 탄력적인 Pricing 모형을 구축함에 있어 앞서 언급한 강화학습이나 MDP(Markov Decision Process)과 같은 방식이 사용되기도 하지만, 단가 산정에 영향을 미치는 변수의 설명력과 Pricing 플랫폼 초기 구축 용이성을 위해 현시점 최적의 모형이라고 판단하였습니다.
Platform structure (Realtime serving)
화물 단가 제공 시스템은 AWS 클라우드 환경에 구축되어 있고 외부 시스템에서의 단가 요청과 응답은 화물 단가 API를 사용합니다. 단가 요청시점에서는 단가 산출에 필요한 상하차지, 운송 품목 정보, 차량 톤수 및 타입 정보 등을 입력 파라미터로 받아 다음의 Flow를 거쳐 처리하는 방식입니다.
API는 요청 파라미터의 값을 기반으로 단가 모델의 계산에 필요한 feature를 생성합니다. API 내부에서만 생성하는 feature도 있지만 수요공급 혹은 날씨 요인과 같이 미리 집계해 놓은 데이터나 외부 API를 호출해서 수집해 오는 작업이 필요합니다.
티맵의 길안내 API를 사용하여 상차지와 하차지까지의 길안내 소요 예측 시간과 거리를 요청합니다.
길안내 요청 시 상차 시간 기준으로 출발 시간을 설정하고 상차지와 하차지를 각각 출발지와 목적지로 설정합니다.
단가 API 요청은 대부분 상차시점을 앞두고 이루어집니다. 이 때문에 길안내 API에 요청하는 출발시간은 미래로 설정되는 경우가 많습니다. TMAP에서는 현시점의 길안내뿐만 아니라 미래 시점의 교통량을 예측하여 보다 정확한 경로안내 거리와 소요시간을 추정할 수 있습니다.
화물 운송 수요 데이터는 티맵화물에 등록된 화물의 등록, 배차, 완료등의 status를 실시간으로 집계하여 사용합니다.
구체적으로는 티맵 화물의 배차이력 DB를 DMS → Kinesis Data streams → lambda → opensearch 로 연동하게 되며, 실시간 집계를 위해서 등록 화물의 개별 status를 opensearch에 적재하여 API에서 직접 opensearch로 쿼리를 수행합니다.
여기서 화물의 개별 status (상차지 정보 포함)가 opensearch에서 집계되는 이유는 상차지와 하차지 위치 정보를 geohash기반의 grid에 매핑하여 그룹화하기 위함입니다.
날씨 정보는 공공데이터 포털에서 제공되는 단기 예보 조회 API를 사용하여 주기적으로 수집하여 DynamoDB에 저장하게 됩니다. 단기 예보는 대한민국을 여러 격자로 나누어 격자 단위의 정보를 일 8회 갱신하는 방식을 취하고 있습니다. 단, 단기 예보의 격자는 우리나라의 주요 지역에만 해당되기 때문에 API를 통해 수집하는 기상정보 데이터에는 음영지역이 존재하게 되는데요. 이로 인해 특정 상차지 좌표에 해당하는 기상정보 값을 확인하기 어렵다는 문제가 있습니다.
이를 해결하기 위해, 단기 예보 데이터를 연동할 때 존재하지 않는 좌표에 대해서는 실제 예보가 제공된 가장 가까운 좌표의 데이터를 매핑하는 로직을 추가했습니다. 덕분에 상차지 좌표에 해당하는 날씨를 빠르게 가져오는 서빙 구조를 구축할 수 있었습니다.
Further Works : 더 정확한 pricing을 위해서
TMAP Pricing은 이상치 발생 대응과 예측 정확도 향상을 위해 모니터링, 최신 데이터 재학습을 위한 자동 파이프라인 구축으로 점진적으로 개선하고 있습니다.
가장 먼저 모델을 상용 배포한 이후 실시간/일배치 단위의 모니터링 환경이 필요했습니다. 장애 발생 시 빠르게 대응하고 프로덕트, 사업팀과 원활한 소통을 위해서는 공통의 지표를 구축하는 일이 선제되어야 했기 때문입니다. TMAP Pricing 시스템에는 실시간 모니터링과 일단위 모니터링 환경이 구축되어 있습니다.
실시간 모니터링에서는 평균단가, 톤수별 단가 등과 같은 평균치를 분단위로 이상치 발생 여부를 확인합니다. 이상치가 발생했다면, 핫픽스 배포를 통해 장애 상황에 대응합니다. 일단위 모니터링은 평균단가, 톤수별 단가와 함께 MAPE, MAE, F1 score와 같은 모델 평가 메트릭을 통해 모델 성능을 확인하고 성능 저하 시 모델을 튜닝합니다. 모니터링 대시보드를 통해 프로덕트에서 접수된 VoC나 개선 사항에 대해 동일한 지표를 확인하고 합의점 도출 과정을 효과적으로 수행할 수 있습니다.
모델의 성능 저하는 학습 데이터와 실제 추론 데이터의 분포 차이에 의해 발생합니다. (Data Drift) 모델 학습과 평가 시에 사용한 데이터 세트와 최신 데이터의 분포가 상이하다면 정확한 추론 결과를 얻을 수 없습니다. 실제 추론 환경에서 성능 저하 현상을 방지하기 위해서는 최신 데이터 학습이 필요합니다. TMAP Pricing 시스템은 이에 대응하기 위해 데이터 수집, 정제, 학습, 배포 과정을 EventBridge로 트리거하여 AWS SageMaker 환경에서 자동으로 실행합니다. 모델별 특성에 따라 주기와 데이터 학습 window 기준, 학습데이터 정제 방법이 달라 동일 파이프라인이 아닌 모두 별도의 학습 파이프라인으로 동작하고 모델 배포 이전에 평가 과정을 파이프라인 내에서 수행하기 때문에 자동으로 최신 데이터를 반영하면서 성능을 유지하는 것이 가능합니다.
긴 글 읽어주셔서 감사합니다. TMAP 화물에 대한 많은 관심 부탁드리겠습니다.