自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

用于時間序列概率預測的共形分位數(shù)回歸

開發(fā) 前端
QR 估算的是目標變量的條件量值,如中位數(shù)或第 90 個百分位數(shù),而不是條件均值。通過分別估計不同水平預測變量的條件量值,可以很好地處理異方差。雖然大多數(shù)情況下量化值可以提供準確的預測區(qū)間,但當模型假設(shè)被違反時,量化值預測可能會不準確。

預測中的不確定性對于決策者了解潛在結(jié)果和相關(guān)風險的范圍非常重要。通過量化不確定性,企業(yè)可以做出更明智的決策,并有效地分配資源。關(guān)于預測的不確定性,前面有"用于時間序列概率預測的定量回歸“ 和 ”時間序列概率預測的共形預測“的介紹。本文將介紹另一項重要技術(shù)--共形分位數(shù)回歸(CQR)。共形分位數(shù)回歸(CQR)結(jié)合了分位數(shù)回歸(QR)和共形預測(CP),使兩者相輔相成。

分位數(shù)回歸 QR

QR 估算的是目標變量的條件量值,如中位數(shù)或第 90 個百分位數(shù),而不是條件均值。通過分別估計不同水平預測變量的條件量值,可以很好地處理異方差。雖然大多數(shù)情況下量化值可以提供準確的預測區(qū)間,但當模型假設(shè)被違反時,量化值預測可能會不準確。

共形預測 CP

另一方面,CP 能確保預測區(qū)間中的實際值,而無需明確關(guān)注特定的量化值。它根據(jù)實際數(shù)據(jù)而非任何模型規(guī)范形成預測區(qū)間。對所有數(shù)據(jù)范圍都會產(chǎn)生一個固定的寬度。

共形分位數(shù)回歸CQR

為什么不同時使用 QR 和 CP 呢?共形分位數(shù)回歸(CQR)技術(shù)提供了一個值得稱贊的解決方案,可以提供具有有效覆蓋保證的預測區(qū)間。這些覆蓋保證是由量回歸產(chǎn)生的。CQR 調(diào)整了預測區(qū)間,以確保實際值總是落在預測區(qū)間內(nèi),并達到所需的置信水平。

什么是CQR

CQR(Conformal Quantile Regression)的基本思想是建立分位數(shù)回歸(QR)模型用于預測區(qū)間,并使用CP技術(shù)進行調(diào)整。上一章中介紹了CP如何建立預測區(qū)間,通過獲取點預測值與實際值之間的誤差得出容差區(qū)間,然后將其與點估計值相連形成預測區(qū)間。然而,QR已經(jīng)給出了預測區(qū)間。要調(diào)整預測區(qū)間,我們需要修改CP方法為CQR,因為在量化預測中,CP以點預測為中心,而應用于預測區(qū)間的CQR則以預測區(qū)間的兩個錨點(下限和上限)為中心。

CQR的發(fā)展過程稱為一致性得分。符合性得分涉及實際值與預測區(qū)間上下限之間的距離。如果實際值持續(xù)高于上限或下限,則應根據(jù)一致性得分調(diào)整預測區(qū)間,確保在選定的時間水平下,實際值在預測區(qū)間內(nèi)。一致性得分是大括號中兩個項中較大的一項。

公式(1)公式(1)

其中,yt是實際值,Ql和Qu是低量化值和高量化值(下限和上限),ct是符合性得分

我們以圖(A)中的示例來解釋等式(1)。假設(shè)有六個實際值y1至y6及其相應的預測區(qū)間。在第一次預測中,實際值y1的預測區(qū)間在下限Ql和上限Qu之間,而y1更接近上限QU。每個預測區(qū)間都會有一個一致性得分。根據(jù)公式(1),第一個預測值c1的一致性分值為-2,處于-2和-5之間。當y在預測區(qū)間內(nèi)時,一致性總是負數(shù),而當實際值在預測區(qū)間外時,一致性總是正數(shù)。

圖(A):一致性得分圖(A):一致性得分

我們將為一致性得分繪制一個直方圖,如圖(B)所示。左側(cè)的負分表示實際值在預測區(qū)間內(nèi)。右側(cè)的正分數(shù)表示預測區(qū)間無法捕捉實際值。

圖(B):一致性得分直方圖圖(B):一致性得分直方圖

可以根據(jù)容忍度確定一個閾值s。根據(jù)圖(B),95% 一致性得分是 6.0。預測區(qū)間將會擴大,保證實際值包含在預測區(qū)間內(nèi)。

形式上,CQR 根據(jù)下面的公式 (2) 調(diào)整分位數(shù)回歸的預測區(qū)間。它從下限Ql中減去閾值s,再將閾值s加到上限QU:

公式(2)公式(2)

一致性得分可為負,表示所有預測區(qū)間均包含實際值。在這種情況下,符合性得分的加減可能導致預測區(qū)間變短。CQR 會根據(jù) QR 在區(qū)間內(nèi)的表現(xiàn)調(diào)整預測區(qū)間,對于始終低估或高估的 QR 會做出相應調(diào)整。

CQR 的構(gòu)建

其過程可概括如下:

  • 首先,我們將歷史時間序列數(shù)據(jù)分為訓練期、校準期和測試期。
  • 然后在訓練數(shù)據(jù)上訓練分位數(shù)回歸模型。應用訓練模型生成校準數(shù)據(jù)的量化預測。
  • 然后根據(jù)公式 (1) 計算一致性得分。繪制符合性得分直方圖,以定義容差水平,如圖 (B)。
  • 然后根據(jù)公式 (2) 調(diào)整不同量化值的預測區(qū)間。

