在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

時間序列的基礎模型像自然語言處理那樣存在嗎

科技綠洲 ? 來源:Python數據科學 ? 作者:Python數據科學 ? 2023-11-03 10:15 ? 次閱讀

時間序列預測領域在最近的幾年有著快速的發展,比如N-BEATS、N-HiTS、PatchTST和TimesNet。

大型語言模型(LLM)最近在ChatGPT等應用程序中變得非常流行,因為它們可以適應各種各樣的任務,而無需進一步的訓練。

這就引出了一個問題: 時間序列的基礎模型能像自然語言處理那樣存在嗎? 一個預先訓練了大量時間序列數據的大型模型,是否有可能在未見過的數據上產生準確的預測?

通過Azul Garza和Max Mergenthaler-Canseco提出的 TimeGPT-1 ,作者將llm背后的技術和架構應用于預測領域,成功構建了第一個能夠進行零樣本推理的時間序列基礎模型。

在本文中,我們將探索TimeGPT背后的體系結構以及如何訓練模型。然后,我們將其應用于預測項目中,以評估其與其他最先進的方法(如N-BEATS, N-HiTS和PatchTST)的性能。

TimeGPT

TimeGPT是為時間序列預測創建基礎模型的第一次嘗試。

圖片

從上圖中,我們可以看到TimeGPT背后的一般思想是在來自不同領域的大量數據上訓練模型,然后對未見過的數據產生零樣本的推斷。

這種方法依賴于遷移學習,遷移學習是指模型利用在訓練過程中獲得的知識解決新任務的能力。這種方式只有當模型足夠大,并且在大量數據上進行訓練時才有效。

為此,作者對TimeGPT進行了超過1000億個數據點的訓練,這些數據點都來自開源的時間序列數據。該數據集涵蓋了廣泛的領域,從金融、經濟和天氣,到網絡流量、能源和銷售。

但是這里作者沒有披露用于管理1000億個數據點的公共數據的來源。

這種多樣性對于基礎模型的成功至關重要,因為它可以學習不同的時間模式,因此可以更好地進行泛化。

例如,我們可以預期天氣數據具有日季節性(白天比晚上熱)和年季節性,而汽車交通數據可以具有日季節性(白天路上的汽車比晚上多)和周季節性(一周內路上的汽車比周末多)。

為了保證模型的魯棒性和泛化能力,預處理被保持在最低限度。事實上只有缺失的值被填充,其余的保持原始形式。雖然作者沒有具體說明數據輸入的方法,但我懷疑使用了某種插值技術,如線性、樣條或移動平均插值。

然后作者對模型進行多天的訓練,在此期間對超參數和學習率進行優化。雖然作者沒有透露訓練需要多少天和gpu資源,但我們確實知道該模型是在PyTorch中實現的,并且它使用Adam優化器和學習率衰減策略。

TimeGPT利用Transformer架構。

圖片

從上圖中,我們可以看到TimeGPT使用了完整的編碼器-解碼器Transformer架構。

輸入可以包括歷史數據窗口,也可以包括外生數據窗口,如準時事件或其他系列。

輸入被饋送到模型的編碼器部分。然后編碼器內部的注意力機制從輸入中學習不同的屬性。然后將其輸入解碼器,解碼器使用學習到的信息進行預測。預測序列在達到用戶設置的預測范圍長度時結束。

值得注意的是,作者已經在TimeGPT中實現了適形預測,允許模型根據歷史誤差估計預測間隔。

考慮到TimeGPT是為時間序列構建基礎模型的第一次嘗試,它具有一系列廣泛的功能。

TimeGPT的功能總結:

首先 ,TimeGPT是一個預先訓練的模型,這意味著可以生成預測,而不需要對數據進行特定的訓練。盡管如此,還是可以根據我們的數據對模型進行微調。

其次 ,該模型支持外生變量來預測我們的目標,也就是說可以處理多變量預測任務。

最后 ,使用保形預測,TimeGPT可以估計預測區間。這反過來又允許模型執行異常檢測。如果一個數據點落在99%的置信區間之外,那么模型將其標記為異常。

所有這些任務都可以通過零樣本推理或一些微調來實現,這是時間序列預測領域范式的根本轉變。

現在我們對TimeGPT有了更扎實的了解,了解了它是如何工作的,以及它是如何訓練的,讓我們來看看實際的模型。

TimeGPT進行預測

現在讓我們將TimeGPT應用于預測任務,并將其性能與其他模型進行比較。

在撰寫本文時,TimeGPT只能通過API訪問,并且還處于封閉測試階段。我提交申請,并獲得了免費使用該模型兩周的授權。

