메인 콘텐츠로 건너뛰기

서울 2호선 착석 칸 추천

아 앉고 싶다
저 사람 언제 내리지

출발역과 도착역만 고르면 데이터를 기반으로
앉아서 갈 확률이 높은 칸을 알려드려요.

계산 코드 보기
  • 11,934개 혼잡도 측정값
  • 51개 역 방향별 30분 단위
  • 10량 전체 비교

출처: 서울 열린데이터광장, 서울교통공사, SK, TMAP 데이터 조합

빠른 하차보다 빠른 착석

!

매번 감으로 고르는 칸

앉고 싶은 마음은 있는데, 어디가 덜 붐비는지는 늘 운에 맡깁니다.

  • 빠른 하차 칸은 줄이 길어 피하고 싶음
  • 노약자석 근처나 문 위치를 따져 타게 됨
  • 출근만 해도 이미 체력이 빠지는 느낌
M

metropy가 고르는 칸

하차 패턴과 혼잡도를 보고 앉을 가능성이 높은 칸을 먼저 보여줍니다.

  • 출발역과 도착역만 입력하면 10량을 비교
  • 사람이 몰리는 칸과 빈자리가 날 칸을 함께 계산
  • 추천 칸, 피할 칸, 기대 착석 시간을 한 번에 확인
"

출구까지 1분 아끼는 것보다,
앉아서 폰 보며 가는 30분이 남는 날이 있습니다.

계산은 metropy가 하고 타기만 하면 됩니다

1

경로 입력

출발역과 도착역, 탑승 시간을 선택합니다. 2호선 내선과 외선 방향은 자동으로 판별합니다.

2

데이터 비교

역별 하차 패턴, 칸별 혼잡도, 출입구와 시설 위치를 합쳐 10량을 같은 기준으로 비교합니다.

3

추천 확인

앉을 가능성이 높은 칸과 피해야 할 칸, 기대 착석 시간을 결과 화면에서 바로 확인합니다.

왜 이 칸이 더 나을까요?

하차 패턴 경유역에서 사람이 많이 내리는 칸일수록 빈자리가 생길 가능성이 커집니다.
탑승 경쟁 사람이 몰리는 칸은 빈자리가 생겨도 바로 앉기 어려워 점수를 낮춥니다.
역 구조 출구, 계단, 에스컬레이터 위치를 함께 보고 줄이 길어지는 칸을 피합니다.

핵심은 빈자리와 경쟁의 균형입니다

빈자리가 자주 생기는 칸이어도 같은 자리를 노리는 사람이 많으면 앉기 어렵습니다. metropy는 빈자리가 날 가능성과 그 자리를 잡을 가능성을 함께 계산해, 출근길에 체력을 덜 쓰는 선택을 돕습니다.

점수 = 경유역마다 자리가 날 가능성 × 남은 이동 시간 − 같은 자리를 노리는 사람 수

좌석 센서로 실시간 빈자리를 보는 것이 아닙니다. 공개된 혼잡도와 하차 기록으로 계산한 확률이라 빗나갈 수 있습니다.

직접 확인해보세요

출발역과 도착역만 선택하면, 지금 바로 앉기 유리한 칸을 확인할 수 있습니다.

경로 입력

첫차 05:00 ~ 막차 24:30
08:00 출근 시간대
🚇 첫차 🌅 출근 ☀️ 점심 🌆 퇴근 🌙 심야 🛤️ 막차

2호선 노선도

역을 클릭하여 출발/도착역을 선택할 수 있습니다. 스크롤로 확대, 드래그로 이동

추천 파라미터 조정

추천 알고리즘의 주요 설정을 조정하여 나에게 맞는 추천 결과를 받을 수 있습니다. 평소 지하철 이용 습관에 맞게 설정해보세요.

혼잡 회피 강도

0.30
0.0 — 혼잡 신경 안 씀 1.0 — 최대한 한산한 칸

탑승할 때 사람이 많은 칸을 얼마나 피할지 결정합니다.

값이 낮으면 "도착까지 자리 날 확률"만 보고, 값이 높으면 "타는 순간 얼마나 편한지"도 중요하게 봅니다.

0.0 "타는 순간 혼잡해도 괜찮아" — 중간칸(4~6호차)이 추천되기 쉬움
0.3 "적당히 균형있게" — 기본 설정. 착석 기회와 탑승 편의 모두 고려
0.7+ "붐비는 칸은 싫어" — 양끝칸(1, 10호차)도 추천될 수 있음

