精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

深入剖析時序Prophet模型:工作原理與源碼解析

發布于 2024-5-31 19:08
瀏覽
0收藏

隨著得物業務的快速發展,積累了大量的時序數據,這些數據對精細化運營,提升效率、降低成本有著重要作用。在得物的時序數據挖掘場景中,時序預測Prophet模型使用頻繁,本文對Prophet的原理和源碼進行深入分析,歡迎閱讀和交流。

一、引入

時間序列是指按照時間先后順序收集或觀測的一系列數據點,這類數據通常都具有一定時間相關性,基于這種順序性,我們可以對時間序列進行多種數據挖掘任務,包括分類、聚類、異常檢測和預測等。

時序任務在許多領域都有廣泛的應用,包括金融、商業、醫療、氣象、工業生產等。在得物的業務場景中,應用最為廣泛的是時序預測問題,本文介紹的內容主要和時序預測相關。

時序預測利用歷史時間序列數據構建數學統計、機器學習或深度學習等模型,來預測未來的觀測值,其目的是為了對時間序列的趨勢、周期性、季節性、特殊事件等規律進行捕捉并預測,從而指導業務人員做出商業、運營決策。以下是時間序列預測在得物各業務域的需求情況,總之哪里有指標,哪里就有預測。

深入剖析時序Prophet模型:工作原理與源碼解析-AI.x社區

解決時序預測問題的算法研究歷史非常悠久,是備受關注和持續發展的領域。根據算法原理和方法進行分類,時序預測模型可以分為以Holt-winters,ARIMA為代表的經典統計模型,用單一時序變量進行參數擬合;以線性回歸、樹回歸為代表的傳統機器學習算法,在有監督學習的框架下,構建特征來預測目標值;以及運用CNN、RNN、Transform等特征提取器,在Encoder-Decoder框架下進行預測的深度學習方法。

本文將介紹的Prophet模型和上述三種分類算法有所差異,但方法和原理上也結合了參數擬合、機器學習的思想,它將時序分解成趨勢變化、季節性、節假日、外部回歸因子之和,是結合時序分解的加法模型預測算法。

Prophet于2017年由Facebook’s Core Data Science team開源發布,盡管從時間上來看不是很新的模型,但是在得物實際的時序預測場景中取得了不俗的效果。目前網上的博客主要介紹了模型的基本原理、使用方式,在使用過程中筆者仍有一些疑問,例如:

  • Prophet模型是如何進行訓練和預測?
  • 模型如何進行概率預測,得到預測的上界和下界?

筆者帶著這些問題閱讀了Prophet的源碼,發現了一些論文中沒有提到的細節和流程,對以上問題有了答案,這里分享給大家。代碼參考Prophet python語言實現版本v1.1.5。

二、準備知識

如果讀者有機器學習基礎,熟悉最優化計算方法、貝葉斯估計、MCMC采樣可以跳過這一小節,不熟悉的讀者可以按照這一小節提到的概念搜索相關資料。

參數估計

通俗的說預測就是利用已知數據來推測產生該數據的模型和參數,然后用推測的模型和參數產生下一個結果。對于模型的參數估計方法,有頻率學派和貝葉斯學派之分。頻率學派認為模型參數是個固定的值。而貝葉斯學派是認為模型參數不是一個固定的值,而是源自某種潛在分布,希望從數據中推知該分布。

用大家最熟悉的線性回歸為例,假設噪聲服從正態分布:

深入剖析時序Prophet模型:工作原理與源碼解析-AI.x社區

在概率視角下,線性回歸可以表示為:

深入剖析時序Prophet模型:工作原理與源碼解析-AI.x社區

其中θ=(w0,w,σ^2)是模型所有的參數。

在頻率學派視角下θ是一個常量,可以用極大似然估計來估計參數值。其思想是對于N個觀測樣本來說使得其發生概率最大的參數就是最好的參數。整個觀測集發生的概率為:

深入剖析時序Prophet模型:工作原理與源碼解析-AI.x社區

由于連乘不容易參數求解,可以采用最大對數似然方法,線性回歸有解析解,我們可以直接求導計算得到最優的θ_hat:

深入剖析時序Prophet模型:工作原理與源碼解析-AI.x社區

在貝葉斯學派視角下θ是一個隨機變量而不是一個固定的值,由一個先驗分布進行約束,通過利用已知樣本進行統計推斷。貝葉斯學派認為一個好的θ不僅要考慮似然函數P(X|θ)還要考慮θ的先驗分布P(θ),即最大化P(X|θ)P(θ)。由于X的先驗分布是固定的常數,最大化函數可以寫成P(X|θ)P(θ)/P(X),根據貝葉斯公式可知P(X|θ)P(θ)/P(X)=P(θ|X),即找到一個θ_hat能夠最大化后驗概率P(θ|X)。

深入剖析時序Prophet模型:工作原理與源碼解析-AI.x社區

