偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

詳解一個(gè)算法,AutoARIMAProphet

人工智能
AutoARIMA 是 ARIMA(自回歸移動(dòng)平均)模型的高級(jí)實(shí)現(xiàn),可自動(dòng)選擇最佳的參數(shù)組合,以優(yōu)化模型的預(yù)測(cè)性能。傳統(tǒng)的 ARIMA(p, d, q) 模型是一種強(qiáng)大的統(tǒng)計(jì)工具,通過結(jié)合三個(gè)組成部分來預(yù)測(cè)時(shí)間序列數(shù)據(jù)。

今天給大家分享一個(gè)強(qiáng)大的算法模型,AutoARIMAProphet

AutoARIMAProphet (AAP) 是一種混合模型,旨在結(jié)合兩種突出的時(shí)間序列預(yù)測(cè)技術(shù)的優(yōu)勢(shì):AutoARIMA (AA) 和 Facebook Prophet (FBP)。

它由 Nixtla 開發(fā),旨在通過利用 AutoARIMA 的「自動(dòng)超參數(shù)選擇功能」和 Facebook Prophet 的趨勢(shì)季節(jié)性分解方法提供更穩(wěn)健、更準(zhǔn)確、更靈活的預(yù)測(cè)解決方案。

關(guān)鍵概念和組成部分

1.AutoARIMA

AutoARIMA 是 ARIMA(自回歸移動(dòng)平均)模型的高級(jí)實(shí)現(xiàn),可自動(dòng)選擇最佳的參數(shù)組合,以優(yōu)化模型的預(yù)測(cè)性能。

傳統(tǒng)的 ARIMA(p, d, q) 模型是一種強(qiáng)大的統(tǒng)計(jì)工具,通過結(jié)合三個(gè)組成部分來預(yù)測(cè)時(shí)間序列數(shù)據(jù)。

ARIMA 模型組成

  1. 自回歸 (AR) 部分
    這部分模型是一個(gè)回歸模型,使用前 p 個(gè)時(shí)刻的觀測(cè)值作為自變量來預(yù)測(cè)當(dāng)前值。

    其中,??? 是模型參數(shù),ε 是誤差項(xiàng)。
  2. 差分 (I) 部分
    為了使時(shí)間序列數(shù)據(jù)穩(wěn)定,可能需要對(duì)原始數(shù)據(jù)進(jìn)行一次或多次差分。d 是差分次數(shù)。
  3. 移動(dòng)平均 (MA) 部分
    這部分模型用前幾個(gè)時(shí)間點(diǎn)的預(yù)測(cè)誤差來做預(yù)測(cè)。q 是MA部分的階數(shù)。

    其中,θθθ 是模型參數(shù)。

AutoARIMA 的優(yōu)點(diǎn)

  1. 參數(shù)選擇
    AutoARIMA 的主要優(yōu)點(diǎn)是它可以自動(dòng)選擇最合適的 p、d 和 q 參數(shù)。
  2. 交叉驗(yàn)證
    為防止過擬合,AutoARIMA 可以使用時(shí)間序列的交叉驗(yàn)證方法,例如滾動(dòng)預(yù)測(cè)起點(diǎn),來確保模型在未見數(shù)據(jù)上也表現(xiàn)良好。
  3. 模型優(yōu)化
    自動(dòng)化的過程不僅試圖找到最佳的超參數(shù),還會(huì)嘗試不同的模型組合和轉(zhuǎn)換方法,如對(duì)數(shù)轉(zhuǎn)換或去趨勢(shì)方法,以找到最佳的模型。

在 Python 中,可以通過 pmdarima 庫中的 auto_arima 函數(shù)輕松實(shí)現(xiàn) AutoARIMA 模型。這使得它在商業(yè)分析、財(cái)務(wù)預(yù)測(cè)、天氣預(yù)測(cè)等領(lǐng)域得到廣泛應(yīng)用。

2.Prophet

Prophet 是一個(gè)由 Facebook 開發(fā)的開源時(shí)間序列預(yù)測(cè)庫,專門設(shè)計(jì)用于處理表現(xiàn)出強(qiáng)烈季節(jié)性影響和趨勢(shì)的時(shí)間序列數(shù)據(jù)。

基本原理

Prophet 模型基于一個(gè)可加模型,其中時(shí)間序列被假設(shè)為三個(gè)主要組成部分的和:趨勢(shì)、季節(jié)性和節(jié)假日效應(yīng)。