如前所述,該模型是在來自公開可用數據的1000億個數據點上進行訓練的。由于作者沒有指定使用的實際數據集,我認為在已知的基準數據集(如ETT或weather)上測試模型是不合理的,因為模型可能在訓練期間看到了這些數據。

因此,我使用了自己的數據集,數據集現在在GitHub上公開可用,最重要的是TimeGPT沒有在這些數據上進行訓練。

導入庫并讀取數據

import pandas as pd
import numpy as np
import datetime
import matplotlib.pyplot as plt

from neuralforecast.core import NeuralForecast
from neuralforecast.models import NHITS, NBEATS, PatchTST

from neuralforecast.losses.numpy import mae, mse

from nixtlats import TimeGPT

%matplotlib inline

然后,為了訪問TimeGPT模型從文件中讀取API密鑰。

with open("data/timegpt_api_key.txt", 'r') as file:
API_KEY = file.read()

然后讀取數據。

 df = pd.read_csv('data/medium_views_published_holidays.csv')
df['ds'] = pd.to_datetime(df['ds'])

df.head()

圖片

從上圖中,我們可以看到數據集的格式與我們使用Nixtla的其他開源庫時的格式相同。

我們有一個unique_id列來標記不同的時間序列,但在本例中,我們只有一個序列。

y列表示我的博客每天的瀏覽量,published是一個簡單的標志,用來標記某一天有新文章發布(1)或沒有文章發布(0)。一般來說當新內容發布時,瀏覽量通常會增加一段時間。

最后,列is_holiday表示美國是否有假日。在假期很少有人會訪問。

現在讓我們把我們的數據可視化。

published_dates = df[df['published'] == 1]

fig, ax = plt.subplots(figsize=(12,8))

ax.plot(df['ds'], df['y'])
ax.scatter(published_dates['ds'], published_dates['y'], marker='o', color='red', label='New article')
ax.set_xlabel('Day')
ax.set_ylabel('Total views')
ax.legend(loc='best')

fig.autofmt_xdate()


plt.tight_layout()

圖片

從上圖中,我們可以看到一些有趣的行為。首先,紅點表示新發表的文章,并且幾乎緊隨其后的是訪問高峰。

我們還注意到2021年的活動減少,這反映在日瀏覽量減少上。最后在2023年,我們注意到一篇文章發表后,訪問量出現了一些異常高峰。

放大數據,我們還發現了明顯的每周季節性。

圖片

從上圖中,可以看到周末訪問的訪客比平時少。

考慮到所有這些,讓我們看看如何使用TimeGPT進行預測。

首先,將數據集分成訓練集和測試集。在這里為測試集保留168個時間步長,這對應于24周的每日數據。

train = df[:-168]
test = df[-168:]

然后使用7天的預測范圍,因為我對預測整個星期的每日視圖感興趣。

該API沒有附帶驗證的實現。因此我們創建自己的循環,一次生成七個預測,直到我們對整個測試集進行預測。

future_exog = test[['unique_id', 'ds', 'published', 'is_holiday']]

timegpt = TimeGPT(token=API_KEY)

timegpt_preds = []

for i in range(0, 162, 7):

timegpt_preds_df = timegpt.forecast(
df=df.iloc[:1213+i],
X_df = future_exog[i:i+7],
h=7,
finetune_steps=10,
id_col='unique_id',
time_col='ds',
target_col='y'
)

preds = timegpt_preds_df['TimeGPT']

timegpt_preds.extend(preds)

在上面的代碼塊中必須傳遞外生變量的未來值,因為它們是靜態變量,我們知道未來假期的日期,

這里我們還使用finetune_steps參數對TimeGPT進行了微調。

一旦循環完成就可以將預測結果添加到測試集中。TimeGPT一次生成7個預測,直到獲得168個預測,因此我們可以評估它預測下周每日瀏覽量的能力。

test['TimeGPT'] = timegpt_preds

test.head()

圖片

與N-BEATS, N-HiTS和PatchTST對比

現在我們用其他方法來進行對比,這里使用了N-BEATS, N-HiTS和PatchTST。

horizon = 7

models = [NHITS(h=horizon,
input_size=5*horizon,
max_steps=50),
NBEATS(h=horizon,
input_size=5*horizon,
max_steps=50),
PatchTST(h=horizon,
input_size=5*horizon,
max_steps=50)]

然后,我們初始化NeuralForecast對象并指定數據的頻率,在本例中是每天。

nf = NeuralForecast(models=models, freq='D')

在7個時間步驟的24個窗口上運行執行驗證,以獲得與用于TimeGPT的測試集一致的預測。

preds_df = nf.cross_validation(
df=df,
static_df=future_exog ,
step_size=7,
n_windows=24
)