求解參數θ可以選擇使用最大后驗估計(Maximum A Posterior, MAP)或者貝葉斯估計兩種方法,最大后驗估計直接求解讓后驗概率最大的θ。這樣問題就轉化還成一個約束問題,實際中可以使用梯度下降、牛頓法或者L-BFGS擬牛頓法等數值優化方法進行求解。

從最大似然估計和最大后驗估計來看求解的參數θ是一個確定值,但貝葉斯估計不是直接估計θ,而是估計θ的分布。在最大后驗估計中由于求θ極值過程中與P(X)無關,分母可以被忽略。但是在貝葉斯估計中是求整個后驗概率的分布,分母不能忽略。對于連續型隨機變量有:

深入剖析時序Prophet模型:工作原理與源碼解析-AI.x社區

則貝葉斯公式變為:

深入剖析時序Prophet模型:工作原理與源碼解析-AI.x社區

分母是積分形式一般沒有解析解,直接計算是非常困難的。于是引入馬爾可夫鏈蒙特卡洛算法(Markov Chain Monte Carlo, MCMC)進行采樣,從而得到各個參數的一系列采樣值。

Stan開源框架

https://mc-stan.org/ : Stan is a state-of-the-art platform for statistical modeling and high-performance statistical computation.

Stan是一個用于貝葉斯統計建模和推斷的開源框架,包含了定義概率模型的編程語言,以及高效執行貝葉斯推斷的算法庫,被廣泛用于統計建模和機器學習任務,它集成了上文談到的MAP、MCMC等求解算法,在Python中可以通過PyStan包來使用 Stan。

Prophet基本原理

Prophet基于時間序列分解和參數擬合來實現高效的訓練和預測。首先Prophet定義了一個關于時間步t的加法函數,函數值由趨勢項、季節項、節假日項、外部因子項以及觀測噪聲組成,核心公式如下:

深入剖析時序Prophet模型:工作原理與源碼解析-AI.x社區

其中g(t)代表趨勢項,s(t)代表季節項,h(t)代表節假日項(泛指外部回歸變量),ε_t代表誤差項。具體各項公式可以參考附錄中的文章以及官方論文。其中季節項、節假日項、外部因子項可以統一視為回歸因子,除了構造特征的方法不同以外,在模型訓練和預測階段都是一樣的處理方法。

Prophet其實是一種廣義線性模型,其數學形式是:

深入剖析時序Prophet模型:工作原理與源碼解析-AI.x社區

其中y是歷史label數據,x是Prophet中的加法回歸因子變量,α是趨勢項*(1+乘法回歸因子變量),β是回歸因子的權重,σ是噪聲服從高斯分布。模型訓練的就是公式中未知參數,Prophet的python代碼負責數據輸入、預處理、流程控制、可視化等部分功能,核心算法求解模塊調用Stan進行求解。Stan有自己定義的一套語言體系,定義了變量、輸入數據和模型,Prophet數學模型轉化成Stan的建模語言如下表示:

  • 變量和數據

data {
  int T;                // Number of time periods
  int<lower=1> K;       // Number of regressors
  vector[T] t;          // Time
  vector[T] cap;        // Capacities for logistic trend
  vector[T] y;          // Time series
  int S;                // Number of changepoints
  vector[S] t_change;   // Times of trend changepoints
  matrix[T,K] X;        // Regressors
  vector[K] sigmas;     // Scale on seasonality prior
  real<lower=0> tau;    // Scale on changepoints prior
  int trend_indicator;  // 0 for linear, 1 for logistic, 2 for flat
  vector[K] s_a;        // Indicator of additive features
  vector[K] s_m;        // Indicator of multiplicative features
}
  • 模型

model {
  //priors
  k ~ normal(0, 5);
  m ~ normal(0, 5);
  delta ~ double_exponential(0, tau);
  sigma_obs ~ normal(0, 0.5);
  beta ~ normal(0, sigmas);


  // Likelihood
  y ~ normal_id_glm(
    X_sa,
    trend .* (1 + X_sm * beta),
    beta,
    sigma_obs
  );
}

論文中各項成分的參數預先設定了先驗分布,根據:

深入剖析時序Prophet模型:工作原理與源碼解析-AI.x社區

能夠得到后驗概率,根據第二部分提到的參數估計方法,運用最大后驗估計或MCMC采樣即可得到參數估計值。

三、Prophet源碼剖析

代碼結構

Prophet代碼目錄如下所示,核心邏輯主要是Prophet.stan、models.py、forecaster.py三個腳本,本文的分享主要圍繞這三個腳本。

|-- stan
    |-- Prophet.stan # stan語言實現的Prophet模型
