Seasonality Detector
This is a model selection based seasonality detector, and the procedure is described as follows,
- Given all possible seasonalities we generated all possible combinations
- Fit Prophet for each combination
- Do model evaluation and select the
best performed
one - The corresponding seasonality (or seasonalities) are determined
The intuition is to trust the empirical evaluation (in terms of averaged MAPE) with our back testing procedure for a given dataset + Prophet. One can also use other metrics such as AIC, BIC, etc.
API
class SeasonalityDetector(data,
train_percentage,
test_percentage,
sliding_steps)
Parameters
data: input data with TimeSeriesData format
train_percentage: percentage for training data set
test_percentage: percentage for testing data set
sliding_steps: steps for a moving sliding window
Methods
`detector``(``seasonality``)`
`# seasonality default as ["daily", "weekly", "yearly"]`
`# return the detected seasonalities from the given list of possible seasonalities`
Example
We use the classical Peyton Manning data for demo.
import pandas as pd
from infrastrategy.kats.detectors.seasonalityDetection import SeasonalityDetector
DATA = pd.read_csv("../data/example_wp_log_peyton_manning.csv")
DATA.columns = ["time", "y"]
DATA = DATA[(DATA.time > '2012-05-01') & (DATA.time < '2013-05-01')]
TSData = TimeSeriesData(DATA)
SD = SeasonalityDetector(data=TSData)
SD.detector()
# return {'seasonality_presence': True, 'seasonalities': ['weekly']}