Prophet 1 - parameter 알아보기

최재혁·2021년 11월 16일
0

Prophet

목록 보기
1/1
post-thumbnail

목차
  1. Prophet Parameter 설명
  2. Prophet 예시
  3. auto Parameter setting

 

Prophet 이란? 🤔

Prophet은 facebook에서 만든 시계열 데이터를 모델링을 위한 파이썬 모듈입니다.

Prophet은 시계열의 깊은 이해가 없어도 다양한 Parameter를 통해서 시계열을 활용할수 있도록 만들어진 모듈입니다.

Prophet 은 트렌드와 휴일과 데이터의 추세를 반영할수 있고,계절성을 추가해서 데이터를 다양한 방면으로 학습할수 있습니다.

월드컵,올림픽 과 같은 데이터로 보여지지 않은 주변 영향력까지 반영해서 더욱 강력한 예측 결과를 나타낼수 있습니다.

 

Prophet parameter 정리

👍(중요도는 엄지 수로 표시)

  • changepoint_prior_scale : 0.05 [default] 👍👍👍👍👍

    추세에 따라 데이터를 유연하게 반영할 건지 추세에 유연하지 않게 반영할 건지 결정하는 parameter
    추세에 덜 유연하게 반영하려면 default 값인 0.05 보다 작게 설정
    추세에 유연하게 반영하려면 0.05 보다 크게 설정

    추가적으로 기준일에 전날까지 반영할 거면 lower_window = -1, upper_window = 0
    기준일에 다음날까지 반영하면 lower_window = 0, upper_window = 1

  • seasonality_prior_scale : 10 [default] 👍👍👍👍👍

    계절의 유연성을 제어하는 parameter 값이 크면 계절성의 영향이 커지고 값이 작아지면 계절성의 영향이 줄어듦
    합리적인 조정 범위는 [0.01,10] 사이

  • holidays_prior_scale : 10.0 [default] 👍👍👍👍👍

    휴일의 영향에 따라 유연성을 조절하는 parameter
    조절 범위는 [0.01,10]

  • seasonality_mode : 'additive' [default] 👍👍👍

    옵션에는 ['addtive','multiflicative']
    'addtive' : 시계열 데이터가 진폭이 일정할 때 사용
    'multiflicative' : 시계열 데이터의 진폭이 점점 증가하거나 감소할 때 사용

  • changepoint_range : 0.8 [default]

    change point의 설정 가능 범위를 의미
    0.8 이면 데이터의 80% 중 changepoint를 자동으로 설정함
    조절 범위 [0.8,0.95]

  • growth : linear [default] 👍👍👍

    옵션 [liner, logistic] 존재
    prophet logistic을 사용한다고 할 때는 cap, floor이라는 값을 설정
    정해진 기준은 없고 모델을 돌리고 확인한 후에 설정하는 것을 추천

  • changepoints : auto[default]

    변경점을 수동으로 설정하기 위한 parameter

  • n_changepoints : 25 [default]

    자동으로 배치된 변경점의 수, 일반적인 시계열의 추세 변화를 파악하기 위해서 충분한 수로 설정해야 함.
    변경점의 수를 늘리거나 줄이는 것보다 추세 변화에서 유연성을 변경하는 것이 더 효과적일 수 있음

  • yearly_seasonality : auto [default] 👍👍👍👍

    데이터와 연간 계절성을 가지면 True 아니면 False로 설정 이와 같이 weekly_seasonality,daily_seasonality 존재
    각각의 계절성이 보인다면 키고 seasonality_prior_scale을 조절하는 게 효과적

  • holidays

    지정된 공휴일의 데이터 프레임을 전달하기 위해서 사용
    휴일 효과는 holidays_prior_scale을 통해서 조정

  • mcmc_samples : 0 [default]

    계절성의 불확실성을 확인할 때 사용됨 기본적으로 Prophet은 추세 및 관찰 노이즈의 불확실성만을 반환함
    계절성에 대한 불확실성을 얻으려면 전체 베이지안 샘플링을 수행해야 함

  • interval_width : 0.8 [default]

    Prophet의 predict은 yhat_upper, yhat_lower 와 같은 불확실성 구간을 반환함
    이것은 불확실성 구간에만 영향을 미치고 예측 yhat을 전혀 변경하지 않으므로 조정할 필요 없음

  • uncertainty_samples : 1000 [default]

    위와 같이 불확실성의 구간을 조정함

 

Prophet 중요한 Parameter 👏

--내가 사용한 경험기준!

  1. changepoint_prior_scale

    : Prophet 데이터에서 자동으로 changepoint를 80% 지점에서 자동으로 잡아서 추세를 설정하는데 그 때의 추세를 강하게 반영할건지 작게 반영할건지 선택하는 parameter

    • 실제로 Parameter 조정을 했을때 모델성능에 큰 영향력을 줬던 파라미터
    • n_changepoint 를 직접조절하면서 같이 조절한것이 좋은 성능을 보여주었습니다.

 

  1. seasonality_prior_scale

    : yearly_seasonality,weekly_seasonality,daily_seasonality 와 관련이 깊은 Parameter

    • 데이터가 연간 데이터로 이루어져있으면 yearly_seasonality = True
    • 데이터가 일별데이터로 날짜가 길면 weekly_seasonality = True
    • 데이터가 일별 데이터면 daily_seasonality = True

    위와 같은 seasonality를 True하고 seasonality_prior_scale로 영향력을 줄이는게 효과적이다.

    +추가로 add_seasonality(name='monthly',period=30.5,fourier_order=5) 와 같이 add_seasonality를 추가해서 계절성을 임의로 줄수있다.

 

3 .holidays_prior_scale

: 휴일의 영향력을 반영하는 Parameter , add_country_holidays(country_name='KR') 으로 한국의 휴일을 반영시킬수있다.

 

😆 다음에는 Prophet 예를 통해서 사용방법을 기술하도록 하겠습니다.

profile
기술로 내일 바꾸기!

0개의 댓글