이번에는 지난 포스팅에 이어서 Prophet 모델에 대해서 알아보겠습니다.
지난번 포스팅에서는 주로 Prophet 모델과 라이브러리에 대해서 개념적으로 알아보았는데요
[머신러닝 with Python] Prophet 모델 알아보기(시계열 예측)
[머신러닝 with Python] Prophet 모델 알아보기(시계열 예측)
이번에는 시계열 예측(Time Series Forecasting) 모델 중 라이브러리 형태로 쉽게 구현 가능하면서도 효과적인 Prophet 모델에 대해서 알아보겠습니다. Prophet은 (구) Facebook ( 현: Meta) 에서 만든 시계열
jaylala.tistory.com
이번에는 실제 데이터를 활용해서 모델을 구현해보도록 하겠습니다.
1. Peyton Manning 웹 트래픽 데이터을 활용한 Prophet 모델 구현
1.1 Peyton Manning 데이터
- 해당 데이터는 미국 NFL의 전설적인 쿼터백인 Peyton Manning의 Wikipedia 페이지 방문 횟수를 기록한 시계열 데이터 입니다.
* 기존 Prophet 라이브러리에서 예제 데이터로 소개했던 데이터입니다. 지금은 라이브러리 상으로 다운은 제한되지만 간단한 코드 한 줄로 쉽게 다운로드가 가능합니다.
1.2 Peyton Manning 데이터 시각화
- 우선 해당 데이터를 다운로드 받고 기본적인 데이터의 특성을 알아보도록 하겠습니다.
* 구현은 구글 코랩으로 하였으니, 아래 코드를 참조해서 쉽게 따라하시기가 가능하실 것입니다.
* 먼저, 코랩 환경내에서 한글 폰트가 설치가 안되어있기에 설치해줍니다(시각화에서 한글을 활용하기 위해서입니다)
* 이제 Peyton manning 데이터를 다운로드 받아주고, 데이터를 불러와봅니다.
* 해당 데이터를 x축은 날짜(시간), y축은 트래픽(로그 스케일로 변환)으로 시각화 해보겠습니다.
* 연간 트래픽으로 요약해서 시각화해보겠습니다.
* 또한, 전체적인 그림 슈퍼볼 경기일자를 추가해서 시각화해보겠습니다.
2. Prophet 모델을 활용한 데이터 분석
이제 Prophet Model을 활용해서 데이터를 분석해보겠습니다.
- 먼저 Prophet을 설치해줍니다.
- 이제 사전에 불러온 데이터(df)를 가지고 기본적인 모델 Inference를 해보겠습니다.
- 그리고 해당 데이터 마지막일 기준 향후 1년 예측을 위한 데이터 프레임을 만들어줍니다.
* 예측 결과 중 마지막 5개의 데이터를 출력해보면 아래와 같습니다. yhat이 예측 값이며, yhat_lower는 95% 신뢰구간 범위내에서 하한 / yhat_upper는 95% 신뢰구간 범위내에서 상한입니다.
- 이제 기존 데이터와 예측한 향후 1년 데이터를 포함해서 Prophet 데이터가 예측한 내용을 시각화해보겠습니다.
* 이때 파란색 선은 예측값, 밝은 파란색 영역은 모델의 신뢰 구간(Confidence Interval)입니다. 특정 시점에 트래픽의 급등과 계절성이 반영된 것을 확인할 수 있습니다.
- 이번에는 트렌드 및 계절성을 분석해보겠습니다.
* 첫번째 그림이 Trend, 두번째가 Weekly Seasonality, 세번째 그래프가 Yearly Seasonality 입니다.
- 이제 Holiday Effects를 추가해서 분석을 해보겠습니다. 추가할 특정 이벤트는 "슈퍼볼이 있는 날짜" 입니다.
*Holiday Effect를 추가하긴 했지만 해당 숫자가 많지 않으며, 이미 데이터에 잘 반영되어있어서 그런지 큰 변화를 체감하기는 어렵습니다.
이렇게 실제 데이터를 활용해 Prophet 모델을 분석해보았습니다.
쉽고 다양하게 분석이 가능하며, Meta에서 개발해서 계속 보수관리하고 있기에 신뢰성있게 사용가능한 모델이라고 생각됩니다.
'딥러닝 with Python' 카테고리의 다른 글
[딥러닝 with Python] Self-Supervised Learning (2) : 대조학습(Contrastive Learning) (0) | 2025.03.03 |
---|---|
[Deep Learning with Python] 그래프 신경망(GNN)과 기존 신경망의 차이 (0) | 2025.03.02 |
[딥러닝 with Python]Vision-Language Models(VLM)와 Data Curation의 중요성 (0) | 2025.03.01 |
Contrastive Learning 기초 : EBM, NCE, InfoNCE (0) | 2025.02.28 |
[딥러닝 with Python] Self-Supervised Learning (1) : Pretext Task (0) | 2025.02.28 |
댓글