成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

詳解一個算法,AutoARIMAProphet

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

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

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

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

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

1.AutoARIMA

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

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

ARIMA 模型組成

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

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

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

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

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

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

2.Prophet

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

基本原理

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

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

其中

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

主要特點(diǎn)

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

3.AutoARIMAProphet 模型

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

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

圖片圖片

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

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

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

案例分享

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

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ù)測的結(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é)長
相關(guān)推薦

2009-07-15 13:41:00

JDBC實例

2024-07-19 08:21:24

2024-06-06 09:44:33

2024-07-30 08:08:49

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-08-12 00:00:05

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

2024-09-09 23:04:04

2024-06-20 08:52:10

2024-08-22 08:21:10

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

2009-07-22 17:15:04

C#實現(xiàn)

2024-08-29 09:18:55

2010-01-26 13:15:42

ASP.NET MVC

2009-07-06 18:28:26

Java Socket

2011-08-23 17:42:42

Lua腳本

2024-11-11 00:00:02

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

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

主站蜘蛛池模板: 性色av一区二区三区 | 色视频网站在线观看 | 日韩一区二区三区视频在线观看 | 日本中文字幕一区 | 免费一区二区三区 | 国产欧美日韩一区 | av在线免费看网址 | av一区二区在线观看 | 国产精品一区二区av | 国内精品久久久久久久影视简单 | 日韩精品视频中文字幕 | 欧美性video 精品亚洲一区二区 | 丁香综合| 97精品超碰一区二区三区 | 久久爱黑人激情av摘花 | 精品国产乱码久久久久久88av | 久久9热| 国产精品久久视频 | 亚洲一区二区三区在线免费观看 | 国产在线观看不卡一区二区三区 | 亚洲国产高清高潮精品美女 | 欧美男男videos| 秋霞a级毛片在线看 | 99re国产 | 日韩欧美在线观看视频 | 国产在线资源 | 国产欧美日韩一区二区三区在线 | 国产精品一区二区三区四区 | 成人免费视频观看 | 欧美久久精品一级c片 | 国产精品成人一区二区三区 | 日本中文字幕在线观看 | 天天操伊人 | www.99精品 | 亚洲福利视频一区二区 | 久久精品99久久 | 久久一二 | 久久午夜精品福利一区二区 | 91精品在线播放 | 天堂在线中文字幕 | a在线视频 |