Publicité

제 17회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [Catch, Traffic!] : 지하철 혼잡도 및 키워드 분석 데이터 파이프라인 구축

20 Feb 2023
Publicité

Contenu connexe

Similaire à 제 17회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [Catch, Traffic!] : 지하철 혼잡도 및 키워드 분석 데이터 파이프라인 구축(20)

Plus de BOAZ Bigdata(20)

Publicité

Dernier(20)

제 17회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [Catch, Traffic!] : 지하철 혼잡도 및 키워드 분석 데이터 파이프라인 구축

  1. 지하철 혼잡도 및 키워드 분석 데이터 파이프라인 구축 2023.01.28 BOAZ 18기 엔지니어링 부문 컨퍼런스 Catch, Traffic! 김인섭, 김재민, 서은유, 윤정원, 이현진, 조은학
  2. Hadoop / Spark / Airflow linear regression / prophet vs CSV 성능 비교 팀원 소개 프로젝트 설명 데이터 설명 아키텍처 설명 분석 과정 소개 및 성능 개선 시각화 시연 추가 연구 방향 Reference Contents Part 1. Part 2. Part 3. Part 4. Part 5. Part 6. Part 7. Part 8.
  3. Part 01 팀원 소개 프로젝트 소개 Part 02
  4. 1. 팀원 소개 18기 엔지니어링 숭실대학교 산업정보시스템공학과 담당 역할 : 분석 김인섭 18기 엔지니어링 국민대학교 AI빅데이터융합경영학과 담당 역할 : 분석, 엔지니어링 김재민 18기 분석 동덕여자대학교 정보통계학과 담당 역할 : 시각화 서은유 18기 엔지니어링 명지대학교 융합소프트웨어학부 담당 역할 : 엔지니어링 조은학 18기 엔지니어링 서울과학기술대학교 산업정보시스템전공 담당 역할 : 분석 이현진 18기 엔지니어링 숙명여자대학교 소프트웨어융합전공 담당 역할 : 분석, 엔지니어링 윤정원 : 팀장 Catch, Traffic
  5. 수도권 내 교통 문제 해결을 위한 사회적 요구 증가 수도권 교통혼잡비용 : 2014년 12.0조원/년 → 2016년 17.4조원/년 대한민국 인구의 약 50%가 거주하는 수도권의 전략적인 대응 필요 출퇴근 막힘 출퇴근 교통난 도로 혼잡 버스 만석 버스 혼잡 혼잡도를 해결하기 위한 연구 현황 • 신설도로 개선대안을 제안 • 광역버스의 이용성 향상 방안 • 환승센터 개선방안 등 제안 국토교통부 「광역교통 개선 추진방안」 교통불편 개선 시급 지구에 대중교통 중심의 보완대책을 마련 2. 프로젝트 설명 부정적인 단어
  6. 수도권 내 교통 문제 해결을 위한 사회적 요구 증가 수도권 교통혼잡비용 : 2014년 12.0조원/년 → 2016년 17.4조원/년 대한민국 인구의 약 50%가 거주하는 수도권의 전략적인 대응 필요 출퇴근 막힘 출퇴근 교통난 도로 혼잡 버스 만석 버스 혼잡 혼잡도를 해결하기 위한 연구 현황 • 신설도로 개선대안을 제안 • 광역버스의 이용성 향상 방안 • 환승센터 개선방안 등 제안 국토교통부 「광역교통 개선 추진방안」 교통불편 개선 시급 지구에 대중교통 중심의 보완대책을 마련 2. 프로젝트 설명 부정적인 단어 • 서울 지하철역 기준 혼잡도 • 역별 인스타그램 핵심 키워드 혼잡한 지하철역의 핵심 키워드를 기반으로 비혼잡 지역에 혼잡도를 분산시킬 수 있는 방안을 찾는 데이터 파이프라인 구축
  7. Part 03 데이터 설명
  8. • 서울시 지하철 호선별 역별 승하차 인원 정보 • 서울시 행정동별 지하철 총 승차 승객수 정보 서울시 지하철 호선별 역별 승하차 인원 정보 서울시 행정동별 지하철 총 승차 승객수 정보 • CSV 파일 및 OPEN API 제공 • 데이터 갱신주기 : 매일 • 데이터 제공부서 : 도시교통실 교통기획관 미래첨단교통과 • 데이터 구조 : 기준_날짜, 행정도_ID, 지하철_승객_수, 지하철_승객_수_00시~23시 • CSV 파일 및 OPEN API 제공 • 데이터 갱신주기 : 매일 • 데이터 제공부서 : 도시교통실 교통기획관 교통정책과 • 데이터 구조 : 사용일자, 호선명, 역명, 승차총승객수, 하차총승객수, 등록일자 3. 데이터 설명
  9. • 지하철역별로 900개의 게시물 글 크롤링 • 지하철역별로 인스타그램 게시물 해시태그 추출 전처리 • 숫자/문자/# 을 제외한 특수문자 제거 • 해시태그 표시 # 이 있는 게시물만 추출 • 역별 해시태그 목록 추출 서울시 지하철역 인스타그램 해시태그 3. 데이터 설명 • 인스타그램 API 사용하여 크롤링 • 서울시 25개 자치구별로 최대 2개의 역 추출 ⇒ 총 48개 지하철역 대상
  10. Part 04 아키텍처
  11. 방대한 양의 데이터를 저장하고 구문 분석하는 모든 구성 요소를 처리하기 위한 오픈 소스 프레임워크 Version : 3.2 4. 아키텍처 버클리대학 AMPLab에서 개발한 스칼라 기반의 빠른 분석이 가능한 대용량 데이터 처리 엔진 Version : 3.2 Version : 3.2 Airbnb에서 개발한 워크플로우를 작성 예약 및 모니터링하는 플랫폼
  12. 4. 아키텍처 • 서울시 지하철 호선별 역별 승하차 인원 정보 • 서울시 행정동별 지하철 총 승차 승객수 정보 • 서울시 지하철역 인스타그램 해시태그 데이터 수집 Hadoop + Spark 지하철 혼잡도 시계열 분석 해시태그 카운팅 Airflow DAG 작성 파이프라인 구축 혼잡도 분석과 해시태그 카운팅 과정을 자동화 결론 태블로 시각화 및 시연
  13. Part 05 분석 과정 소개
  14. 5. 분석 과정 소개 및 성능 개선 • 페이스북에서 만든 시계열 예측 라이브러리 • 정확도가 높고 빠르며 직관적인 파라미터로 모델 수정이 용이 • : 주기적이지 않은 변화인 트렌드를 나타냄(부분적으로 선형 또는 logistic 곡선으로 이루어짐) • : weekly, yearly등 주기적으로 나타나는 패턴 포함 • : 휴일과 같이 불규칙한 이벤트 나타냄(특정 기간에 값이 비정상적으로 변했을 때 반영) • : 정규분포라 가정한 오차 • Apache Spark와 Python의 공동 작업을 지원하기 위해 릴리스되었으며, 사실상 Spark용 Python API의 일종 • Scala 프로그래밍 언어로 작성됨 • Apache Spark와 Python 프로그래밍 언어로 RDD(Resilient Distributed Datasets)에 접속하는 데 도움이 됨 • 사용하는 언어와 무관하게 column 베이스로 데이터를 효율적으로 처리할 수 있도록 도와주는 플랫폼 • Pandas UDF는 Apache Arrow가 제공하는 Spark와 Pandas간의 데이터 포맷 공유 기능으로 빠른 연산 속도 보장 • Pandas UDF 는 Pandas 형태의 input과 output으로 함수를 구성
  15. 5. 분석 과정 소개 및 성능 개선 Pandas UDF • spark 사용자들이 편리하게 Pandas API를 사용 할 수 있도록 도와줌 • Apache Arrow를 통해 실행 되며 vectorized된 연산 • row마다 실행되는 Spark UDF(user-defined function: 사용자 정의 함수)를 사용하는 것 보다 좋은 성능을 보장 • spark 2.3에 추가된 기능으로 기존의 spark UDF와는 다르게 groupby의 apply에 분산처리를 하면서 데이터가 전달됨
  16. 5. 분석 과정 소개 및 성능 개선 • 스파크 세션 생성 ds y 역명 라벨 2022-09-01 05:0:00 120 136 2022-09-01 07:0:00 21 262 2022-09-01 08:0:00 59 261 분석 과정 • 데이터 분할 스파크 세션 생성 > 병렬 처리를 위한 데이터 분할(역명으로 그룹처리) > PandasUDF 및 pyspark를 사용해 prophet 모델을 병렬로 학습
  17. 5. 분석 과정 소개 및 성능 개선 • Pandas UDF 및 PySpark를 사용해 Prophet 모델을 학습 역명라벨 ds y Yhat Yhat_upper Yhat_lower 2 2022-09-01 05:00:00 96 114.68579640045687 1721.7009872904907 -2491.1485053321926 2 2022-09-01 06:00:00 97 253.1670255061066 2431.191249092613 -1909.5763578195913 2 2022-09-01 07:00:00 143 643.8507506636947 3018.208084040989 -1538.0250872455354 모델 1개 Time : 6.92초 모델 283개(병렬) Time : 26.73초 스파크 세션 생성 > 병렬 처리를 위한 데이터 분할(역명으로 그룹처리) > PandasUDF 및 pyspark를 사용해 prophet 모델을 병렬로 학습
  18. 5. 분석 과정 소개 및 성능 개선 • 원본 데이터 승객 수가 시간대 별 누적 값이므로 열차 대수로 나눔 스파크 세션 생성 > 병렬 처리를 위한 데이터 분할(역명으로 그룹처리) > PandasUDF 및 pyspark를 사용해 prophet 모델을 병렬로 학습 호선 첫차/막차 시간대 출퇴근 시간대 이외의 시간대 1 4 14 12 2 6 17 10 3 6 13 9 4 7 16 11 5 6 13 10 6 6 12 8 7 6 13 10 8 4 10 7
  19. 5. 분석 과정 소개 및 성능 개선 Persist, cache 적용 • Spark에서는 action 시점마다 데이터를 메모리로 로드 • 비효율적으로 한번 로드한 데이터를 메모리 상에 상주시킬 수 있는 persist와 cache 메소드 존재 - Cache : 기본값으로 설정된 storage level만 활용 가능 - Persist : Storage level을 사용자가 정할 수 있음. • 성능 비교 (Time 기준) - 아무것도 사용하지 않을 때 : 0.75초 - Cache 사용했을 때 (MEMORY AND DISK) : 0.45초 - Persist(StorageLevel.MEMORY_ONLY) : 0.20초 - Persist(StorageLevel.MEMORY_AND_DISK) : 0.42초
  20. 5. 분석 과정 소개 및 성능 개선 Parquet와 csv 차이 - 데이터를 대량으로 처리하기 위해 효율적인 데이터를 압출할 수 있고 인코딩 체계를 제공 - Row가 아닌 column 기반으로 저장하여 저장 공간을 절약 및 분석 속도 향상 • Parquet : column-oriented로 데이터 저장과 조회에 효율적인 성능을 보이는 데이터 파일 형식 저장 공간 읽기 속도 Csv 34.03 MB 9.23초 Parquet 7.65 MB 5.93초 • 프로젝트 성능 비교 Parquet의 형식이 더 효율 높음
  21. 5. 분석 과정 소개 및 성능 개선 Airflow를 활용한 혼잡도 분석과 해시태그 카운팅 과정 자동화 지하철 혼잡도 API 크롤링 크롤링 데이터 전처리 지하철 혼잡도 예측 Schedulling & Triggers Data Pipeline • 지하철 데이터 크롤링 : 서울시 열린 데이터 광장 api 를 사용하여 지하철 호선별 역별 승하차 인원 데이터 크롤링 • 데이터 전처리 : null 값 등 특이값 제거 후 데이터 프레임 저장 • 지하철 혼잡도 예측 : prophet 함수를 사용하여 지하철 혼잡도 예측 • 지하철 혼잡도 분석자동화 과정
  22. 5. 분석 과정 소개 및 성능 개선 Airflow를 활용한 혼잡도 분석과 해시태그 카운팅 과정 자동화 - DAG Directory : AirFlow에서 실행할 작업들을 파이프라인 형태로 저장 - Subway_density_dag:
  23. 5. 분석 과정 소개 및 성능 개선 Airflow를 활용한 혼잡도 분석과 해시태그 카운팅 과정 자동화 - DAG Directory : AirFlow에서 실행할 작업들을 파이프라인 형태로 저장 - Subway_density_dag:
  24. 5. 분석 과정 소개 및 성능 개선 Airflow를 활용한 혼잡도 분석과 해시태그 카운팅 과정 자동화 인스타 데이터 크롤링 크롤링 데이터 전처리 해시태그 빈도수 분석 Data Pipeline Schedulling & Triggers • Hashtag 카운팅 자동화 과정 • 인스타 데이터 크롤링 : 인스타 api 를 사용하여 실시간 서울시 해시태그 데이터 크롤링 • 데이터 전처리 : 해시태그가 있는 게시물만 전처리 후 데이터 프레임 저장 • 해시태그 빈도수 분석 : 주기적 해시태그 빈도수 WordCount
  25. 5. 분석 과정 소개 및 성능 개선 Airflow를 활용한 혼잡도 분석과 해시태그 카운팅 과정 자동화 - DAG Directory : AirFlow에서 실행할 작업들을 파이프라인 형태로 저장 - Hashtag_dag 코드:
  26. 5. 분석 과정 소개 및 성능 개선 Airflow를 활용한 혼잡도 분석과 해시태그 카운팅 과정 자동화 - DAG Directory : AirFlow에서 실행할 작업들을 파이프라인 형태로 저장 - Hashtag_dag :
  27. Part 06 시각화 시연
  28. 6. 시각화 시연 시각화 시연 영상
  29. Part 07 추가 연구 방향 Reference Part 08
  30. 7. 추가 연구 방향 정보제공 지역 확대 및 혼잡도 정보의 정확도 높이기 기존 시스템이 제공하는 정보의 확대 및 개선 실사간 분석 정보를 반영하는 웹 구현 처리 데이터 적재를 기반으로 데이터 활용도 높이기 클라우드 컴퓨팅 시스템으로 유연성과 효율성 확대 사용 데이터 및 시스템의 활용 유연성 확보
  31. 8. Reference [1] 조은학, 개발일기 블로그 Data Engineering 칼럼, ~2023 [2] VULTR , Install and Configure Apache Hadoop on Ubuntu 20.04, 2021 [3] VULTR, Install Apache Spark on Ubuntu 20.04, 2021 [4] 스파이디웹, Apache Airflow 설치 및 실습하기 series, 2021 [5] 딥상어동의 딥한생각, Airflow 데이터 적재 파이프라인 튜토리얼 - 서울시 지하철호선별 역별 승하차 인원 정보 적재하기, 2022 [6] 서울시, 서울시 실시간 도시데이터, 2022 [7] 국토교통부, 신도시 등 광역교통 개선 추진방안, 2022 [8] 박준석, 오주택, 도로교통혼잡도분석을통한수도권광역도로교통 개선방안연구,2022 [9] 지표덕후, 인스타그램 해쉬태그(#) 검색결과 크롤링하기_최신ver,2022 [10] Tech-Diary, airflow 기초, 2019
  32. THANKYOU BOAZ 17th Conference Catch, Traffic!
Publicité