Metropy 연구 배경
10가지 공공데이터를 결합한 지하철 착석 효용 극대화 의사결정 모델 (SeatScore v4)
1. 문제 정의
수도권 지하철 이용에서 이용자가 체감하는 핵심 불편 요소 중 하나는 "앉을 수 있는가"입니다. 그러나 대부분의 지하철 정보 서비스는 혼잡도, 빠른 하차, 환승 효율 등 이동 이후의 편의성에 초점을 맞추고 있으며, 이동 중 착석 경험 자체는 직접 고려하지 않습니다.
"같은 열차를 탄다는 전제하에,
어느 차량(칸)에 탑승해야 이동 중 착석 효용이 최대화되는가?"
이것은 상태(state)를 예측하는 문제가 아니라, 출발 시점에서의 선택을 비교하는 의사결정(decision) 문제입니다.
2. 예측이 아닌 의사결정
칸별 착석률이나 칸별 하차 인원에 대한 정답 데이터(ground truth)는 존재하지 않습니다. 따라서 전통적인 지도학습 예측 문제로 접근할 수 없습니다.
Metropy는 이를 점수 기반 의사결정 문제로 재정의합니다. 10가지 관측 가능한 공공데이터(혼잡도, 역 구조, 시설 위치, 칸별 하차율, 실제 이동시간 등)를 결합한 효용 함수 SeatScore v4를 설계하여 칸 간의 상대적 착석 효용을 비교합니다.
3. 데이터 소스 (10가지)
4. 왜 2호선인가?
빠른환승 API(getFstExit) 테스트 결과, 2호선이 450개 레코드, 43개 역, 10량 고정 편성으로 모든 노선 중 가장 풍부하고 일관된 데이터를 보유하고 있었습니다. 순환선 특성상 내선/외선 양방향 분석이 가능하며, 수도권 최다 이용 노선으로 실용성이 높습니다.
5. 주요 발견
중간 칸(3~7호차)은 출구 시설이 집중되어 하차 승객이 많고, 자리가 빨리 비지만, 동시에 탑승 인원도 몰립니다. 이 트레이드오프가 SeatScore v4의 핵심 모델링 대상입니다.
6. 한계 및 주의사항
- 의사결정 지원 도구이지 착석 여부의 예측이 아닙니다. 정답(ground truth) 기반 검증은 구조적으로 불가능합니다.
- D(s)는 30분 단위 역 전체 평균 혼잡도 기반이며, 실시간 차량 내 인원과는 차이가 있을 수 있습니다.
- w(c,s)는 SK API 칸별 하차율 + 시설 위치 기반이며, 승객 개인 행동까지 반영하지는 않습니다.
- β=0.3, γ=0.5, δ=0.15, α 기준값은 휴리스틱 설정이며, 파라미터 탭에서 β/γ/δ 민감도 분석으로 직접 검증할 수 있습니다.
- 점수는 칸 간의 상대적 효용 비교이지, 절대적 착석 확률(%)을 의미하지 않습니다.
7. 개발 과정
Phase 1: 문제 발견과 데이터 탐색
서울교통공사 혼잡도 데이터와 빠른환승 API를 탐색하며, 2호선이 가장 풍부한 데이터를 가진 노선임을 확인. 10량 고정 편성, 순환선 구조가 분석에 최적.
Phase 2: SeatScore 모델 설계
예측이 아닌 의사결정 프레임으로 전환. 하차량, 잔여시간, 칸별 가중치, 시간대 배율, 탑승 경쟁도, 혼잡 감점 6개 요소를 결합한 효용 함수 설계.
Phase 3: 실시간 데이터 수집
SK 지하철 혼잡도 API(칸별 하차율, 칸별 혼잡도)와 TMAP 대중교통 API(실제 이동시간)를 연동. 일일 100건씩 데이터를 축적하며 모델 정밀도 향상.
Phase 4: 웹 앱 & 시각화
FastAPI 백엔드와 반응형 프론트엔드 구축. 열차 시각화, 착석 기회/혼잡 감점 차트, 칸별 추천 이유 설명, 인터랙티브 노선도, PWA 지원까지 완성.