출퇴근 시간대처럼 사람이 많을 때는 이 값을 높이면 좀 더 여유로운 칸을 추천받을 수 있습니다.

하차 분포 압축 강도 (γ)

0.50
0.1 — 강한 압축 (균등화) 1.0 — 압축 없음 (원본 분포)

칸별 탑승 경쟁 분포를 얼마나 균등하게 만들지 결정합니다.

값이 낮으면 혼잡한 칸과 한산한 칸의 차이가 줄어들어 "어디든 비슷하게" 계산됩니다. 값이 높으면 실제 혼잡도 차이를 그대로 반영합니다.

0.1~0.3 "칸별 차이를 크게 줄여서" — 극단적으로 붐비는 칸의 불이익 완화
0.5 "적당히 균형있게" — 기본 설정. 적당한 분포 압축
0.8~1.0 "실제 데이터 그대로" — 혼잡도 차이를 그대로 반영

기본값 0.5는 극단적인 혼잡 편차를 완화하면서도 칸별 차이를 유지합니다.

초기 착석 보너스 강도 (δ)

0.15
0.0 — 보너스 없음 0.5 — 강한 보너스

한산한 칸에 탑승할 때 바로 앉을 수 있는 추가 점수를 부여합니다.

탑승 시점에 이미 빈 좌석이 있을 확률이 높은 칸(양 끝 칸 등)에 보너스를 줍니다. 경유역 하차와 무관하게 "타자마자 앉을 수 있는" 편의를 반영합니다.

0.0 "즉시 착석은 무시" — 경유역 하차 패턴만 반영
0.15 "적당한 보너스" — 기본 설정. 한산한 칸에 약간의 가점
0.3+ "바로 앉는 게 중요" — 탑승 즉시 착석 가능성을 높게 평가

장거리 이동이면 0.1 이하, 단거리(2~3역)면 0.3 이상이 적절할 수 있습니다.

역 시설별 하차 가중치

역마다 출구로 나가는 시설(에스컬레이터, 계단 등)이 다릅니다.

사람들은 편한 시설 근처에서 많이 내리기 때문에, 그 근처 칸에 빈자리가 생길 가능성이 높습니다. 이 가중치로 각 시설이 하차에 미치는 영향력을 조절합니다.

편해서 많이 내림 → 빈자리 기대 높음
이용 인원 적음 → 착석에 영향 거의 없음
기준값 (보통 수준의 하차)

가중치가 높을수록 "이 시설 근처에서 사람이 많이 내린다"고 판단합니다.

시간대별 중요도 배율

시간대에 따라 "어느 칸을 타느냐"의 중요도가 달라집니다.

혼잡한 시간대에는 칸 선택이 중요하고(배율 높음), 한산한 심야에는 어디를 타도 앉을 수 있어 배율이 낮습니다. 시스템은 이 기준값들 사이를 부드럽게 연결하여 자연스러운 변화를 반영합니다.

가장 붐비는 시간 → 칸 선택이 중요
출근보다 약간 여유
보통 수준 (기준값)
퇴근 피크 이후 완만하게 낮아짐
한산해서 어디든 착석 가능
출근 전 낮은 혼잡도

1.0보다 크면 칸 선택 효과가 커지고, 1.0보다 작으면 어디를 타도 비슷해집니다.

혼잡 회피 강도별 추천 변화

혼잡 회피 강도를 0.0에서 1.0까지 변화시키며, 각 칸의 추천 순위가 어떻게 바뀌는지 시각화합니다. 먼저 추천 탭에서 경로를 선택한 뒤 분석을 실행하세요.

📊 내 사용 통계

🎯 추천받은 칸 분포

내가 가장 많이 추천받은 칸은 몇 호차일까요?

📈 시간대별 이용 패턴

어느 시간대에 metropy를 가장 자주 사용했는지 확인하세요

🗺️ 자주 이용하는 경로 TOP 5

가장 많이 검색한 출발-도착 경로 순위

👥 다른 사람들이 많이 찾은 구간

최근 30일 동안 metropy에서 많이 조회된 구간입니다.

💬 피드백 통계

🔧 데이터 관리

metropy는 이렇게 계산해요

서울시가 공개한 혼잡도와 하차 인원 데이터로 칸마다 앉을 가능성을 계산합니다.

1. 문제 정의

수도권 지하철 이용에서 이용자가 체감하는 핵심 불편 요소 중 하나는 "앉을 수 있는가"입니다. 그러나 대부분의 지하철 정보 서비스는 혼잡도, 빠른 하차, 환승 효율 등 이동 이후의 편의성에 초점을 맞추고 있으며, 이동 중 착석 경험 자체는 직접 고려하지 않습니다.