|-- setup.py
|-- Prophet
    |-- serialize.py # Prophet訓練完成的模型的序列化、模型的存儲和加載,以便后續重用。
    |-- plot.py # 可視化模塊
    |-- models.py # stan模型定義
    |-- diagnostics.py # 用于診斷 Prophet 模型性能的函數,比如計算誤差指標、繪制診斷圖等。
    |-- tests # 封裝的測試腳本
    |-- __init__.py
    |-- __version__.py
    |-- forecaster.py #  Prophet 類的定義,模型的核心邏輯,數據的處理、模型的擬合和預測等功能
    |-- utilities.py # 包含了一些輔助函數,用于處理時間序列數據、特征工程等。
    |-- make_holidays.py # 節假日具體日期的構造
  • Prophet.stan:用Stan編程語言實現的Prophet模型腳本。
  • models.py:python和Stan語言交互的模塊,定義使用Stan腳本語言時的輸入數據,擬合參數、輸出數據,控制Stan進行參數擬合、采樣。
  • forecaster.py:Prophet模型核心代碼,定義了Prophet類,涉及整個模型的數據處理、模型訓練和模型推理等功能。

模型框架

Prophet模型訓練-預測流程如下所示:

深入剖析時序Prophet模型:工作原理與源碼解析-AI.x社區


初始參數

  • Prophet類初始化
    初始化模塊主要是讀取預先設定和Prophet有關的模型參數。分別有以下幾類:

趨勢項相關

growth: String 'linear', 'logistic' or 'flat' to specify a linear, logistic or
    flat trend.
changepoints: List of dates at which to include potential changepoints. If
    not specified, potential changepoints are selected automatically.
n_changepoints: Number of potential changepoints to include. Not used
    if input `changepoints` is supplied. If `changepoints` is not supplied,
    then n_changepoints potential changepoints are selected uniformly from
    the first `changepoint_range` proportion of the history.
changepoint_range: Proportion of history in which trend changepoints will
    be estimated. Defaults to 0.8 for the first 80%. Not used if
    `changepoints` is specified.
changepoint_prior_scale: Parameter modulating the flexibility of the
    automatic changepoint selection. Large values will allow many
    changepoints, small values will allow few changepoints.
  • 季節性相關

yearly_seasonality: Fit yearly seasonality.
    Can be 'auto', True, False, or a number of Fourier terms to generate.
weekly_seasonality: Fit weekly seasonality.
    Can be 'auto', True, False, or a number of Fourier terms to generate.
daily_seasonality: Fit daily seasonality.
    Can be 'auto', True, False, or a number of Fourier terms to generate.
holidays: pd.DataFrame with columns holiday (string) and ds (date type)
    and optionally columns lower_window and upper_window which specify a
    range of days around the date to be included as holidays.
    lower_window=-2 will include 2 days prior to the date as holidays. Also
    optionally can have a column prior_scale specifying the prior scale for
    that holiday.
seasonality_mode: 'additive' (default) or 'multiplicative'.
seasonality_prior_scale: Parameter modulating the strength of the
    seasonality model. Larger values allow the model to fit larger seasonal
    fluctuations, smaller values dampen the seasonality. Can be specified
    for individual seasonalities using add_seasonality.
holidays_prior_scale: Parameter modulating the strength of the holiday
    components model, unless overridden in the holidays input.
holidays_mode: 'additive' or 'multiplicative'. Defaults to seasonality_mode.
  • 參數擬合相關

growth: String 'linear', 'logistic' or 'flat' to specify a linear, logistic or
    flat trend.
changepoints: List of dates at which to include potential changepoints. If
    not specified, potential changepoints are selected automatically.
n_changepoints: Number of potential changepoints to include. Not used
    if input `changepoints` is supplied. If `changepoints` is not supplied,
    then n_changepoints potential changepoints are selected uniformly from
    the first `changepoint_range` proportion of the history.
changepoint_range: Proportion of history in which trend changepoints will
    be estimated. Defaults to 0.8 for the first 80%. Not used if
    `changepoints` is specified.
  • 不確定性相關

mcmc_samples: Integer, if greater than 0, will do full Bayesian inference
    with the specified number of MCMC samples. If 0, will do MAP
    estimation.
interval_width: Float, width of the uncertainty intervals provided
    for the forecast. If mcmc_samples=0, this will be only the uncertainty
    in the trend using the MAP estimate of the extrapolated generative
    model. If mcmc.samples>0, this will be integrated over all model
    parameters, which will include uncertainty in seasonality.
uncertainty_samples: Number of simulated draws used to estimate
    uncertainty intervals. Settings this value to 0 or False will disable
    uncertainty estimation and speed up the calculation.
stan_backend: str as defined in StanBackendEnum default: None - will try to

訓練過程

數據預處理

  • 數據檢查

python.Prophet.forecaster.Prophet.setup_dataframe

Prophet會檢查模型輸入參數、數據的合法性,幫助使用者快速定位問題。比如:

檢查輸入數據中是否有y列,ds列是否符合時間輸入規范,是否有缺失值。

檢查添加的額外回歸項,是否有缺失值,是否輸入數據中有添加的回歸項數據。

季節性項的condition列值是否是bool值等,用于控制模型選擇性的學習condition為True的樣本。

  • 數據歸一化

