AI

[Colab] Prophet을 활용한 매출 예측 모델링

juunghee 2025. 2. 11. 16:29

목차

     

    최근 머신러닝 및 시계열 분석 분야에서 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을 활용하면 복잡한 시계열 데이터를 손쉽게 분석하고 미래 매출을 예측할 수 있습니다. 이번 포스트에서 소개한 내용을 바탕으로 실제 데이터에 적용해 보면서, 모델 성능을 개선하고 비즈니스 인사이트를 도출하는 데 활용해 보시길 바랍니다.

    home