環(huán)境要求

NeuralProphet 有三個選項:(i) 分位數(shù)回歸 (QR)(ii) 保形預測 (CP)(iii) 保形分位數(shù)回歸 (CQR),用于處理預測的不確定性。

!pip install neuralprophet
!pip uninstall numpy
!pip install git+https://github.com/ourownstory/neural_prophet.git numpy==1.23.5

數(shù)據(jù)

%matplotlib inline
from matplotlib import pyplot as plt
import pandas as pd
import numpy as np
import logging
import warnings
logging.getLogger('prophet').setLevel(logging.ERROR)
warnings.filterwarnings("ignore")

data = pd.read_csv('/bike_sharing_daily.csv')
# 數(shù)據(jù)獲?。汗娞枺簲?shù)據(jù)STUDIO 后臺回復 云朵君
data.tail()

圖(C):自行車租賃數(shù)據(jù)圖(C):自行車租賃數(shù)據(jù)

數(shù)據(jù)集包含每日租賃需求、天氣信息(如溫度和風速)等多變量數(shù)據(jù)。在進行建模之前,需要對數(shù)據(jù)進行最基本的準備。NeuralProphet 要求列名為ds和y。

# convert string to datetime64
data["ds"] = pd.to_datetime(data["dteday"])
df = data[['ds','cnt']]
df.columns = ['ds','y']

建模

使用具有趨勢和季節(jié)性模式的NeuralProphet模型,可以添加其他組件,如AR、假期和其他協(xié)變量。目前代碼已進行了注釋。

from neuralprophet import NeuralProphet
quantile_list=[0.05,0.95 ]
# Model and prediction
cqr_model = NeuralProphet(
    quantiles=quantile_list,
    #n_changepoints=10,
    yearly_seasnotallow=True,
    weekly_seasnotallow=True,
    daily_seasnotallow=False,
    # Add the autogression
    #n_lags=10,
    # Forecast the next 50 days
    #n_forecasts= 50
)
cqr_model = cqr_model.add_country_holidays("US")
#cqr_model.set_plotting_backend("matplotlib")  # Use matplotlib

訓練、驗證和測試數(shù)據(jù)

共形分位數(shù)回歸的一個關(guān)鍵步驟是將訓練數(shù)據(jù)分為訓練數(shù)據(jù)和校準數(shù)據(jù),用于構(gòu)建符合性得分。

df_train, df_test = cqr_model.split_df(df, valid_p=0.2)
df_train, df_cal = cqr_model.split_df(df_train, freq="D", valid_p=1.0 / 11)
[df_train.shape, df_test.shape, df_cal.shape]
# [(532, 2), (146, 2), (53, 2)]

用三種顏色繪制不同的數(shù)據(jù)集。

圖(D)圖(D)

驗證數(shù)據(jù)作為模型驗證集。

metrics = cpr_model.fit(df_train, validation_df=df_cal, progress="bar")
metrics.tail()

圖片圖片

共形分位數(shù)回歸

創(chuàng)建一個future數(shù)據(jù)集,在df數(shù)據(jù)的最后日期之后有50個周期。它將包括所有歷史數(shù)據(jù)的模型預測。或者,如果指定n_historic_predictinotallow=40,它將只包含40個歷史數(shù)據(jù)點及其預測結(jié)果。

NeuralProphet 的 CQR 選項是method=cqr。我們將通過.conformal_prediction()啟用保形預測。

future = cpr_model.make_future_dataframe(df, periods=50, 
     n_historic_predictinotallow=True)

# Parameter for CQR
method = "cqr"
alpha = 0.05
# Enable conformal prediction on the pre-trained models
cqr_forecast = cqr_model.conformal_predict(
    # df_test, # You can also use df_test
    future,
    calibration_df=df_cal,
    alpha=alpha,
    method=method,
    show_all_PI=True,
)
cqr_forecast

圖片圖片

繪制預測結(jié)果和預測區(qū)間圖。CQR 預測區(qū)間寬度變化。在圖(E)中,95% 的情況下,實際值都在預測區(qū)間內(nèi),因為 CP 可以確保實際值在預測區(qū)間內(nèi)的時間為95%。

fig = cqr_model.plot(cqr_forecast, 
    #plotting_backend = "matplotlib"
    plotting_backend="plotly-static"
)

圖(E)圖(E)

責任編輯:武曉燕 來源: 數(shù)據(jù)STUDIO
相關(guān)推薦

2024-05-07 11:46:50

時間序列概率預測

2024-05-09 16:23:14

2024-01-01 15:37:59

機器學習神經(jīng)網(wǎng)絡(luò)

2022-11-24 17:00:01

模型ARDL開發(fā)

2023-10-13 15:34:55

時間序列TimesNet

2024-06-27 16:38:57

2022-08-16 09:00:00

機器學習人工智能數(shù)據(jù)庫

2021-08-05 13:49:39

Python工具開發(fā)

2021-07-01 21:46:30

PythonHot-Winters數(shù)據(jù)

2021-04-07 10:02:00

XGBoostPython代碼

2021-07-02 10:05:45

PythonHot-winters指數(shù)平滑

2025-01-14 13:32:47

2024-07-18 13:13:58

2023-01-30 17:10:23

DeepTime元學習

2017-11-20 11:51:40

KerasLSTM深度學習

2023-03-16 18:09:00

機器學習數(shù)據(jù)集

2023-02-07 16:21:37

時間序列列數(shù)據(jù)集

2024-11-15 15:20:00

模型數(shù)據(jù)

2024-12-23 13:30:00

2024-06-12 11:57:51

點贊
收藏

51CTO技術(shù)棧公眾號