python.Prophet.forecaster.Prophet.initialize_scales

對于y,有Absmax和Minmax兩種方式:現實場景中特征值或y,往往有很大的量綱差異,會降低模型的性能、預測的準確性。Prophet內置了對y和對外部回歸因子add regressors的歸一化。

AbsMax歸一化:
含義:AbsMax歸一化是將原始數據縮放到[-1, 1]的范圍內,使數據的絕對值最大值為1。
適用場景:AbsMax歸一化適用于數據中存在明顯的異常值或極端值的情況,可以保留數據的分布形狀并減少異常值對模型的影響。

MinMax歸一化:
含義:MinMax歸一化是將原始數據縮放到[0, 1]的范圍內,使數據的最小值對應0,最大值對應1。
適用場景:MinMax歸一化適用于需要將數據映射到一個固定范圍內的情況,保留了原始數據的相對關系,在大部分機器學習算法中經常用到。

if self.scaling == "absmax":
    self.y_min = 0.
    self.y_scale = float((df['y']).abs().max())
elif self.scaling == "minmax":
    self.y_min = df['y'].min()
    self.y_scale =  float(df['y'].max() - self.y_min)
    ...
    ...

對于add regressor特征則進行標準化,將特征數據縮放到均值為0,標準差為1的標準正態分布。

python/Prophet/forecaster.py:389

計算得到的y_scale和回歸項的均值和標準差,會更新到Prophet類中,供預測階段使用。

自動設置周期性

python.Prophet.forecaster.Prophet.set_auto_seasonalities

如果在初始化Prophet類時,沒有指定季節性相關的參數,則會根據數據長度和間隔自動增加季節性項,三種不同的周期性默認的傅立葉階數為10。

當歷史數據大于等于兩年,則增加yearly seasonality,默認周期為365.25;
當歷史數據大于等于兩周,且相鄰兩數據之間的時間之差小于1周,則打開weekly seasonality,默認周期為7;
當歷史數據大于等于2天,且相鄰兩數據之間的時間小于1天,則打開daily seasonality,默認周期為1;

生成特征寬表

Prophet模型的成分中劃分了seasonality features、holiday features和add regressors,但其實是一樣的處理方法。根據Prophet類初始化時的參數,生成特征寬表,行為依次遞增的時間序列,列為每一個feature對應的值。

對于某一個seasonality特征,根據傳入的周期性和傅立葉階數,生成不同列,列數等于傅立葉階數,列值等于某一階的周期性函數值。然后結合該特征對應的condition_name的值,得到最終的特征值。condition_name是True、False的np.array類型,用來指導模型學習condition_name列中為True的時間段數據,忽略為False的時間段的數據。

對于holiday features和add regressors,則對于每一個特征,生成一列,列為每一個feature對應的值。特征寬表的特征總數為seasonality特征的傅立葉階數+holiday features數+add regressors數。

在生成特征寬表的同時,Prophet會定義component_cols變量,來維護哪些列同屬于同一個成分。比如把同一個季節性項的多個周期函數合并成一個成分,把同一個節假日不同時間的因子合并成一個成分,把加性或者乘性因子項合并成一個成分,這樣可以方便進行模型的成分分析和結果可視化。比如給定一個Prophet模型:

m = Prophet(
holidays=pd.DataFrame({
  'holiday': '618',
  'ds': pd.to_datetime(['2021-06-18', '2022-06-18', '2023-06-18', '2024-06-18']),
  'lower_window': -1,
  'upper_window': 0,
  'mode': 'additive'
})) 


model.add_seasonality({'name':'seasonal_1','period':7, 'fourier_order':1,'mode': 'additive'})
model.add_seasonality({'name':'seasonal_2','period':365, 'fourier_order':2,'mode': 'multiplicative'})

假設yearly傅立葉階數為1的additive,weekly階數為2的additive函數,那么component_cols為:

深入剖析時序Prophet模型:工作原理與源碼解析-AI.x社區

設置間斷點

python.Prophet.forecaster.Prophet.set_changepoints

首先當有人工設置間斷點時,以設置的間斷點為主,間斷點必須在訓練數據之內,否則會報錯。

當沒有設置間斷點時,Prophet會根據初始化的參數n_changepoints間斷點數和changepoint_range間斷點篩選范圍,進行自動采樣。例如時間序列有100個點,n_changepoints=10,changepoint_range=0.8,那么Prophet會在前80個點中,等間隔的采樣10個點,作為候選間斷點。設置的間斷點數量不能超過changepoint_range范圍內的訓練集數量。

初始化stan參數

python.Prophet.forecaster.Prophet.calculate_initial_params

使用貝葉斯估計參數,需要給定參數的初始值,然后迭代至算法收斂,Prophet用全部訓練數據計算初始參數。每一項成分都需要進行參數初始化。

以線性趨勢為例,用標準化的y計算線性函數的斜率和偏置。其他回歸項因子β,突變點增長系數δ都設置為0。

