목차
최근 머신러닝 및 시계열 분석 분야에서 Prophet 라이브러리를 활용한 예측 모델링이 주목받고 있습니다. Facebook(현재 Meta)에서 개발한 Prophet은 계절성, 추세, 휴일 효과 등을 손쉽게 반영하여 시계열 데이터를 예측할 수 있는 강력한 도구입니다. 이번 포스트에서는 Prophet을 활용하여 실제 매출 데이터를 기반으로 미래 매출을 예측하는 과정을 단계별로 소개하고자 합니다.
1. Prophet 라이브러리 소개
Prophet은 다음과 같은 특징을 가지고 있습니다.
- 쉬운 사용법: 복잡한 시계열 모델을 단 몇 줄의 코드로 구현 가능
- 자동화된 계절성 및 추세 분석: 주간, 월간, 연간 등 다양한 계절성을 자동으로 반영
- 휴일 효과 반영: 특정 이벤트나 휴일의 효과를 손쉽게 추가 가능
- Robust: 결측치 및 이상치에 대해 강건하게 작동
이러한 장점 덕분에 매출, 방문자 수, 재고 관리 등 다양한 분야에서 Prophet을 활용하여 미래 값을 예측할 수 있습니다.
2. 데이터 준비 및 전처리
Prophet은 입력 데이터의 컬럼 이름으로 날짜(ds)와 목표 변수(y)를 요구합니다. 매출 예측의 경우, 날짜와 해당 일자 또는 월의 매출액을 포함하는 데이터프레임을 준비해야 합니다.
기존에 가지고있던 realistic_sales_data.csv 파일을 불러오도록 하겠습니다.
지금 저희는 구글 코랩에서 사용하고있기 때문에 파일을 가져와야 합니다.
1. 드라이브와 연동이 되어있고, 가져올 파일이 드라이브에 있다면 바로 경로에 이동해서 가져올 수 있습니다.
import pandas as pd
pd.read_csv('drive/MyDrive/python/data/realistic_sales_data.csv')
2. csv 파일을 디폴트 경로에 가져오기
import pandas as pd
df = pd.read_csv('realistic_sales_data.csv')
왼쪽에 파일을 누르고 파일을 끌어다 놓으면 위 코드와 같이 바로 가져올 수 있습니다.
가져온 파일은 content 파일에 저장됩니다.


이제 데이터를 불러오겠습니다.
import pandas as pd
df = pd.read_csv('realistic_sales_data.csv', parse_dates=['date'])
# 데이터 확인: 날짜 컬럼과 매출 컬럼이 존재하는지 확인합니다.
📌 parse_dates=['date']는 pandas에서 데이터를 읽을 때 date 열을 datetime 형식으로 변환하는 옵션입니다.
즉, 해당 열의 값들이 날짜나 시간 형식인 경우, 이를 문자열 대신 날짜/시간 객체로 처리하게 됩니다.
따라서 parse_dates를 사용하면 데이터를 읽을 때 date 열이 자동으로 날짜 형식으로 변환되어, 날짜 기반의 분석이나 작업이 용이해집니다.
예를 들어, 날짜별로 데이터를 그룹화하거나, 특정 기간을 기준으로 필터링할 때 유용합니다.
데이터 프레임은 반드시 날짜 정보가 담긴 ds 컬럼과 예측 대상인 y 컬럼으로 구성되어야 합니다.
예를 들어, 데이터가 아래와 같이 구성되어야 합니다.
| ds | y |
|---|---|
| 2025-01-01 | 1500 |
| 2025-01-02 | 1700 |
만약 기존 데이터셋의 컬럼명이 다르다면, 아래와 같이 컬럼명을 변경해 주세요.
# 기존 날짜 컬럼이 'date', 매출 컬럼이 'sales'인 경우
df.rename(columns={'date': 'ds', 'sales': 'y'}, inplace=True)
3. Prophet 모델 생성 및 학습
이제 Prophet 모델을 생성하고 데이터를 학습시키는 단계입니다. Prophet 라이브러리는 이미 설치되어있어서 따로 설치를 하지 않아도된다.
모델 생성 및 학습 코드는 다음과 같습니다.
from prophet import Prophet
# Prophet 모델 생성 (기본 설정 사용)
model = Prophet()
# 모델 학습: 데이터프레임은 'ds'와 'y' 컬럼을 포함해야 합니다. model.fit(df)
model.fit(df)
4. 미래 매출 예측 및 결과 시각화
모델이 학습되면, 미래 기간에 대한 데이터를 생성하고 예측을 수행할 수 있습니다. 예를 들어, 앞으로 90일간의 매출 예측을 수행해 보겠습니다.
# 미래 90일간의 데이터 생성
future = model.make_future_dataframe(periods=90)
# 예측 수행
forecast = model.predict(future)
# 예측 결과 확인
forecast[['ds', 'yhat', 'yhat_lower', 'yhat_upper']].tail())
예측 결과는 yhat 컬럼에 담겨 있으며, yhat_lower와 yhat_upper는 예측 구간을 나타냅니다.

예측 결과 시각화
Prophet은 예측 결과를 쉽게 시각화할 수 있는 내장 함수를 제공합니다.
# 예측 결과 전체 시각화
model.plot(forecast)

- 라벨 이름 정리
import matplotlib.pyplot as plt
model.plot(forecast)
plt.title('Sales Forecast')
plt.xlabel('Date')
plt.ylabel('Sales')
plt.show()

트랜드 및 계절성 시각화
# 각 구성요소(추세, 주기성, 휴일 효과 등) 시각화
model.plot_components(forecast)
plt.show()

5. 활용 팁 및 결론
활용 팁
- 휴일 효과 추가: 특정 프로모션이나 이벤트가 매출에 영향을 미친다면, 해당 날짜를 휴일 리스트에 추가하여 모델에 반영할 수 있습니다.
- 모델 튜닝: 기본 모델 외에도 성장(trend) 변화점, 계절성 등 여러 파라미터를 조정하여 모델 성능을 개선할 수 있습니다.
- 검증 데이터 활용: 과거 데이터를 일정 기간 분리하여 모델의 예측력을 검증해 보세요.
결론
Prophet을 활용하면 복잡한 시계열 데이터를 손쉽게 분석하고 미래 매출을 예측할 수 있습니다. 이번 포스트에서 소개한 내용을 바탕으로 실제 데이터에 적용해 보면서, 모델 성능을 개선하고 비즈니스 인사이트를 도출하는 데 활용해 보시길 바랍니다.
'AI' 카테고리의 다른 글
| 토크나이저(Tokenizer) 란? (사용예제까지!) (0) | 2025.02.13 |
|---|---|
| 파인튜닝 (Fine-Tuning) 이란? (0) | 2025.02.13 |
| 🤗 Transformers 라이브러리의 pipeline 사용하기 (0) | 2025.02.12 |
| 🤗 Hugging Face 활용하기 (주요 특징과 기능까지) (0) | 2025.02.12 |
| [Colab] 구글 Colab 사용법 (0) | 2025.02.11 |