數(shù)學(xué)上可以表示為:

其中

  •  是預(yù)測(cè)值。
  •  是趨勢(shì)組件,用于模擬時(shí)間序列的非周期性變化。
  •  是季節(jié)性組件,捕捉周期性變化如日季節(jié)性、周季節(jié)性等。
  •  是節(jié)假日組件,用于模擬節(jié)假日對(duì)時(shí)間序列的影響。
  •  是誤差項(xiàng),通常假設(shè)為正態(tài)分布。

主要特點(diǎn)

  • 易于使用
  • 靈活性,可以定制處理各種類型的時(shí)間序列數(shù)據(jù)和特定業(yè)務(wù)場(chǎng)景。
  • 穩(wěn)健性,有效管理異常值和缺失數(shù)據(jù),在各種條件下提供可靠的預(yù)測(cè)。
  • 加法模型,它將時(shí)間序列數(shù)據(jù)建模為趨勢(shì)、季節(jié)性和假期的加法組合。
  • 處理缺失數(shù)據(jù),它對(duì)缺失數(shù)據(jù)點(diǎn)具有很強(qiáng)的魯棒性,并且可以處理趨勢(shì)或季節(jié)性的變化。

3.AutoARIMAProphet 模型

AutoARIMAProphet 結(jié)合了 AutoARIMA 和 Facebook Prophet 的優(yōu)勢(shì),創(chuàng)建了一個(gè)強(qiáng)大的混合預(yù)測(cè)模型。

這種集成旨在利用 AutoARIMA 的自動(dòng)參數(shù)選擇和 Facebook Prophet 的趨勢(shì)季節(jié)性分解功能。

圖片圖片

如上圖所示,它說明了 AutoARIMAProphet (AAP) 算法的一般工作流程。

以下是算法中每個(gè)步驟的詳細(xì)說明。

  1. 輸入歷史數(shù)據(jù)
    AutoARIMAProphet 算法的第一步是輸入歷史時(shí)間序列數(shù)據(jù)。該數(shù)據(jù)通常包括需要預(yù)測(cè)的變量的過去觀測(cè)值以及任何相關(guān)日期或時(shí)間戳。
  2. 使用 Prophet 模型檢測(cè)時(shí)間序列特征
    Facebook 的 Prophet 模型用于分析和檢測(cè)時(shí)間序列數(shù)據(jù)的關(guān)鍵特征。
    這包括識(shí)別趨勢(shì)、季節(jié)性以及可能影響數(shù)據(jù)的假期或其他事件。
  3. 生成一組 ARIMA 模型
    基于 Prophet 模型檢測(cè)到的特征,生成一系列 ARIMA 模型。
    每個(gè)模型代表 ARIMA 參數(shù)(p、d、q)和潛在季節(jié)性成分的不同組合。
  4. 在時(shí)間序列數(shù)據(jù)上評(píng)估每個(gè)模型
    評(píng)估每個(gè)生成的 ARIMA 模型以確定其在時(shí)間序列數(shù)據(jù)上的性能。
  5. 選擇性能最佳的模型
    根據(jù)評(píng)估指標(biāo)選擇性能最佳的 ARIMA 模型。
  6. 將選定的模型與數(shù)據(jù)擬合
    然后將選定的 ARIMA 模型擬合到整個(gè)時(shí)間序列數(shù)據(jù),以優(yōu)化其預(yù)測(cè)參數(shù)。
  7. 使用擬合模型進(jìn)行預(yù)測(cè)
    擬合模型用于生成時(shí)間序列未來值的預(yù)測(cè)。
  8. 輸出預(yù)測(cè)和關(guān)鍵模型參數(shù)
    最后一步輸出預(yù)測(cè)值和模型的關(guān)鍵參數(shù)。

案例分享

首先加載數(shù)據(jù)并切分為訓(xùn)練集和測(cè)試集。

from sklearn.model_selection import train_test_split as TTS
import pandas as pd
import time

data_full = pd.read_csv('test.csv',index_col=0)
data_full['ds'] = pd.to_datetime(data_full['ds'])
df_dataCol = data_full.drop('y', axis = 1)

X = data_full[df_dataCol.columns]
Y = data_full['y']
# Y = df["Closing Price"] / df["Closing Price"].max()