然后合并結果,這樣就得到了一個包含所有模型預測的單一DataFrame。

preds_df['TimeGPT'] = test['TimeGPT']

圖片

下面開始評估每個模型的性能。在度量性能指標之前,可視化一下測試集中每個模型的預測。

圖片

每個模型之間有很多重疊。我們確實注意到N-HiTS預測的兩個峰值在現實中沒有實現。此外PatchTST似乎經常預測不足。但是TimeGPT似乎通常與實際數據重疊得很好。

但是評估每個模型性能的唯一方法是度量性能指標。在這里使用平均絕對誤差(MAE)和均方誤差(MSE)。另外我們做的一個動作是將預測四舍五入為整數,因為小數在每日訪問量上下文中是沒有意義的。

preds_df = preds_df.round({
'NHITS': 0,
'NBEATS': 0,
'PatchTST': 0,
'TimeGPT': 0
})

data = {'N-HiTS': [mae(preds_df['NHITS'], preds_df['y']), mse(preds_df['NHITS'], preds_df['y'])],
'N-BEATS': [mae(preds_df['NBEATS'], preds_df['y']), mse(preds_df['NBEATS'], preds_df['y'])],
'PatchTST': [mae(preds_df['PatchTST'], preds_df['y']), mse(preds_df['PatchTST'], preds_df['y'])],
'TimeGPT': [mae(preds_df['TimeGPT'], preds_df['y']), mse(preds_df['TimeGPT'], preds_df['y'])]}

metrics_df = pd.DataFrame(data=data)
metrics_df.index = ['mae', 'mse']

metrics_df.style.highlight_min(color='lightgreen', axis=1)

圖片

從上圖中可以看到TimeGPT是表現最好,它實現了最低的MAE和MSE,其次是N-BEATS, PatchTST和N-HiTS。

這是一個令人興奮的結果,因為TimeGPT從未見過這個數據集,并且只進行了幾個步驟的微調。雖然這不是一個詳盡的實驗,但我相信它確實展示了潛在的基礎模型在預測領域的潛力。

對TimeGPT的看法

TimeGPT是時間序列預測的第一個基礎模型。它利用了Transformer架構,并在1000億個數據點上進行了預訓練,以便對新的未見過的數據進行零樣本推斷。該模型結合保形預測技術,無需特定數據集的訓練即可生成預測區間并進行異常檢測。

雖然TimeGPT的簡短實驗證明是令人興奮的,但原始論文在許多重要概念仍然含糊不清。

比如我們不知道使用了哪些數據集來訓練和測試模型,因此我們無法真正驗證TimeGPT的性能結果,如下所示。

圖片

從上表中可以看到TimeGPT在每月和每周頻率上表現最好,N-HiTS和TFT通常排名第二或第三。因為我們不知道使用了什么數據,所以我們無法驗證這些指標。

雖然TimeGPT看起來很好,但是它還是有2個問題要面對:

1、 當涉及到如何訓練模型以及如何調整模型來處理時間序列數據時缺乏透明度,可以認為是沒有任何的可解釋性。

2、 這個模型是用于商業用途的,這也就是為什么論文缺少細節,無法讓人通過論文來復制TimeGPT。當然這并沒有錯,因為畢竟是要賺錢的。但這就導致論文缺乏可重復性,沒人或再去研究和改進他。