參數擬合

在初始化階段得到的參數和數據,轉化成字典形式傳入Stan進行參數擬合,字典格式如下所示:

深入剖析時序Prophet模型:工作原理與源碼解析-AI.x社區

字典K-V值和Prophet/stan目錄下的Prophet.stan腳本相對應,然后通過Pystan調用Stan引擎求解參數,擬合后的參數存儲在Propeht.params中,求解參數有兩種方式:

  • 牛頓法/LBFGS法進行最大后驗估計

python.Prophet.models.CmdStanPyBackend.fit

  • 馬爾可夫鏈蒙特卡羅法算法進行參數估計

python.Prophet.models.CmdStanPyBackend.sampling

預測過程

構建預測dataframe

python.Prophet.forecaster.Prophet.make_future_dataframe

我們可以通過Prophet類中的make_future_dataframe函數構建未來預測的DataFrame,預測長度、預測頻率由初始化參數periods、freq設置。

構建預測的DataFrame之后,和在訓練過程一致,需經過數據檢查、歸一化,歸一化使用訓練過程中計算得到的y_scale和回歸項的均值和標準差。

點預測

點預測也就是在時間點上輸出單個預測值,預測值由趨勢預測和回歸項預測組成。

  • 趨勢預測

python.Prophet.forecaster.Prophet.predict_trend

在貝葉斯回歸中,未知參數服從一個指定的先驗分布,Prophet使用Stan引擎計算得到的返回參數的期望作為趨勢項公式的帶入值。

def predict_trend(self, df):
    k = np.nanmean(self.params['k'])
    m = np.nanmean(self.params['m'])
    deltas = np.nanmean(self.params['delta'], axis=0)


    t = np.array(df['t'])
    if self.growth == 'linear':
        trend = self.piecewise_linear(t, deltas, k, m, self.changepoints_t)
    elif self.growth == 'logistic':
        cap = df['cap_scaled']
        trend = self.piecewise_logistic(
            t, cap, deltas, k, m, self.changepoints_t)
    elif self.growth == 'flat':
        # constant trend
        trend = self.flat_trend(t, m)


    return trend * self.y_scale + df['floor']

復制

對于flat、linear、logistic不同的趨勢分量,結合changepoints_t進行趨勢的預測,以線性趨勢為例。

python.Prophet.forecaster.Prophet.piecewise_linear

即論文中描述的公式:

深入剖析時序Prophet模型:工作原理與源碼解析-AI.x社區

深入剖析時序Prophet模型:工作原理與源碼解析-AI.x社區

最后根據訓練過程計算的y_scale縮放變量還原量級,作為最終的趨勢預測。

  • 回歸項預測

python.Prophet.forecaster.Prophet.predict_seasonal_components

上文提到的Prophet的seasonality features、holiday features和add regressors項,在參數求解過程中是一樣處理方法。

深入剖析時序Prophet模型:工作原理與源碼解析-AI.x社區

β即為擬合出的權重系數,β乘以特征寬表對應的值,得到每個特征的效應值。根據component_cols維護的不同成分的特征歸屬。就可以得到seasonality、holiday features、add regressors、multiplicative_terms、additive_terms各個部分的效應值。這些在模型解釋性、結果可視化、偏差分析中都可以應用。

  • 預測匯總

python/Prophet/forecaster.py:1287

預測成分匯總步驟把趨勢、季節性、節假日等預測效應值進行拼接,最后的預測結果公式如下:

預測結果值=趨勢*(1+乘法因素)+加法因素

預測的不確定性

Prophet通過觀測噪聲、參數不確定性以及未來趨勢不確定性三個部分輸出預測值的不確定性,最終通過yhat_lower、yhat_upper體現。

  • 觀測噪聲不確定性

python/Prophet/forecaster.py:1556

一般時間序列分解模型,最后的一個分解項就是噪聲,Prophet也是這樣的,假設了輸入數據點含有服從正態分布的觀測噪聲,Stan模型腳本中的sigma_obs就是擬合了這部分噪聲。觀測噪聲不確定性為:

sigma = self.params['sigma_obs'][iteration]
noise_terms = np.random.normal(0, sigma, trends.shape) * self.y_scale

復制

變量sigma是sigma_obs的估計值。在每個時間步驟上,從正態分布中采樣n_samples次,得到噪聲不確定項目noise_terms。

  • 趨勢不確定性

python.Prophet.forecaster.Prophet._make_trend_shift_matrix

對于趨勢的不確定性,官方文檔中解釋:預測中最大的不確定性來源在于未來趨勢變化的可能性。因此我們盡最大可能采取了一個合理的假設,假設未來的趨勢變化會與歷史上觀察到的相似。特別是,我們假設未來的趨勢變化的平均頻率和幅度將與歷史上觀察到的相同。我們將這些趨勢變化進行投影,并通過計算它們的分布來獲得不確定性區間。