X_train, X_test, Y_train, Y_test = TTS(X, Y,
                                       test_size = 0.05,
                                       random_state = 0,
                                       shuffle=False)

df_train = X_train.join(Y_train)
df_test = X_test.join(Y_test)

接下來,構(gòu)建模型并訓(xùn)練。

from statsforecast.adapters.prophet import AutoARIMAProphet
from tqdm import tqdm

start = time.time()
# Initialize the AutoARIMAProphet model configurations
model_config = {
    "growth": "logistic",
    "yearly_seasonality": True,
    "seasonality_mode": "multiplicative",
    "seasonality_prior_scale": 10,
    "holidays_prior_scale": 10,
    "changepoint_prior_scale": 0.05,
    "interval_width": 0.75,
    "uncertainty_samples": 1000
}

cap = 10
floor = 5.5

# Instantiate models
aap = AutoARIMAProphet(**model_config)
aapM2 = AutoARIMAProphet(**model_config)

df_train['cap'] = cap
df_train['floor'] = floor

# Fit the first model
with tqdm(total=1, desc="Fitting First Model") as pbar:
    aap1 = aap.fit(df_train, disable_seasonal_features=False)
    pbar.update(1)

# aap = aap.fit(df_train)
print("Train:", time.time() - start)

combined_df = pd.concat([df_train, df_test])

df_train['cap'] = cap
df_train['floor'] = floor

df_test['cap'] = cap
df_test['floor'] = floor

combined_df['cap'] = cap
combined_df['floor'] = floor

# Fit the second model
with tqdm(total=1, desc="Fitting Second Model") as pbar:
    aap2 = aapM2.fit(combined_df, disable_seasonal_features=False)
    pbar.update(1)


aap_pred_forecast = aap2.make_future_dataframe(periods = 1826, freq = 'D', include_history = True)
aap_pred_forecast['cap'] = cap
aap_pred_forecast['floor'] = floor

# Making predictions
with tqdm(total=2, desc="Making Predictions") as pbar:
    aap_pred_test = aap1.predict(df_test)
    aap_pred_train = aap1.predict(df_train)
    aap_pred_forecast = aap2.predict(aap_pred_forecast)
    pbar.update(2)

print("Pred:", time.time() - start)

最后,我們來看一下預(yù)測(cè)的結(jié)果。

import matplotlib.pyplot as plt

plt.figure(figsize=(10, 6))

plt.plot(df_train['ds'], df_train['y'], label='Train Data')
plt.plot(aap_pred_train['ds'], aap_pred_train['yhat'], label='Train Validation - Prediction')

plt.plot(df_test['ds'], df_test['y'], label='Test Data')
plt.plot(aap_pred_test['ds'], aap_pred_test['yhat'], label='Test Validation Data - Prediction')


plt.fill_between(aap_pred_forecast['ds'], aap_pred_forecast['yhat_lower'], aap_pred_forecast['yhat_upper'], color='gray', alpha=0.2)
plt.legend()
plt.xlabel('Date')
plt.ylabel('IDX KOMPAS 100 Stock Price')
plt.show()

圖片圖片

責(zé)任編輯:武曉燕 來源: 程序員學(xué)長(zhǎng)
相關(guān)推薦

2009-07-15 13:41:00

JDBC實(shí)例

2024-07-30 08:08:49

2024-06-06 09:44:33

2024-07-19 08:21:24

2024-08-08 12:33:55

算法

2024-12-19 00:16:43

2024-06-03 08:09:39

2024-07-12 08:38:05

2024-08-21 08:21:45

CNN算法神經(jīng)網(wǎng)絡(luò)

2024-08-02 10:28:13

算法NLP模型

2024-09-09 23:04:04

2024-06-20 08:52:10

2024-08-12 00:00:05

集成學(xué)習(xí)典型算法代碼

2009-07-22 17:15:04

C#實(shí)現(xiàn)

2024-08-22 08:21:10

算法神經(jīng)網(wǎng)絡(luò)參數(shù)

2024-08-29 09:18:55

2011-08-23 17:42:42

Lua腳本

2010-01-26 13:15:42

ASP.NET MVC

2009-07-06 18:28:26

Java Socket

2024-11-11 00:00:02

卷積神經(jīng)網(wǎng)絡(luò)算法
點(diǎn)贊
收藏

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