KHUDA 10기 토이 프로젝트 2팀 저장소입니다.
기존 지도 서비스(네이버·카카오·티맵)는 도보 소요시간을 산출할 때 모든 사용자를 시속 4km 정속 보행자로 취급하며, 경사도와 신호대기 시간을 반영하지 않는다. 본 프로젝트는 이 세 가지 요인을 실측 데이터 기반으로 보정한 개인 맞춤형 도보 ETA 모델을 구축한다.
ETA = Σ(구간거리 ÷ (v_user × k_slope(경사도))) + Σ(신호대기시간)
| 기호 | 의미 | 산출 방식 |
|---|---|---|
v_user |
개인별 평지 기준 보행속도 | 회귀 잔차 기반 추정 |
k_slope |
경사도에 따른 속도 배율 | 다항회귀 (경사도, 경사도²) |
| 신호대기시간 | 횡단보도 평균 대기시간 | 이론공식(E(Wait)=R²/2C) + 실측 검증·보정 |
차별점
- 팀원 7명의 실측 보행 데이터로 경사도-속도 관계식을 직접 추정 (기존 연구·서비스는 정속 가정 또는 추측 계수 사용)
- 전체 통합회귀(pooled) → 계층적 축소추정(Shrinkage) 구조로 확장하여, 개인 데이터가 쌓일수록 전체 평균에서 개인 고유 반응 곡선으로 자동 수렴하는 개인화 구조 구현
- 신호대기 이론공식(균등 도착 가정)의 타당성을 실측으로 직접 검증
- 검증용 실측 경로에서 기존 방식(정속 4km/h) 대비 예측 오차 개선폭을 정량 제시
핵심 가설
"도보 시간을 결정하는 것은 거리만이 아니라, 지형(경사)과 사람(개인속도)과 신호 체계(대기시간)이며, 이 세 요인은 실측 데이터로부터 직접 추정 가능하다."
전량 자체 수집 데이터이며, 용도별로 4종으로 구성된다.
| 구분 | 내용 | 수집 방법 | 용도 |
|---|---|---|---|
| 학습용 보행 데이터 | 경사도가 다른 5개 구간(평지/완만·급경사 오르막·내리막)을 팀원 7명이 반복 보행 | Open GPX Tracker (1초 간격 GPS 로깅) | k_slope, v_user 회귀 |
| 신호대기 관찰 데이터 | 횡단보도 3개 이상 지점에서 도착·출발 시각 15회 이상 기록 | 현장 관찰 (스톱워치) | 신호대기 이론공식 검증·보정 |
| 경사도 데이터 | 보행 구간 좌표별 고도 | 국토지리정보원 정밀 DEM (rasterio 매핑) | 구간별 경사도(%) 산출 |
| 검증용 경로 데이터 | 학습에 사용하지 않은 실제 경로 8~10개의 실측 소요시간 | 팀원 실보행 측정 | 최종 모델 성능 평가 (기존 방식과 비교) |
데이터 처리 참고사항
- GPS 앱의 고도값(
<ele>)은 기기·앱에 따라 신뢰도가 낮음을 실측으로 확인(동일 구간 반복 시 물리적으로 불가능한 경사도 산출) → 좌표만 GPX에서 취득하고, 고도는 별도로 정밀 DEM에서 매핑 - 보행 경로는 30~50m 단위로 구간화하여 관측치 수를 확보 (구간 수 × 반복 횟수 대비 다수의 조각 단위 관측치 생성)
- 개인별 속도는
speed_ratio = 구간속도 ÷ 개인 평지속도로 정규화하여 경사 효과와 개인차를 분리
speed_ratio = β0 + β1·경사도 + β2·경사도²
- 선형/다항(2차) 모델을 비교하여 채택. 2차항은 급경사 내리막에서의 비선형 감속(관절 부담) 포착 목적
- 회귀계수의 통계적 유의성(p-value), R², 잔차 플롯으로 모델 타당성 확인
- 1차: 회귀 잔차의 개인별 평균으로 추정 (전체 데이터를 활용해 표본 안정성 확보)
- 확장: 계층적 축소추정(Shrinkage,
w_i = n_i/(n_i+k))을 적용해 개인 데이터량에 따라 전체 평균과 개인 고유값 사이에서 자동 보간 - 검증을 위해 팀원 중 일부는 측정 횟수를 의도적으로 늘려 불균형 데이터 구도를 형성, shrinkage 수렴 양상을 시각화
- 이론공식(교통공학 균등도착 가정):
E(Wait) = R²/(2C) - 실측 검증 회귀:
실측 대기시간 = α + β × 이론예측값 - 확장: 지점별 랜덤효과를 반영한 shrinkage 구조로 경사도 모델과 방법론적 일관성 확보
- 검증용 경로를 구간 단위로 분할 → 구간별
v_user × k_slope로 속도 산출 → 구간시간 합산 + 신호대기시간 - 평가지표: MAE, MAPE, 대응표본 t-검정(정속 모델 대비 개선의 통계적 유의성)
- 요인별 기여도 분해(Ablation): 개인속도/경사도/신호대기 각 요소의 오차 개선 기여도 분리 제시
[보행 GPS 로그] ─┬─→ [좌표 추출] ─→ [DEM 고도 매핑] ─→ [구간별 경사도]
└─→ [구간별 속도] │
└──────────┬──────────────┘
▼
[경사도-속도 회귀 (k_slope)]
│
[잔차 기반 v_user 추정 (+ Shrinkage)]
│
[신호대기 이론값 검증 회귀] ──┐
▼ ▼
[최종 ETA 계산 함수]
│
[검증 경로 실측 대비 평가]
.
├── data/ # 데이터셋
│ ├── raw/ # 원본 GPX, 신호대기 관찰 기록, DEM 원본
│ └── processed/ # 구간화·정제된 학습/검증용 테이블
├── models/ # 회귀 계수(k_slope, v_user), 학습된 모델 산출물
├── notebooks/ # 회귀 분석, 검증, 시각화 노트북
├── src/ # GPX 파싱, DEM 매핑, ETA 계산 등 소스 코드
└── docs/ # 기획서, 발표자료 등
| 이름 | 역할 |
|---|---|
| 최용환 | 팀장 |
| 홍민기 | 데이터 수집·전처리 |
| 박준서 | 모델링 |
| 권동하 | 모델링 |
| 김재형 | 데이터 수집·전처리 |
| 최희수 | 모델링 |
| 윤예진 | 데이터 수집·전처리 |