具體而言,趨勢不確性由突變點出現的位置和突變的比例確定。首先計算歷史上突變點出現的間隔的均值*歷史上突變點的個數,得到每個時間點上產生突變點概率likelihood。然后計算歷史突變點的變化率的絕對值的均值mean_delta。最后進行采樣來模擬不確定性。均勻分布采樣輸出矩陣(n_samples, future_length),對每一個元素判斷是否小于似然值likelihood,來判斷是否發生了突變,如果小于則發生了突變,然后輸出均值為mean_delta的拉普拉斯分布,得到突變點變化率的采樣值。

  • 參數的不確定性

python.Prophet.forecaster.Prophet.predict_uncertainty

當初始化參數MCMC=0,即調用Stan用MAP算法,此時算法得出的是收斂時的最終估計值,不確定性由觀測不確定性和趨勢不確定性組成,參數沒有不確定性的估計。

MCMC>0時候,除了觀測噪聲、趨勢不確定性外,由于Stan采用MCMC采樣方法,得到的返回值是待估計參數值的若干個采樣點,根據每個參數的采樣點得到不同的預測值。

  • 不確定性結果輸出

進一步,由于每一個時間步有以上不確定性成分的n_samples個采樣數據。根據預設的置信度寬度,得到上、下分位數值:

lower_p = 100 * (1.0 - self.interval_width) / 2
upper_p = 100 * (1.0 + self.interval_width) / 2

復制

對于每個時間步驟,求lower_p分位數、upper_p分位數,即得到yhat_lower、yhat_upper。

四、總結

Prophet框架在有明顯規律的單變量時序預測場景中有著非常不錯的表現。在得物的多個業務場景中已經得到了驗證。閱讀源碼能夠幫助我們更好的了解模型細節,在模型優化時幫助我們有的放矢,在模型選型時幫助我們掌握模型的適應性和局限性。

參考資料

??https://peerj.com/preprints/3190/??

??https://github.com/facebook/prophet??

??https://zhuanlan.zhihu.com/p/37543542??

本文轉載自 ??得物技術??,作者: 探流

