上篇《神器の争》主要是介绍Prophet的特点以及prophet入门的一些注意事项,但离真正的实际运用还有段距离。本篇主要讲解实际运用中Prophet调参的主要步骤以及一些本人实际经验。
一 参数理解篇
class Prophet(object):
def __init__(
self,
growth='linear',
changepoints=None,
n_changepoints=25,
changepoint_range=0.8,
yearly_seasonality='auto',
weekly_seasonality='auto',
daily_seasonality='auto',
holidays=None,
seasonality_mode='additive',
seasonality_prior_scale=10.0,
holidays_prior_scale=10.0,
changepoint_prior_scale=0.05,
mcmc_samples=0,
interval_width=0.80,
uncertainty_samples=1000,
stan_backend=None
):
1.1 趋势参数
参数 | 描述 |
---|---|
growth | growth是指模型的趋势函数,目前取值有2种,linear和logistic |
changepoints | Changepoint是指一个特殊的日期,在这个日期,模型的趋势将发生改变。而changepoints是指潜在changepoint的所有日期,如果不指明则模型将自动识别。 |
n_changepoints | 最大的Changepoint的数量。如果changepoints不为None,则本参数不生效。 |
changepoint_range | 是指changepoint在历史数据中出现的时间范围,与n_changeponits配合使用,changepoint_range决定了changepoint能出现在离当前时间最近的时间点,changepont_range越大,changepoint可以出现的距离现在越近。当指定changepoints时,本参数不生效 |
changepoint_prior_scale | 设定自动突变点选择的灵活性,值越大越容易出现changepoint |
1.1.1 growth
growth是指模型的趋势函数,目前取值有2种,linear和logistic,分别如图1-1及图1-2所示。趋势会在changepoint处出现突变点。
|
---|
图1-1 linear趋势 |
|
图1-2 logistic趋势 |
细心的同学可能会问,可不可能出现同一个模型既有linear趋势,又有logistic趋势,就像下面这样:
|
---|
图1-3 |
在这里福布湿要给大家纠正下这个错觉,请大家记住Prophet的趋势模型要么是linear要么是logistic。而上图之所以像是两种的叠加,是因为prophet的设计师为了让趋势函数可微(连续,就理解成连续吧)做了平滑处理,
上面这货就是论文中做平滑处理的公式。