2022년 광역버스 입석 금지 제도가 시행된 이후, 출퇴근시간 잔여 좌석이 없어 대기 시간이 하염 없이 길어지는 속상한 날들이 생겨났다. 실시간으로 광역버스의 잔여 좌석수와 위치 정보를 수집하여 현재 사용자가 위치한 버스 정거장에 도달하였을 때의 남은 잔여 좌석 수를 예측한다면 사용자 편의에 큰 도움이 될 것이다.
프로젝트 소개
- 기간 : 2025년 3월 24일 ~ 2025년 5월 23일
- 역할분담
- 실시간 버스 데이터 수집 : 김영홍
- 기후, 공휴일 데이터 적용 : 최상록
- LSTM 잔여좌석 예측 : 민채영
데이터 수집
모델링 전략
1. 비동기 처리 : 작업이 완료될 때까지 기다리지 않고, 다른 작업을 동시에 수행할 수 있도록 하는 방식. asyncio 라이브러리를 사용하였고, 비동기 처리와 스케줄러를 통해 RPM limit (분당 호출 제한) 내에서 최대한 많은 노선의 정보를 경기도 버스 정보 오픈 API에서 얻을 수 있었다.
2. TimescaleDB : PostgreSQL 기반의 시계열 데이터베이스 확장으로, 대용량 시계열 데이터를 빠르게 저장하고 분석할 수 있도록 최적화되어 있다. 1분 단위로 많은 데이터를 수집하기 때문에, 자동으로 시간 속성을 부여해주고, 데이터 분석 분야에서 익숙한 표준 SQL을 그대로 사용할 수 있어서 선택하였다.
3. 교통량 외 변수 제어 : 기상청 단기 예보 자료, 한국천문연구원의 공휴일 정보 데이터를 통해 다양한 상황에서도 안정적인 결과를 얻을 수 있도록 보정했다.
분석 결과 및 기대 효과
MAE : 1.37, R² : 0.852라는 결과를 얻었으며, 공휴일이 많은 5월임에도 양질의 결과를 얻어내는데 성공하였다.
해당 기술이 지도 애플리케이션 등에 적용된다면, 시민 편의 증진, 버스 자원 재배치 시뮬레이션등의 효과를 기대해볼 수 있을 것이다.
프로젝트 회고
Keep
- Docker를 통해 DB를 직접 설치하여 연결하지 않고 컨테이너 안에서 실행하여 사용하였음
- 실시간 대용량 데이터를 다루기 때문에 비동기 처리와 장애처리를 중요하게 개발함
Problem
- 분당 API 호출 제한이라는 문제상황을 처음 겪어 발생하여, 수집 범위를 줄이는 정도로만 대응하였음
- 단순히 LSTM 모델로 예측만 진행하여 프로젝트 규모가 다소 작아지게 되었음
Try
- 개발계정 허가를 받아서 5월 한 달만 진행하는게 아니라 e2e로 실시간 서비스를 만들어 보고 싶다.
- 실시간 빅데이터 처리에 대한 툴들을 공부해보고 싶다.
참고자료
https://velog.io/@carrysocks/버스-데이터-크롤러-개발-및-개선-자리있어-개발기-1
'프로젝트 회고' 카테고리의 다른 글
트랜드를 읽어주는 팟캐스트 생성 (1) | 2025.08.22 |
---|---|
스마트 그늘막 입지 선정 (2025 영천시 공공데이터 활용 경진대회) (6) | 2025.06.26 |
전기 자전거 충전소 MCLP (2025 세종시 공공데이터 창업경진대회) (2) | 2025.05.31 |
노원구 야간 돌봄 전담 유치원 제안 (0) | 2025.02.12 |
어린이 주식계좌 이벤트 기획 (제 3회 신한은행 빅데이터 해커톤) (0) | 2025.02.12 |