已于2024-5-31 19:10:04修改
收藏
回復
舉報
回復
相關推薦
亚洲一二三区精品| 国产成人一区三区| 亚洲啪av永久无码精品放毛片 | 18岁网站在线观看| av亚洲在线| 国产精品中文欧美| 欧洲亚洲免费在线| 男人操女人的视频网站| 视频小说一区二区| 日韩一卡二卡三卡四卡| 国产精品沙发午睡系列| 国产精品刘玥久久一区| gogo大胆日本视频一区| 国产日本欧美一区二区三区| 黄色激情视频在线观看| 99精品在线| 亚洲久久久久久久久久久| 欧美成人乱码一二三四区免费| av在线中出| 亚洲精品一卡二卡| 午夜精品一区二区三区四区| 日韩一区二区三区在线观看视频| 精品一区二区日韩| 日韩av电影在线免费播放| 久久久精品国产sm调教| 99久久99视频只有精品| 亚洲人成网站777色婷婷| 91精品又粗又猛又爽| 激情欧美一区二区三区黑长吊| 欧美午夜精品久久久久久人妖 | 久久成人精品| 欧美黑人性视频| 国产精品18在线| 精品高清在线| 亚洲男人天堂九九视频| 无码人妻久久一区二区三区蜜桃| 欧美性aaa| 欧美系列在线观看| 国产激情在线观看视频| 日韩av影片| 精品毛片三在线观看| 17c丨国产丨精品视频| 黄色的网站在线观看| 欧美激情一区二区三区| 欧洲视频一区二区三区| 欧美白人做受xxxx视频| 91丨九色丨尤物| 精品久久久久久一区| 狠狠躁日日躁夜夜躁av| 国产揄拍国内精品对白| 成人写真视频福利网| 国产精品国产三级国产aⅴ| 欧美aaaaa成人免费观看视频| 国产成人精品在线观看| 波多野结衣高清视频| 久久中文欧美| 国产精品美女免费| 在线观看亚洲国产| 国内精品不卡在线| 91丨九色丨国产| 蜜桃久久一区二区三区| 成人av网址在线| 久久精品日产第一区二区三区乱码 | www.av91| 麻豆免费在线| 在线精品观看国产| 亚洲精品免费一区亚洲精品免费精品一区| 成人国产精品久久| 日韩欧美你懂的| 国产69视频在线观看| 日韩av午夜| 在线看片第一页欧美| 亚洲AV成人无码网站天堂久久| 亚洲欧洲美洲一区二区三区| 欧美激情啊啊啊| 日本一区二区三区精品| 日本最新不卡在线| 成人h视频在线观看播放| 亚洲黄色片视频| 97精品电影院| 亚洲国产欧美一区二区三区不卡| 麻豆tv入口在线看| 亚洲电影一区二区三区| 免费在线观看日韩视频| 日韩免费在线电影| 精品国偷自产国产一区| 国产aⅴ激情无码久久久无码| 久久精品国产99久久| 欧美日韩aaaa| 少妇无套内谢久久久久| 国产精品一卡二卡| 日本一区二区三区在线视频 | 亚洲人成在线观看一区二区| 我的公把我弄高潮了视频| 日本韩国欧美| 欧美成人官网二区| 日韩丰满少妇无码内射| 国产精品99一区二区| 国产精品高精视频免费| 亚洲男人第一天堂| 中文字幕日本乱码精品影院| www黄色日本| 国产精品视频首页| 一本久久综合亚洲鲁鲁| 国产精品16p| 精品在线一区二区三区| 久久精品国产精品国产精品污 | 国产一区二区三区四区五区六区| 亚洲欧美综合| 国产精品视频白浆免费视频| 日韩有码第一页| 亚洲女与黑人做爰| 欧美一级特黄a| 香蕉视频一区| 久久人人爽人人| 99热这里只有精品在线| 国产精品色噜噜| 国产97在线 | 亚洲| 日韩在线观看一区二区三区| 在线视频国产日韩| 中国一级免费毛片| 国产91在线观看| 激情图片qvod| 欧美黄页免费| 国产亚洲欧洲在线| 欧美h在线观看| 成人黄色国产精品网站大全在线免费观看| 亚洲第一综合网站| 外国成人毛片| 色妞色视频一区二区三区四区| 日韩在线视频不卡| 91麻豆swag| 精品人妻一区二区三区四区在线 | 日韩一区不卡| 欧美动物xxx| 日韩国产高清污视频在线观看| 久久久www成人免费毛片| 国产一区二区福利| 一区二区三区四区五区精品| av在线不卡精品| 亚洲欧美日韩精品久久| 国产一级一级国产| 26uuu精品一区二区三区四区在线| 日韩国产一级片| 精品人人人人| 97香蕉超级碰碰久久免费软件| 乱色精品无码一区二区国产盗| 一区二区三区中文字幕电影 | 日韩高清一级| 国外成人在线直播| 天天操天天干天天干| 偷拍亚洲欧洲综合| 一级特级黄色片| 西西人体一区二区| 欧美日韩精品免费看| 影视一区二区三区| 日韩在线欧美在线国产在线| 国产一区二区小视频| 亚洲视频你懂的| 国产成人av片| 日韩视频在线一区二区三区| 欧美极品一区二区| 久久婷婷五月综合色丁香| 日韩中文字幕国产| 国内老熟妇对白hdxxxx| 亚洲午夜精品在线| 成人精品在线观看视频| 日韩成人精品在线观看| 在线观看欧美一区| 97se亚洲| 国产成人欧美在线观看| 日本在线免费| 欧美精品一区二区三区久久久| 免费视频久久久| 亚洲欧美一区二区视频| 少妇精品无码一区二区三区| 性色av一区二区怡红| 亚洲高清乱码| 一区二区三区欧洲区| 欧美在线视频播放| 黄网站免费在线观看| 精品久久久久久久久久久久久久久 | 男女视频一区二区| 欧美高清中文字幕| 久久不见久久见国语| 亚洲一区美女视频在线观看免费| а√在线中文在线新版| 国产亚洲美女精品久久久| 国产精品丝袜黑色高跟鞋| 午夜日韩在线电影| 欧美日韩国产一二三区| av激情亚洲男人天堂| 五月天激情播播| 香蕉久久夜色精品| 大桥未久一区二区三区| 在线视频亚洲专区| 99久久精品无码一区二区毛片| 韩漫成人漫画| 久久久久国产精品一区| 永久免费在线观看视频| 亚洲精品av在线播放| 国产又粗又猛又爽| 一本到三区不卡视频| 久久久精品国产sm调教| 中文字幕在线播放不卡一区| 国产乱了高清露脸对白| 国产一区二区三区久久悠悠色av| www.亚洲天堂网| 亚洲无吗在线| 日韩video| 日韩久久视频| 欧美专区一二三| 福利片在线一区二区| 亚洲精品免费网站| 日韩有码欧美| 国产精品国产三级国产aⅴ9色| 俺来俺也去www色在线观看| 日韩中文字幕在线精品| 欧美挠脚心网站| 亚洲国产成人久久| 亚洲a视频在线| 欧美一区二区日韩一区二区| 亚洲天堂网在线视频| 色狠狠一区二区三区香蕉| 日本在线小视频| 一区二区三区毛片| 黄色片在线观看网站| 综合色天天鬼久久鬼色| 日本在线观看网址| 中文一区二区在线观看| 在哪里可以看毛片| 久久精品日产第一区二区三区高清版 | 国产区精品区| 区一区二区三区中文字幕| 欧美日韩一本| 蜜桃久久影院| 久久综合色占| 欧美综合77777色婷婷| 免费av一区| 欧美日韩电影一区二区| 亚洲亚洲免费| 欧美福利精品| 国产91精品对白在线播放| 欧美精品一区二区三区四区五区| 天美av一区二区三区久久| 久久久久久国产精品免费免费| 精品视频高潮| 久久青青草综合| 欧美女王vk| 亚洲一区二区三区涩| 99久久www免费| 热久久最新地址| 尤物在线精品| 欧美色图色综合| 久久天天综合| 亚洲欧美自偷自拍另类| 另类成人小视频在线| 91欧美一区二区三区| 丁香啪啪综合成人亚洲小说| 天天插天天射天天干| 久久精品一区八戒影视| av在线播放中文字幕| 亚洲女爱视频在线| 国产精品成人国产乱| 日韩欧美亚洲国产一区| 亚洲天堂777| 欧美va日韩va| 久草在线免费福利资源| 色老头一区二区三区在线观看| av在线影院| 97在线视频国产| 向日葵视频成人app网址| 成人黄色免费看| 国产女人18毛片水真多18精品| 欧美日韩国产不卡在线看| 久久久久亚洲| 亚洲熟妇国产熟妇肥婆| 免播放器亚洲一区| 白嫩情侣偷拍呻吟刺激| 国产欧美日韩亚州综合 | 国产精品中出一区二区三区| 中文精品一区二区| 欧美日韩视频免费在线观看| 99成人在线| 邪恶网站在线观看| 成人激情黄色小说| 黄色av片三级三级三级免费看| 一区二区三区中文免费| 波多野结衣人妻| 精品久久五月天| 成人亚洲性情网站www在线观看| 久99九色视频在线观看| 欧美一区 二区 三区| 亚洲综合视频1区| 久久av电影| 精品国偷自产一区二区三区| 蜜桃视频一区二区三区| 熟妇人妻久久中文字幕| 中文字幕亚洲欧美在线不卡| 国产情侣自拍av| 日韩欧美在线网站| 成年人视频免费在线观看| 性欧美亚洲xxxx乳在线观看| 99久久久国产| 欧美最大成人综合网| 亚洲黄色毛片| 手机看片国产精品| 国产日韩欧美不卡在线| 日产精品久久久久| 日韩欧美在线不卡| 日韩伦理在线观看| 国产成人一区二区在线| 天堂99x99es久久精品免费| 国产成人永久免费视频| 紧缚奴在线一区二区三区| 中文字幕第24页| 狠狠做深爱婷婷久久综合一区| www.国产黄色| 久久天天躁日日躁| 日本久久一区| 视频一区亚洲| 美女黄网久久| 国产手机在线观看| 欧美日韩人人澡狠狠躁视频| 免费国产精品视频| 久久97精品久久久久久久不卡| 亚洲一区二区小说| 一本一道久久a久久精品综合 | 亚洲欧美日韩在线观看a三区| 台湾佬美性中文| 一区二区三区精品在线| 国产白浆在线观看| 久久久国产视频91| 亚洲伊人伊成久久人综合网| 亚洲一区二区三区乱码| 毛片av一区二区三区| 黄色av免费播放| 欧美日韩一二三区| 91啦中文在线| 国产在线播放不卡| 国产精品不卡| 欧美一级免费在线| 一区二区三区四区蜜桃| 99热这里只有精品66| 欧美激情按摩在线| 久久精品凹凸全集| 欧美黄色免费影院| 国产人久久人人人人爽| 欧美特级黄色片| 色噜噜亚洲精品中文字幕| 日韩综合av| 女人帮男人橹视频播放| 99久免费精品视频在线观看| 久久一区二区三区视频| 一区二区福利视频| 2020国产精品小视频| 成人毛片100部免费看| 不卡的av电影| 成年人视频免费| 日韩亚洲一区二区| 亚洲日本一区二区三区在线| 国产深夜男女无套内射| 国产欧美日韩另类一区| 国产又爽又黄又嫩又猛又粗| 欧美高清性猛交| 网曝91综合精品门事件在线| 午夜激情福利在线| 亚洲免费电影在线| 污视频网站免费观看| 日韩av电影在线免费播放| 婷婷亚洲综合| 亚洲视频在线播放免费| 在线观看日韩高清av| 国产黄色在线免费观看| 久久久精彩视频| 久久99蜜桃精品| 国产精品suv一区二区三区| 一区二区三区四区视频| 日韩一区二区三区精品视频第3页| av女优在线播放| 中文字幕乱码一区二区免费| 精品人妻aV中文字幕乱码色欲| 88xx成人精品| 亚洲精品二区三区| 加勒比一区二区| 日韩亚洲国产中文字幕欧美| 依依综合在线| 青草全福视在线| 久久久精品蜜桃| 亚洲精品久久久狠狠狠爱 | 一区二区三区在线资源| 妓院一钑片免看黄大片| 亚洲一区二区精品久久av| 国产二区视频在线观看| 国产伦精品一区二区三区高清| 日韩高清中文字幕一区| 国产精品999久久久| 色黄久久久久久| 精品影片在线观看的网站| 一区二区在线免费观看视频|