"같은 열차를 탄다는 전제하에,
어느 차량(칸)에 탑승해야 이동 중 착석 효용이 최대화되는가?"

이것은 상태(state)를 예측하는 문제가 아니라, 출발 시점에서의 선택을 비교하는 의사결정(decision) 문제입니다.

2. 예측이 아닌 의사결정

칸별 착석률이나 칸별 하차 인원에 대한 정답 데이터(ground truth)는 존재하지 않습니다. 따라서 전통적인 지도학습 예측 문제로 접근할 수 없습니다.

metropy는 이를 점수 기반 의사결정 문제로 재정의합니다. 10가지 관측 가능한 공공데이터(혼잡도, 역 구조, 시설 위치, 칸별 하차율, 실제 이동시간 등)를 결합한 효용 함수 SeatScore v4를 설계하여 칸 간의 상대적 착석 효용을 비교합니다.

3. 데이터 소스 (10가지)

데이터출처규모
30분 단위 혼잡도 서울 열린데이터광장 2,264건
빠른환승 시설 정보 서울교통공사 API 450건
역간 거리 서울 열린데이터광장 52개 구간
실제 이동 시간 TMAP 대중교통 API 43개 구간
칸별 하차율 SK 지하철 혼잡도 API 195건
칸별 혼잡도 SK 지하철 혼잡도 API 248건
열차 혼잡도 SK 지하철 혼잡도 API 248건
역 하차 비율 혼잡도 데이터 가공 1,092건
시설/POI 가중치 빠른환승 데이터 가공 361건
출구 통행량 SK Exit Statistics API 287건

4. 왜 2호선인가?

빠른환승 API(getFstExit) 테스트 결과, 2호선이 450개 레코드, 43개 역, 10량 고정 편성으로 모든 노선 중 가장 풍부하고 일관된 데이터를 보유하고 있었습니다. 순환선 특성상 내선/외선 양방향 분석이 가능하며, 수도권 최다 이용 노선으로 실용성이 높습니다.

5. 주요 발견

3호차 10개 시나리오 중 5개에서 1위
4호차 10개 시나리오 중 3개에서 1위
1, 10호차 양 끝 칸은 일관되게 최하위

중간 칸(3~7호차)은 출구 시설이 집중되어 하차 승객이 많고, 자리가 빨리 비지만, 동시에 탑승 인원도 몰립니다. 이 트레이드오프가 SeatScore v4의 핵심 모델링 대상입니다.

6. 한계 및 주의사항

  • 어느 칸이 나은지 비교해 주는 도구이지, 앉을 수 있다고 보장하는 것이 아닙니다.
  • 혼잡도는 30분 단위 역 전체 평균입니다. 지금 그 열차에 실제로 몇 명이 탔는지와는 차이가 납니다.
  • 칸별 하차 인원은 통계와 시설 위치로 추정합니다. 그날 승객들이 어떻게 움직일지까지는 알 수 없습니다.
  • 혼잡도를 얼마나 감점할지 같은 계수는 실측으로 정한 값이 아니라 조정한 값입니다. 앞으로 실제 탑승 결과가 쌓이면 다시 맞출 예정입니다.
  • 점수는 이동 시간 중 앉아서 가는 비율의 추정값입니다. 실제 열차 상황에 따라 달라질 수 있습니다.

7. 개발 과정

Phase 1: 문제 발견과 데이터 탐색

서울교통공사 혼잡도 데이터와 빠른환승 API를 탐색하며, 2호선이 가장 풍부한 데이터를 가진 노선임을 확인. 10량 고정 편성, 순환선 구조가 분석에 최적.

Phase 2: SeatScore 모델 설계

예측이 아닌 의사결정 프레임으로 전환. 하차량, 잔여시간, 칸별 가중치, 시간대 배율, 탑승 경쟁도, 혼잡 감점 6개 요소를 결합한 효용 함수 설계.

Phase 3: 실시간 데이터 수집

SK 지하철 혼잡도 API(칸별 하차율, 칸별 혼잡도)와 TMAP 대중교통 API(실제 이동시간)를 연동. 일일 100건씩 데이터를 축적하며 모델 정밀도 향상.

Phase 4: 웹 앱 & 시각화

FastAPI 백엔드와 반응형 프론트엔드 구축. 열차 시각화, 착석 기회/혼잡 감점 차트, 칸별 추천 이유 설명, 인터랙티브 노선도, PWA 지원까지 완성.

8. Contact