雖然是這樣,但是我還是覺得這能激發時間序列基礎模型的新工作和研究,并且我們最終能看到這些模型的開源版本,就像我們在LLM中看到的那樣。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 數據
    +關注

    關注

    8

    文章

    7233

    瀏覽量

    90783
  • 模型
    +關注

    關注

    1

    文章

    3464

    瀏覽量

    49841
  • 應用程序
    +關注

    關注

    38

    文章

    3316

    瀏覽量

    58554
  • 自然語言處理

    關注

    1

    文章

    625

    瀏覽量

    13935
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    python自然語言

    最近,python自然語言是越來越火了,那么什么是自然語言自然語言(Natural Language )廣納了眾多技術,對自然或人類語言
    發表于 05-02 13:50

    自然語言處理技術介紹

    自然語言處理技術里有不少可以建模為序列標注問題(也包括其它問題,如實體關系抽取可以看做是分類問題),因此HMM、CRF之類算法的應用占有較高的比例。掌握相關算法有助于自己加工語料及訓練模型
    發表于 09-27 09:57

    自然語言處理怎么最快入門?

    `本文整理自知乎上的一個問答,分享給正在學習自然語言處理的朋友們!一、自然語言處理是什么?自然語言
    發表于 11-28 10:02

    【推薦體驗】騰訊云自然語言處理

    `相信大家對NLP自然語言處理的技術都不陌生,它是計算機科學領域和AI領域中的一個分支,它與計算機和人類之間使用自然語言進行交互密切相關,而NLP的最終目標是使計算機能夠人類一樣理解
    發表于 10-09 15:28

    關于自然語言處理之54 語言模型(自適應)

    自然語言處理——54 語言模型(自適應)
    發表于 04-09 08:20

    自然語言處理語言模型

    自然語言處理——53 語言模型(數據平滑)
    發表于 04-16 11:11

    自然語言處理——總結、習題

    自然語言處理——79 總結、習題
    發表于 06-19 11:22

    什么是自然語言處理

    什么是自然語言處理自然語言處理任務有哪些?自然語言處理的方法是什么?
    發表于 09-08 06:51

    自然語言處理常用模型解析

    自然語言處理常用模型使用方法一、N元模型二、馬爾可夫模型以及隱馬爾可夫模型及目前常用的
    發表于 12-28 15:42 ?6117次閱讀
    <b class='flag-5'>自然語言</b><b class='flag-5'>處理</b>常用<b class='flag-5'>模型</b>解析

    自然語言處理怎么最快入門_自然語言處理知識了解

    自然語言處理就是實現人機間自然語言通信,實現自然語言理解和自然語言生成是十分困難的,造成困難的根本原因是
    發表于 12-28 17:10 ?5382次閱讀

    自然語言處理的優點有哪些_自然語言處理的5大優勢

    自然語言處理領域,深度學習的承諾是:給新模型帶來更好的性能,這些新模型可能需要更多數據,但不再需要那么多的語言學專業知識。
    發表于 12-29 13:52 ?2.8w次閱讀

    基于深度學習的自然語言處理對抗樣本模型

    深度學習模型被證明存在脆弱性并容易遭到對抗樣本的攻擊,但目前對于對抗樣本的研究主要集中在計算機視覺領域而忽略了自然語言處理模型的安全問題。針
    發表于 04-20 14:36 ?39次下載
    基于深度學習的<b class='flag-5'>自然語言</b><b class='flag-5'>處理</b>對抗樣本<b class='flag-5'>模型</b>

    自然語言處理的概念和應用 自然語言處理屬于人工智能嗎

      自然語言處理(Natural Language Processing)是一種人工智能技術,它是研究自然語言與計算機之間的交互和通信的一門學科。自然語言
    發表于 08-23 17:31 ?1984次閱讀

    圖像識別技術包括自然語言處理

    圖像識別技術與自然語言處理是人工智能領域的兩個重要分支,它們在很多方面有著密切的聯系,但也存在一些區別。 一、圖像識別技術與自然語言處理的關
    的頭像 發表于 07-16 10:54 ?1234次閱讀

    自然語言處理與機器學習的關系 自然語言處理的基本概念及步驟

    Learning,簡稱ML)是人工智能的一個核心領域,它使計算機能夠從數據中學習并做出預測或決策。自然語言處理與機器學習之間有著密切的關系,因為機器學習提供了一種強大的工具,用于從大量文本數據中提取模式和知識,從而提高NLP系統的性能。
    的頭像 發表于 12-05 15:21 ?1580次閱讀
    主站蜘蛛池模板: 国产―笫一页―浮力影院xyz | 人人艹人人干 | 久久久久久9 | 88av影院| 日日噜噜噜夜夜爽爽狠狠视频 | 嫩草影院网站入口 | 天天射综合 | 97影院理论片在线观看 | 久久精品夜色国产 | 精品噜噜噜噜久久久久久久久 | 国产激情视频一区二区三区 | 2018天天弄 | 成人免费黄色网 | 女人张开腿双腿让男人桶 | 亚洲人成电影院在线观看 | 久久久久免费精品国产 | 日韩a无吗一区二区三区 | 成年大片免费视频播放手机不卡 | 国产成人综合亚洲怡春院 | 午夜一级毛片免费视频 | 狠狠干狠狠操 | 五月激情视频 | 亚洲福利一区二区 | 在线播放12p | 怡红院日本一道日本久久 | 亚洲国产高清人在线 | 天天摸天天碰成人免费视频 | 婷婷丁香五月中文字幕 | 免费的男女拍拍拍的视频 | 黄视频免费在线观看 | 欧美精品videosex极品 | 久久香蕉综合精品国产 | 爽死你个放荡粗暴小淫视频 | 乡村乱人伦短小说 | 久操中文| 四虎看黄 | 在线播放一区二区精品产 | 在线视频人人视频www | 在线观看精品国产福利片100 | 老司机亚洲精品影院在线 | 色婷婷综合久久久中文字幕 |